From 8a40bcc74d5b0a9b10bc6c7302bac6314bad467d Mon Sep 17 00:00:00 2001 From: vilmibm Date: Sun, 7 Sep 2025 00:04:47 -0700 Subject: [PATCH] more 2025 updates --- cmd/towncon/main.go | 60 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/cmd/towncon/main.go b/cmd/towncon/main.go index ac9b678..e7a3d78 100644 --- a/cmd/towncon/main.go +++ b/cmd/towncon/main.go @@ -290,6 +290,59 @@ func submit(o opts) error { return nil } +type voteData struct { + Username string + Days []string +} + +func vote(o opts) error { + voteContent, err := md.ReadFile("md/vote.md") + if err != nil { + return err + } + out, err := glamour.Render(string(voteContent), "auto") + if err != nil { + return err + } + fmt.Println(out) + + var selections []string + + form := huh.NewForm( + huh.NewGroup( + huh.NewMultiSelect[string]().Title("which days work for you?"). + Options( + huh.NewOption("18th", "18th"), + huh.NewOption("25th", "25th"), + ).Value(&selections))).WithTheme(huh.ThemeBase()) + + if err := form.Run(); err != nil { + return err + } + + vd := voteData{ + Username: o.Username, + Days: selections, + } + + if err = sendVoteEmail(vd); err != nil { + return err + } + + fmt.Println("THANK YOU~!!") + + return nil +} + +func sendVoteEmail(vd voteData) error { + bs, err := yaml.Marshal(vd) + if err != nil { + return err + } + + return email.SendLocalEmail("vilmibm", "TOWNCON25 DAY VOTE", string(bs)) +} + type jamData struct { Username string Desc string @@ -392,9 +445,10 @@ func _main() error { huh.NewGroup( huh.NewSelect[string]().Title("whadduyu wanna doo?"). Options( + huh.NewOption("VOTE ON DAY", "vote"), huh.NewOption("Get an info dump", "info"), - huh.NewOption("SEE SCHEDULE", "schedule"), - huh.NewOption("RSVP", "rsvp"), + //huh.NewOption("SEE SCHEDULE", "schedule"), + //huh.NewOption("RSVP", "rsvp"), huh.NewOption("Submit or propose a work (talk, art, etc)", "submit"), huh.NewOption("Propose a creative jam", "jam"), huh.NewOption("Quit", "quit"), @@ -416,6 +470,8 @@ func _main() error { return submit(o) case "jam": return jam(o) + case "vote": + return vote(o) case "quit": default: return fmt.Errorf("wtf '%s'", mode)