github.com/emc-advanced-dev/unik@v0.0.0-20190717152701-a58d3e8e33b7/cmd/login.go (about) 1 package cmd 2 3 import ( 4 "bufio" 5 "fmt" 6 "github.com/sirupsen/logrus" 7 "github.com/emc-advanced-dev/pkg/errors" 8 "github.com/solo-io/unik/pkg/config" 9 "github.com/spf13/cobra" 10 "gopkg.in/yaml.v2" 11 "io/ioutil" 12 "os" 13 "path/filepath" 14 "strings" 15 ) 16 17 var loginCmd = &cobra.Command{ 18 Use: "login", 19 Short: "Log in to a Unik Repository to pull & push images", 20 Run: func(cmd *cobra.Command, args []string) { 21 defaultUrl := "http://hub.project-unik.io" 22 reader := bufio.NewReader(os.Stdin) 23 if err := func() error { 24 fmt.Printf("Unik Hub Repository URL [%v]: ", defaultUrl) 25 url, err := reader.ReadString('\n') 26 if err != nil { 27 return err 28 } 29 url = strings.Trim(url, "\n") 30 if len(url) < 1 { 31 url = defaultUrl 32 } 33 fmt.Printf("Username: ") 34 user, err := reader.ReadString('\n') 35 if err != nil { 36 return err 37 } 38 fmt.Printf("Password: ") 39 pass, err := reader.ReadString('\n') 40 if err != nil { 41 return err 42 } 43 if err := setHubConfig(url, strings.Trim(user, "\n"), strings.Trim(pass, "\n")); err != nil { 44 return err 45 } 46 fmt.Printf("using url %v\n", url) 47 return nil 48 }(); err != nil { 49 logrus.Fatal(err) 50 } 51 }, 52 } 53 54 func init() { 55 RootCmd.AddCommand(loginCmd) 56 } 57 58 func setHubConfig(url, user, pass string) error { 59 data, err := yaml.Marshal(config.HubConfig{URL: url, Username: user, Password: pass}) 60 if err != nil { 61 return errors.New("failed to convert config to yaml string ", err) 62 } 63 os.MkdirAll(filepath.Dir(hubConfigFile), 0755) 64 if err := ioutil.WriteFile(hubConfigFile, data, 0644); err != nil { 65 return errors.New("failed writing config to file "+clientConfigFile, err) 66 } 67 return nil 68 }