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)
}