github.com/henvic/wedeploycli@v1.7.6-0.20200319005353-3630f582f284/command/remote/default.go (about) 1 package remote 2 3 import ( 4 "fmt" 5 6 "github.com/henvic/wedeploycli/color" 7 "github.com/henvic/wedeploycli/command/internal/we" 8 "github.com/henvic/wedeploycli/prompt" 9 "github.com/spf13/cobra" 10 ) 11 12 var defaultCmd = &cobra.Command{ 13 Use: "default", 14 Short: "Set a default (active) remote to use", 15 Example: `lcp remote default 16 lcp remote local 17 lcp remote wedeploy`, 18 Args: cobra.MaximumNArgs(1), 19 RunE: setDefaultRun, 20 } 21 22 func getRemoteFromList() (string, error) { 23 var wectx = we.Context() 24 var conf = wectx.Config() 25 var params = conf.GetParams() 26 var rl = params.Remotes 27 var keys = rl.Keys() 28 29 var m = map[string]int{} 30 31 fmt.Println(`Select a remote to use for the next "lcp" commands:`) 32 fmt.Println(color.Format(color.FgHiBlack, "#\tRemote")) 33 34 for v, k := range keys { 35 fmt.Printf("%d\t%v\n", v+1, k) 36 m[k] = v + 1 37 } 38 39 fmt.Print("Choice: ") 40 var i, err = prompt.SelectOption(len(keys), m) 41 42 if err != nil { 43 return "", err 44 } 45 46 return keys[i], nil 47 } 48 49 func setDefaultRun(cmd *cobra.Command, args []string) (err error) { 50 var name string 51 switch len(args) { 52 case 0: 53 name, err = getRemoteFromList() 54 if err != nil { 55 return err 56 } 57 default: 58 name = args[0] 59 } 60 61 return saveDefaultRemote(name) 62 } 63 64 func saveDefaultRemote(remote string) error { 65 var wectx = we.Context() 66 var conf = wectx.Config() 67 var params = conf.GetParams() 68 var remotes = params.Remotes 69 var keys = remotes.Keys() 70 71 for _, k := range keys { 72 if remote == k { 73 params.DefaultRemote = remote 74 conf.SetParams(params) 75 return conf.Save() 76 } 77 } 78 79 return fmt.Errorf(`remote "%v" not found`, remote) 80 } 81 82 func init() { 83 RemoteCmd.AddCommand(defaultCmd) 84 }