github.com/drycc/workflow-cli@v1.5.3-0.20240322092846-d4ee25983af9/cmd/git.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 6 "github.com/drycc/workflow-cli/pkg/git" 7 ) 8 9 const remoteCreationMsg = "Git remote %s successfully created for app %s.\n" 10 const remoteDeletionMsg = "Git remotes for app %s removed.\n" 11 12 // GitRemote creates a git remote for a drycc app. 13 func (d *DryccCmd) GitRemote(appID, remote string, force bool) error { 14 s, appID, err := load(d.ConfigFile, appID) 15 if err != nil { 16 return err 17 } 18 19 remoteURL, err := git.RemoteURL(git.DefaultCmd, remote) 20 21 if err != nil { 22 //If git remote doesn't exist, create it without issue 23 if err == git.ErrRemoteNotFound { 24 err := git.CreateRemote(git.DefaultCmd, s.Client.ControllerURL.Host, remote, appID) 25 if err != nil { 26 return err 27 } 28 d.Printf(remoteCreationMsg, remote, appID) 29 return nil 30 } 31 32 return err 33 } 34 35 expectedURL := git.RepositoryURL(s.Client.ControllerURL.Host, appID) 36 37 if remoteURL == expectedURL { 38 d.Printf("Remote %s already exists and is correctly configured for app %s.\n", remote, appID) 39 return nil 40 } 41 42 if force { 43 d.Printf("Deleting git remote %s.\n", remote) 44 err := git.DeleteRemote(git.DefaultCmd, remote) 45 if err != nil { 46 return err 47 } 48 err = git.CreateRemote(git.DefaultCmd, s.Client.ControllerURL.Host, remote, appID) 49 if err != nil { 50 return err 51 } 52 d.Printf(remoteCreationMsg, remote, appID) 53 return nil 54 } 55 56 msg := "Remote %s already exists, please run 'drycc git:remote -f' to overwrite\n" 57 msg += "Existing remote URL: %s\n" 58 msg += "When forced, will overwrite with: %s" 59 60 return fmt.Errorf(msg, remote, remoteURL, expectedURL) 61 } 62 63 // GitRemove removes a application git remote from a repository 64 func (d *DryccCmd) GitRemove(appID string) error { 65 s, appID, err := load(d.ConfigFile, appID) 66 67 if err != nil { 68 return err 69 } 70 71 err = git.DeleteAppRemotes(git.DefaultCmd, s.Client.ControllerURL.Host, appID) 72 73 if err != nil { 74 return err 75 } 76 77 d.Printf(remoteDeletionMsg, appID) 78 return nil 79 }