town/cmd/welcome/main.go

78 lines
1.4 KiB
Go

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)
}
}