package main import ( "fmt" "os" "strings" //"github.com/gdamore/tcell/v2" //"github.com/rivo/tview" "github.com/AlecAivazis/survey/v2" "github.com/charmbracelet/lipgloss" _ "embed" ) //go:embed welcome.txt var welcomeArt string // TODO move magic key machine to static page type newUserData struct { Username string DisplayName string Email string PubKey string } func surveyIconSet(icons *survey.IconSet) { icons.Question.Text = "~" icons.Question.Format = "magenta:b" } func promptInvite() (invite string, err error) { invitePrompt := &survey.Input{ Message: "invite code?", } err = survey.AskOne(invitePrompt, &invite, survey.WithValidator(survey.Required), survey.WithIcons(surveyIconSet)) invite = strings.TrimSpace(invite) return } func _main() error { s := lipgloss.NewStyle(). Foreground(lipgloss.AdaptiveColor{ Light: "#7D19BD", Dark: "#E0B0FF", }) s = s.SetString(welcomeArt) fmt.Println(s) invite, err := promptInvite() if err != nil { return err } fmt.Println("got " + invite) // TODO check if token is valid // TODO collect username // TODO collect email // TODO collect public key // TODO have enough to make account; can now do that // TODO assuming account creation succeeded, mark invite as used return nil } func main() { err := _main() if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } }