// Prompts the user for an email func getEmail() string { email, err := prompt.Basic("Your email: ", true) if err != nil { os.Exit(1) } return email }
func ExampleBasic() (string, error) { email, err := prompt.Basic("Email", true) if err != nil { return "", err } _, err = mail.ParseAddress(email) return email, err }
func runTeam(cmd *cobra.Command, args []string) { var l *login.LoginInfo if l = login.SavedLoginInfo(); l == nil { color.Red("You are not logged in. To login, type \"nestor login\"\n") os.Exit(1) } teams, err := team.GetTeams(l) if err != nil { fmt.Println(unexpectedErrorWhileLoggingInErr.Error()) os.Exit(1) } if len(teams) == 1 { team := teams[0] err := team.Save(l) if err != nil { color.Red("Error saving default team\n") os.Exit(1) } else { color.Green("Saved %s as your default team\n", team.Name) } } else { table := team.TableizeTeams(teams, l.DefaultTeamId) fmt.Printf("\n") table.Render() fmt.Printf("\n") ok := false intIndex := 0 for !ok { index, promptErr := prompt.Basic(fmt.Sprintf("Pick which team you want to set as your default (1-%d): ", len(teams)), true) if promptErr != nil { os.Exit(1) } intIndex, err = strconv.Atoi(index) if err == nil && intIndex > 0 && intIndex <= len(teams) { ok = true } } team := teams[intIndex-1] err := team.Save(l) if err != nil { color.Red("Unexpected error saving your default team. Please try updating the app with `nestor update` or raise an issue at https://github.com/zerobotlabs/nestor-cli\n") os.Exit(1) } else { color.Green("Saved %s as your default team\n", team.Name) } } }
func runDeploy(cmd *cobra.Command, args []string) { var l *login.LoginInfo var a app.App // Check if you are logged in first if l = login.SavedLoginInfo(); l == nil { color.Red("You are not logged in. To login, type \"nestor login\"\n") os.Exit(1) } // Check if you have a valid nestor.json file nestorJsonPath, err := pathToNestorJson(args) if err != nil { color.Red("Could not find nestor.json in the path specified\n") os.Exit(1) } a.ManifestPath = nestorJsonPath err = a.ParseManifest() if err != nil { color.Red("%s\n", err.Error()) os.Exit(1) } // Check if existing app exists and if so, then we should be making calls to the "UPDATE" function // We are ignoring the error for now but at some point we will have to show an error that is not annoying err = a.Hydrate(l) if err != nil { color.Red("Error fetching details for this power\n") } if a.Id == 0 { color.Red("You haven't saved your power yet. Run `nestor save` before you can deploy your power\n") os.Exit(1) } versions, err := version.FetchVersions(a, l) if err != nil { color.Red("Error fetching versions for your power\n") os.Exit(1) } if latestDeploy { pickedVersion := versions[0] if pickedVersion.CurrentlyDeployed { color.Green("Version %s already deployed. Nothing to do here\n", pickedVersion.Ref) } else { err = pickedVersion.Deploy(a, l) if err != nil { color.Red(err.Error()) os.Exit(1) } color.Green("Deployed version %s successfully\n", pickedVersion.Ref) } } else { table := version.TableizeVersions(versions) fmt.Printf("\n") table.Render() fmt.Printf("\n") ok := false intIndex := 0 for !ok { index, promptErr := prompt.Basic(fmt.Sprintf("Pick a version to deploy (1-%d): ", len(versions)), true) if promptErr != nil { os.Exit(1) } intIndex, err = strconv.Atoi(index) if err == nil && intIndex > 0 && intIndex <= len(versions) { ok = true } } pickedVersion := versions[intIndex-1] if pickedVersion.CurrentlyDeployed { color.Green("Version %s already deployed. Nothing to do here\n", pickedVersion.Ref) } else { err = pickedVersion.Deploy(a, l) if err != nil { color.Red("Error deploying %s. Please try again later or contact [email protected]\n", pickedVersion.Ref) os.Exit(1) } color.Green("Deployed version %s successfully\n", pickedVersion.Ref) } } }