github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/cli/commands/resources/project/checkout.go (about) 1 package project 2 3 import ( 4 gosimplegit "github.com/taubyte/go-simple-git" 5 "github.com/taubyte/tau-cli/cli/common" 6 "github.com/taubyte/tau-cli/flags" 7 projectFlags "github.com/taubyte/tau-cli/flags/project" 8 projectI18n "github.com/taubyte/tau-cli/i18n/project" 9 projectLib "github.com/taubyte/tau-cli/lib/project" 10 "github.com/taubyte/tau-cli/prompts" 11 projectPrompts "github.com/taubyte/tau-cli/prompts/project" 12 "github.com/urfave/cli/v2" 13 ) 14 15 func (link) Checkout() common.Command { 16 return common.Create(&cli.Command{ 17 Flags: []cli.Flag{ 18 flags.Branch, 19 projectFlags.ConfigOnly, 20 projectFlags.CodeOnly, 21 }, 22 Action: checkout, 23 }) 24 } 25 26 func checkout(ctx *cli.Context) error { 27 project, err := projectPrompts.GetOrSelect(ctx, true) 28 if err != nil { 29 return err 30 } 31 32 repoHandler, err := projectLib.Repository(project.Name).Open() 33 if err != nil { 34 return err 35 } 36 37 configRepo, err := repoHandler.Config() 38 if err != nil { 39 return err 40 } 41 42 branch, err := prompts.SelectABranch(ctx, configRepo) 43 if err != nil { 44 return err 45 } 46 47 err = (&dualRepoHandler{ 48 ctx: ctx, 49 repository: repoHandler, 50 projectName: project.Name, 51 errorFormat: projectI18n.CheckingOutProjectFailed, 52 action: func(r *gosimplegit.Repository) error { 53 return r.Checkout(branch) 54 }, 55 }).Run() 56 if err != nil { 57 return err 58 } 59 60 projectI18n.CheckedOutProject(project.Name, branch) 61 return nil 62 }