func()

in dubboctl/pkg/sdk/client.go [108:167]


func (c *Client) Initialize(dcfg *dubbo.DubboConfig, initialized bool, cmd *cobra.Command) (*dubbo.DubboConfig, error) {
	var err error
	oldRoot := dcfg.Root

	dcfg.Root, err = filepath.Abs(dcfg.Root)
	if err != nil {
		return dcfg, err
	}
	if err = os.MkdirAll(dcfg.Root, 0o755); err != nil {
		return dcfg, err
	}

	has, err := hasInitialized(dcfg.Root)
	if err != nil {
		return dcfg, err
	}
	if has {
		return dcfg, fmt.Errorf("%v already initialized", dcfg.Root)
	}

	if dcfg.Root == "" {
		if dcfg.Root, err = os.Getwd(); err != nil {
			return dcfg, err
		}
	}
	if dcfg.Name == "" {
		dcfg.Name = nameFromPath(dcfg.Root)
	}

	if !initialized {
		if err := assertEmptyRoot(dcfg.Root); err != nil {
			return dcfg, err
		}
	}
	// TODO remove initiallized
	f := dubbo.NewDubboConfigWithTemplate(dcfg, initialized)

	if err = runDataDir(f.Root); err != nil {
		return f, err
	}

	if !initialized {
		err = c.Templates().Write(f)
		if err != nil {
			return f, err
		}
	}

	f.Created = time.Now()
	err = f.WriteFile()
	if err != nil {
		return f, err
	}
	err = f.WriteDockerfile(cmd)
	if err != nil {
		return f, err
	}

	return dubbo.NewDubboConfig(oldRoot)
}