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  }