forked from tildetown/town
78 lines
1.4 KiB
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)
|
|
}
|
|
}
|