github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/cli/commands/resources/project/new.go (about) 1 package project 2 3 import ( 4 "os" 5 "path" 6 7 "github.com/taubyte/tau-cli/cli/common" 8 "github.com/taubyte/tau-cli/flags" 9 projectFlags "github.com/taubyte/tau-cli/flags/project" 10 "github.com/taubyte/tau-cli/i18n" 11 projectI18n "github.com/taubyte/tau-cli/i18n/project" 12 projectLib "github.com/taubyte/tau-cli/lib/project" 13 projectPrompts "github.com/taubyte/tau-cli/prompts/project" 14 projectTable "github.com/taubyte/tau-cli/table/project" 15 "github.com/urfave/cli/v2" 16 ) 17 18 func (link) New() common.Command { 19 return common.Create( 20 &cli.Command{ 21 Flags: []cli.Flag{ 22 flags.Description, 23 projectFlags.Loc, 24 flags.EmbedToken, 25 projectFlags.Public, 26 projectFlags.Private, 27 flags.Yes, 28 }, 29 Action: new, 30 }, 31 ) 32 } 33 34 func new(ctx *cli.Context) error { 35 embedToken, project, err := projectPrompts.New(ctx) 36 if err != nil { 37 return err 38 } 39 40 name := project.Name 41 42 // Check location flag, otherwise clone into cwd 43 var location string 44 if ctx.IsSet(projectFlags.Loc.Name) { 45 location = ctx.String(projectFlags.Loc.Name) 46 } else { 47 cwd, err := os.Getwd() 48 if err != nil { 49 return i18n.GettingCwdFailed(err) 50 } 51 52 location = path.Join(cwd, project.Name) 53 } 54 55 if projectTable.Confirm(ctx, project, projectPrompts.CreateThisProject) { 56 err = projectLib.New(project, location, embedToken) 57 if err != nil { 58 return err 59 } 60 projectI18n.CreatedProject(name) 61 projectI18n.SelectedProject(name) 62 63 return nil 64 } 65 66 return nil 67 }