// CreateProject creates a project func CreateProject(name, display, desc, basecmd string, out io.Writer) error { f, err := loggedInUserFactory() if err != nil { return err } client, _, err := f.Clients() if err != nil { return nil } pathOptions := config.NewPathOptionsWithConfig("") opt := &cmd.NewProjectOptions{ ProjectName: name, DisplayName: display, Description: desc, Name: basecmd, Client: client, ProjectOptions: &cmd.ProjectOptions{PathOptions: pathOptions}, Out: ioutil.Discard, } err = opt.ProjectOptions.Complete(f, []string{}, ioutil.Discard) if err != nil { return err } err = opt.Run() if err != nil { if errors.IsAlreadyExists(err) { return setCurrentProject(f, name, out) } return err } return nil }
func setCurrentProject(f *clientcmd.Factory, name string, out io.Writer) error { pathOptions := config.NewPathOptionsWithConfig("") opt := &cmd.ProjectOptions{PathOptions: pathOptions} opt.Complete(f, []string{name}, out) return opt.RunProject() }