towncon wip

trunk
nate smith 2024-09-01 15:17:27 -05:00
parent b3294e880f
commit ebadba99af
2 changed files with 123 additions and 17 deletions

View File

@ -6,9 +6,11 @@ import (
"math/rand" "math/rand"
"os" "os"
"os/exec" "os/exec"
"os/user"
"path" "path"
"strings" "strings"
"git.tilde.town/tildetown/town/email"
"github.com/charmbracelet/glamour" "github.com/charmbracelet/glamour"
"github.com/charmbracelet/huh" "github.com/charmbracelet/huh"
) )
@ -35,8 +37,103 @@ func banner() (string, error) {
} }
func pager() *exec.Cmd { func info() error {
return exec.Command("/usr/bin/bat") infoContent, err := md.ReadFile("md/info.md")
if err != nil {
return err
}
out, err := glamour.Render(string(infoContent), "dracula")
if err != nil {
return err
}
cmd := exec.Command("/usr/bin/bat")
cmd.Stdin = strings.NewReader(out)
cmd.Stdout = os.Stdout
return cmd.Run()
}
type physicalData struct {
}
type rsvpData struct {
Being string
PhysicalData physicalData
Freeform string
}
func sendRSVPEmail(rd rsvpData) error {
body := "TODO"
return email.SendLocalEmail("vilmibm", "RSVP TOWNCON24", body)
}
func rsvp(o opts) error {
var being string
var arriving string
var departing string
var transportation bool
lodging := true
var allergies string
couch := true
var freeform string
form := huh.NewForm(
huh.NewGroup(
huh.NewSelect[string]().Title("How will you be attending?").
Options(
huh.NewOption("Digitally", "digital"),
huh.NewOption("Phyiscally", "physical"),
).Value(&being)),
// Physical attendee form
huh.NewGroup(
huh.NewInput().Title("When (day/time) are you arriving?").
Value(&arriving),
huh.NewInput().Title("When (day/time) are you departing?").
Value(&departing),
).WithHideFunc(func() bool {
return being != "physical"
}),
huh.NewGroup(
huh.NewConfirm().Title("Will you be staying overnight at the venue?").
Value(&lodging),
).WithHideFunc(func() bool {
return being != "physical"
}),
huh.NewGroup(
huh.NewConfirm().Title("If the need arises are you ok sleeping on a couch?").
Value(&couch),
).WithHideFunc(func() bool {
return being != "physical" && !lodging
}),
huh.NewGroup(
huh.NewInput().Title("Do you have any food allergies I should be aware of?").
Value(&allergies),
huh.NewConfirm().Title("Will you need any help getting to the venue?").
Description("I have a car and have some ability to help getting people to the venue").
Value(&transportation),
).WithHideFunc(func() bool {
return being != "physical"
}),
// Catch all freeform
huh.NewGroup(
huh.NewText().
Title("Anything you want me to know? Any questions?").
Value(&freeform)))
err := form.Run()
if err != nil {
return err
}
// TODO email
return nil
}
type opts struct {
Username string
} }
func _main() error { func _main() error {
@ -47,6 +144,18 @@ func _main() error {
fmt.Println(b) fmt.Println(b)
u, err := user.Current()
if err != nil {
return err
}
o := opts{
Username: u.Username,
}
fmt.Printf("\t\t^_^_^_^_^_^_^ hi ~%s ^_^_^_^_^_^_^\n", o.Username)
fmt.Println()
var mode string var mode string
huh.NewSelect[string]().Title("whuddyu wanna doo?"). huh.NewSelect[string]().Title("whuddyu wanna doo?").
@ -60,22 +169,9 @@ func _main() error {
switch mode { switch mode {
case "info": case "info":
infoContent, err := md.ReadFile("md/info.md") return info()
if err != nil {
return err
}
out, err := glamour.Render(string(infoContent), "dracula")
if err != nil {
return err
}
cmd := pager()
cmd.Stdin = strings.NewReader(out)
cmd.Stdout = os.Stdout
err = cmd.Run()
if err != nil {
return err
}
case "rsvp": case "rsvp":
return rsvp(o)
case "submit": case "submit":
case "jam": case "jam":
case "quit": case "quit":

View File

@ -73,6 +73,12 @@ I'll arrange food throughout the event.
There are also plenty of restaurants around the venue if people want to get their own food. There are also plenty of restaurants around the venue if people want to get their own food.
### TRANSPORTATION
The venue is accessible from rail, bus, and cab/uber/lyft. I have a car and can make myself available to pick people up and get them to the venue once they have made it to Chicago if they need. Depending on timing I might not be able to help, however. Contact via my cell phone (`~vilmibm/phone.txt`) to ask about my availability for a ride during the event.
If you are driving parking might be tough in the area--I can offer a few spots by my place in Forest Park if you want to put a car there and then get a ride over to the venue.
### ACTIVITIES ### ACTIVITIES
I'd like to do a field trip on the 12th...Some potential ideas: I'd like to do a field trip on the 12th...Some potential ideas:
@ -84,3 +90,7 @@ I'd like to do a field trip on the 12th...Some potential ideas:
- just hang out and play synths (field trip of the mind) - just hang out and play synths (field trip of the mind)
!!! TBD !!! !!! TBD !!!
## COMMS
For any kind of emergency during the event please contact me via my cell phone. My number can be found at `~vilmibm/phone.txt`.