github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/cli/commands/resources/repository/edit.go (about) 1 package repositoryCommands 2 3 import ( 4 "github.com/pterm/pterm" 5 repositoryI18n "github.com/taubyte/tau-cli/i18n/repository" 6 projectLib "github.com/taubyte/tau-cli/lib/project" 7 repositoryLib "github.com/taubyte/tau-cli/lib/repository" 8 "github.com/taubyte/tau-cli/prompts" 9 "github.com/urfave/cli/v2" 10 ) 11 12 func (lib *repositoryCommands) Edit(ctx *cli.Context) error { 13 project, err := projectLib.SelectedProjectConfig() 14 if err != nil { 15 return err 16 } 17 18 resource, err := lib.PromptsGetOrSelect(ctx) 19 if err != nil { 20 return err 21 } 22 23 originalRepoId := resource.Get().RepoID() 24 25 infoIface, err := lib.PromptsEdit(ctx, resource) 26 if err != nil { 27 return err 28 } 29 30 var cloneMethod func() error 31 switch info := infoIface.(type) { 32 case *repositoryLib.Info: 33 if info.DoClone { 34 cloneMethod = func() error { 35 _, err = info.Clone(project, resource.Get().RepositoryURL(), resource.Get().Branch(), prompts.GetOrAskForEmbedToken(ctx)) 36 if err != nil { 37 return err 38 } 39 40 return nil 41 } 42 } 43 } 44 45 confirm := lib.TableConfirm(ctx, resource, lib.PromptsEditThis) 46 if confirm { 47 if cloneMethod != nil { 48 err = cloneMethod() 49 if err != nil { 50 return err 51 } 52 } 53 54 // Register the repository if ID has changed 55 if originalRepoId != resource.Get().RepoID() { 56 err = repositoryLib.Register(resource.Get().RepoID()) 57 if err != nil { 58 // should not fail on registration as it could already be registered 59 pterm.Warning.Println(repositoryI18n.RegisteringRepositoryFailed(resource.Get().Name(), err)) 60 61 } else { 62 lib.I18nRegistered(resource.Get().RepositoryURL()) 63 } 64 } 65 66 err := lib.LibSet(resource) 67 if err != nil { 68 return err 69 } 70 lib.I18nEdited(resource.Get().Name()) 71 72 return nil 73 } 74 75 return nil 76 }