func (cmd *Login) Run(scope scope.Scope, c *cli.Context) { if !c.Args().Present() { error_handler.ErrorExit("A URL must be provided as the first argument", error_handler.CLIUsageErrorExitCode) } // If an argument was not supplied, it is set to empty string cmd.network.BrooklynUrl = c.Args().Get(0) cmd.network.BrooklynUser = c.Args().Get(1) cmd.network.BrooklynPass = c.Args().Get(2) cmd.network.SkipSslChecks = c.GlobalBool("skipSslChecks") if err := net.VerifyLoginURL(cmd.network); err != nil { error_handler.ErrorExit(err) } // Strip off trailing '/' from URL if present. if cmd.network.BrooklynUrl[len(cmd.network.BrooklynUrl)-1] == '/' { if len(cmd.network.BrooklynUrl) == 1 { error_handler.ErrorExit("URL must not be a single \"/\" character", error_handler.CLIUsageErrorExitCode) } cmd.network.BrooklynUrl = cmd.network.BrooklynUrl[0 : len(cmd.network.BrooklynUrl)-1] } // Prompt for password if not supplied (password is not echoed to screen if cmd.network.BrooklynUser != "" && cmd.network.BrooklynPass == "" { fmt.Print("Enter Password: "******"\n") cmd.network.BrooklynPass = string(bytePassword) } if cmd.config.Map == nil { cmd.config.Map = make(map[string]interface{}) } // now persist these credentials to the yaml file auth, ok := cmd.config.Map["auth"].(map[string]interface{}) if !ok { auth = make(map[string]interface{}) cmd.config.Map["auth"] = auth } auth[cmd.network.BrooklynUrl] = map[string]string{ "username": cmd.network.BrooklynUser, "password": cmd.network.BrooklynPass, } cmd.config.Map["target"] = cmd.network.BrooklynUrl cmd.config.Map["skipSslChecks"] = cmd.network.SkipSslChecks cmd.config.Write() loginVersion, err := version.Version(cmd.network) if nil != err { error_handler.ErrorExit(err) } fmt.Printf("Connected to Brooklyn version %s at %s\n", loginVersion.Version, cmd.network.BrooklynUrl) }
func (cmd *Version) Run(scope scope.Scope, c *cli.Context) { if err := net.VerifyLoginURL(cmd.network); err != nil { error_handler.ErrorExit(err) } version, err := version.Version(cmd.network) if nil != err { error_handler.ErrorExit(err) } fmt.Println(version.Version) }