forked from tildetown/town
		
	towncon wip
This commit is contained in:
		
							parent
							
								
									b3294e880f
								
							
						
					
					
						commit
						ebadba99af
					
				| @ -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": | ||||||
|  | |||||||
| @ -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`. | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user