diff --git a/Makefile b/Makefile index 6f311cb..a693907 100644 --- a/Makefile +++ b/Makefile @@ -5,6 +5,7 @@ install: all cp bin/launcher /usr/local/bin/town cp bin/stats /town/bin/ cp bin/contrib /town/bin/ + cp bin/con /town/bin/ cp bin/request /town/bin/ cp bin/appendkeyfile /town/bin/ cp bin/createkeyfile /town/bin/ @@ -43,7 +44,7 @@ bin/emailtouser: external/cmd/helpers/emailtouser/main.go bin bin/registeruser: external/cmd/helpers/registeruser/main.go bin go build -o bin/registeruser ./external/cmd/helpers/registeruser -cmds: bin/launcher bin/stats bin/contrib bin/request bin/review bin/tma +cmds: bin/launcher bin/stats bin/con bin/contrib bin/request bin/review bin/tma bin/launcher: cmd/launcher/main.go bin go build -o bin/launcher ./cmd/launcher @@ -54,6 +55,9 @@ bin/stats: cmd/stats/main.go bin bin/contrib: cmd/contrib/main.go bin go build -o bin/contrib ./cmd/contrib +bin/con: cmd/towncon/main.go bin + go build -o bin/con ./cmd/towncon + bin/request: cmd/request/main.go bin go build -o bin/request ./cmd/request diff --git a/cmd/con/main.go b/cmd/con/main.go deleted file mode 100644 index d577751..0000000 --- a/cmd/con/main.go +++ /dev/null @@ -1,30 +0,0 @@ -package main - -import ( - "fmt" - "os" - - "github.com/charmbracelet/huh" -) - -func _main() error { - - var mode string - - huh.NewSelect[string]().Title("whuddyu wanna doo?"). - Options( - huh.NewOption("Get an info dump"), - huh.NewOption("RSVP", "rsvp"), - huh.NewOption("Submit a talk proposal or finished work"), - ).Value(&mode).Run() - - return nil - -} - -func main() { - if err := _main(); err != nil { - fmt.Fprintf(os.Stderr, ":( failed: %s\n", err.Error()) - os.Exit(1) - } -} diff --git a/cmd/con/README.md b/cmd/towncon/README.md similarity index 100% rename from cmd/con/README.md rename to cmd/towncon/README.md diff --git a/cmd/towncon/banners/banner0.txt b/cmd/towncon/banners/banner0.txt new file mode 100644 index 0000000..91c4699 --- /dev/null +++ b/cmd/towncon/banners/banner0.txt @@ -0,0 +1,26 @@ + .-'''-. + ' _ \ + / /` '. \ _..._ + . | \ ' _ _ .' '. + .| | ' | '/\ \\ //. .-. . + .' |_\ \ / / `\\ //\\ // | ' ' | + .' |`. ` ..' / \`// \'/ | | | | +'--. .-' '-...-'` \| |/ | | | | + | | ' | | | | + | | | | | | + | '.' | | | | + | / | | | | + `'-' '--' '--' + _..._ .-'''-. + .-'_..._''. ' _ \ + .' .' '.\/ /` '. \ _..._ + / .' . | \ ' .' '. +. ' | ' | '. .-. . +| | \ \ / / | ' ' | +| | `. ` ..' / | | | | +. ' '-...-'` | | | | + \ '. . | | | | + '. `._____.-'/ | | | | + `-.______ / | | | | + ` | | | | + '--' '--' diff --git a/cmd/towncon/banners/banner1.txt b/cmd/towncon/banners/banner1.txt new file mode 100644 index 0000000..bdfa2c2 --- /dev/null +++ b/cmd/towncon/banners/banner1.txt @@ -0,0 +1,32 @@ + ,----, + ,/ .`| ,----.. ,--. + ,` .' : / / \ .---. ,--.'| + ; ; // . : /. ./| ,--,: : | +.'___,/ ,'. / ;. \ .--'. ' ;,`--.'`| ' : +| : |. ; / ` ; /__./ \ : || : : | | +; |.'; ;; | ; \ ; | .--'. ' \' .: | \ | : +`----' | || : | ; | '/___/ \ | ' '| : ' '; | + ' : ;. | ' ' ' :; \ \; :' ' ;. ; + | | '' ; \; / | \ ; ` || | | \ | + ' : | \ \ ', / . \ .\ ;' : | ; .' + ; |.' ; : / \ \ ' \ || | '`--' + '---' \ \ .' : ' |--" ' : | + `---` \ \ ; ; |.' + '---" '---' + + + ,----.. ,--. + ,----.. / / \ ,--.'| + / / \ / . : ,--,: : | +| : : . / ;. \,`--.'`| ' : +. | ;. /. ; / ` ;| : : | | +. ; /--` ; | ; \ ; |: | \ | : +; | ; | : | ; | '| : ' '; | +| : | . | ' ' ' :' ' ;. ; +. | '___ ' ; \; / || | | \ | +' ; : .'| \ \ ', / ' : | ; .' +' | '/ : ; : / | | '`--' +| : / \ \ .' ' : | + \ \ .' `---` ; |.' + `---` '---' + diff --git a/cmd/towncon/banners/banner2.txt b/cmd/towncon/banners/banner2.txt new file mode 100644 index 0000000..01b46e1 --- /dev/null +++ b/cmd/towncon/banners/banner2.txt @@ -0,0 +1,18 @@ +__/\\\\\\\\\\\\\\\_______/\\\\\_______/\\\______________/\\\__/\\\\\_____/\\\_ + _\///////\\\/////______/\\\///\\\____\/\\\_____________\/\\\_\/\\\\\\___\/\\\_ + _______\/\\\_________/\\\/__\///\\\__\/\\\_____________\/\\\_\/\\\/\\\__\/\\\_ + _______\/\\\________/\\\______\//\\\_\//\\\____/\\\____/\\\__\/\\\//\\\_\/\\\_ + _______\/\\\_______\/\\\_______\/\\\__\//\\\__/\\\\\__/\\\___\/\\\\//\\\\/\\\_ + _______\/\\\_______\//\\\______/\\\____\//\\\/\\\/\\\/\\\____\/\\\_\//\\\/\\\_ + _______\/\\\________\///\\\__/\\\_______\//\\\\\\//\\\\\_____\/\\\__\//\\\\\\_ + _______\/\\\__________\///\\\\\/_________\//\\\__\//\\\______\/\\\___\//\\\\\_ + _______\///_____________\/////____________\///____\///_______\///_____\/////__ +__________________/\\\\\\\\\_______/\\\\\_______/\\\\\_____/\\\_ + _______________/\\\////////______/\\\///\\\____\/\\\\\\___\/\\\_ + _____________/\\\/_____________/\\\/__\///\\\__\/\\\/\\\__\/\\\_ + ____________/\\\______________/\\\______\//\\\_\/\\\//\\\_\/\\\_ + ___________\/\\\_____________\/\\\_______\/\\\_\/\\\\//\\\\/\\\_ + ___________\//\\\____________\//\\\______/\\\__\/\\\_\//\\\/\\\_ + ____________\///\\\___________\///\\\__/\\\____\/\\\__\//\\\\\\_ + ______________\////\\\\\\\\\____\///\\\\\/_____\/\\\___\//\\\\\_ + _________________\/////////_______\/////_______\///_____\/////__ diff --git a/cmd/towncon/banners/banner3.txt b/cmd/towncon/banners/banner3.txt new file mode 100644 index 0000000..fc13453 --- /dev/null +++ b/cmd/towncon/banners/banner3.txt @@ -0,0 +1,10 @@ + + d8P +d888888P + ?88' d8888b ?88 d8P d8P 88bd88b d8888b d8888b 88bd88b + 88P d8P' ?88 d88 d8P' d8P' 88P' ?8b d8P' `Pd8P' ?88 88P' ?8b + 88b 88b d88 ?8b ,88b ,88' d88 88P 88b 88b d88 d88 88P + `?8b `?8888P' `?888P'888P' d88' 88b `?888P'`?8888P'd88' 88b + + + diff --git a/cmd/towncon/main.go b/cmd/towncon/main.go new file mode 100644 index 0000000..89a0661 --- /dev/null +++ b/cmd/towncon/main.go @@ -0,0 +1,94 @@ +package main + +import ( + "embed" + "fmt" + "math/rand" + "os" + "os/exec" + "path" + "strings" + + "github.com/charmbracelet/glamour" + "github.com/charmbracelet/huh" +) + +//go:embed banners/* +var banners embed.FS + +//go:embed md/* +var md embed.FS + +func banner() (string, error) { + dirs, err := banners.ReadDir("banners") + if err != nil { + return "", err + } + mx := len(dirs) + ix := rand.Intn(mx) + content, err := banners.ReadFile(path.Join("banners", dirs[ix].Name())) + if err != nil { + return "", err + } + + return string(content), nil + +} + +func pager() *exec.Cmd { + return exec.Command("/usr/bin/bat") +} + +func _main() error { + b, err := banner() + if err != nil { + return err + } + + fmt.Println(b) + + var mode string + + huh.NewSelect[string]().Title("whuddyu wanna doo?"). + Options( + huh.NewOption("Get an info dump", "info"), + huh.NewOption("RSVP", "rsvp"), + huh.NewOption("Submit a talk proposal or finished work", "submit"), + huh.NewOption("Propose a creative jam", "jam"), + huh.NewOption("Quit", "quit"), + ).Value(&mode).Run() + + switch mode { + case "info": + 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 := pager() + cmd.Stdin = strings.NewReader(out) + cmd.Stdout = os.Stdout + err = cmd.Run() + if err != nil { + return err + } + case "rsvp": + case "submit": + case "jam": + case "quit": + default: + return fmt.Errorf("wtf '%s'", mode) + } + + return nil +} + +func main() { + if err := _main(); err != nil { + fmt.Fprintf(os.Stderr, ":( failed: %s\n", err.Error()) + os.Exit(1) + } +} diff --git a/cmd/towncon/md/info.md b/cmd/towncon/md/info.md new file mode 100644 index 0000000..62b8512 --- /dev/null +++ b/cmd/towncon/md/info.md @@ -0,0 +1,86 @@ +# TOWN CON INFORMATION + +TOWN CON is a celebration of tilde.town's 10 year anniversary featuring 24 hours of talks, art, and music by townies. + +TOWN CON begins at 0:00 UTC on October 11, 2024 and ends 23:59 UTC on October 12, 2024. + +There is an additional day of TOWN CON on October 12th for townies attending TOWN CON MEAT EDITION in Chicago, Illinois, USA. + +## DIGITAL EVENT + +TOWN CON's primary locus of reality will be here on the server in a text-mode environment. This environment will be supplemented with audio/video feeds as needed. + +Works submitted by townies will all be slotted into a viewing schedule to run throughout the 24 hours of the event. The text-mode environment will either show the submitted work or have a pointer off to where it can be consumed in a browser. + +The text mode environment will either be a HERMETICUM instance (if I finish the project in time) or just IRC. + +### JAMS + +Throughout the event townies are encouraged to cluster and collaborate on various creative **JAMS**. Re-run this tool and select _Propose a creative jam_ if you want to suggest one. Suggested jams: + +- 88x31 badge jam +- forum software jam +- game jam +- dos jam + +## PHYSICAL EVENT + +TOWN CON MEAT EDITION takes place October 11th and 12th in Chicago, Illinois, USA. + +On the 11th we'll be plugged into the digital event together and on the 12th we'll do something in meatspace. + +### live music jam + +Meat edition guests are encouraged to bring small sound or music emitting devices. We'll set them up with recording system and do some jamming. Some synthesizers and a sampler will be provided. + +### VENUE and LODGING + +The venue is a converted warehouse loft located at: + +``` +Loft 606 +2605 W Armitage Ave, +Chicago, IL 60647 +``` + +The venue has enough sleeping space to lodge everyone who expressed interest in coming in person, however some people will need to volunteer to sleep on couches. I have the venue reserved for: + +- the evening of October 10th (feel free to arrive this day!) +- all day October 11th +- all day October 12th +- the morning of October 13th (feel free to leave this day!) + +The total cost to book this venue was **$8,637**. I've paid for it out of pocket and would love if townies could help chip in for the cost. As of right now (`2024-08-31`) I have received **$0** of chip in and will update this as I get donations. + +To learn more about the venue you can visit their website: https://www.loft606.com/ + +### FOOD + +I'll arrange food throughout the event. + +- 10th + - **dinner**: local restaurant food for dinner +- 11th + - breakfast: bulk order from Colectivo + - lunch: sandwich fixins + - dinner: vegan deep dish pizza from Kitchen 17 +- 12th + - breakfast: bulk order from Colectivo + - lunch: sandwich fixins + - dinner: vegan mexican food from Quesadilla Del Reina Del Sur +- 13th + - breakfast: bulk order from Colectivo + +There are also plenty of restaurants around the venue if people want to get their own food. + +### ACTIVITIES + +I'd like to do a field trip on the 12th...Some potential ideas: + +- go to the nearby thrift store +- go out to minigolf +- go to a museum +- go into the woods +- just hang out and play synths (field trip of the mind) + +!!! TBD !!! diff --git a/external/cmd/help/main.go b/external/cmd/help/main.go index f9404c1..c5a6207 100644 --- a/external/cmd/help/main.go +++ b/external/cmd/help/main.go @@ -35,16 +35,16 @@ func connectDB() (*sql.DB, error) { } type colorScheme struct { - Header func(string) string - Subtitle func(string) string - Prompt func(string) string - Email func(string) string - Option func(string) string - Error func(string) string + Header func(...string) string + Subtitle func(...string) string + Prompt func(...string) string + Email func(...string) string + Option func(...string) string + Error func(...string) string } func newColorScheme() colorScheme { - s2r := func(s lipgloss.Style) func(string) string { + s2r := func(s lipgloss.Style) func(...string) string { return s.Render } c := func(s string) lipgloss.Color { diff --git a/go.mod b/go.mod index fad1bb5..f9f8b8a 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,8 @@ require ( github.com/AlecAivazis/survey/v2 v2.3.5 github.com/MakeNowJust/heredoc/v2 v2.0.1 github.com/charmbracelet/glamour v0.5.0 - github.com/charmbracelet/lipgloss v0.6.0 + github.com/charmbracelet/huh v0.5.3 + github.com/charmbracelet/lipgloss v0.13.0 github.com/gdamore/tcell/v2 v2.5.3 github.com/gofrs/flock v0.8.1 github.com/mattn/go-sqlite3 v1.14.16 @@ -18,27 +19,42 @@ require ( require ( github.com/alecthomas/chroma v0.10.0 // indirect + github.com/atotto/clipboard v0.1.4 // indirect + github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/aymerick/douceur v0.2.0 // indirect + github.com/catppuccin/go v0.2.0 // indirect + github.com/charmbracelet/bubbles v0.19.0 // indirect + github.com/charmbracelet/bubbletea v0.27.0 // indirect + github.com/charmbracelet/x/ansi v0.2.2 // indirect + github.com/charmbracelet/x/exp/strings v0.0.0-20240722160745-212f7b056ed0 // indirect + github.com/charmbracelet/x/term v0.2.0 // indirect github.com/dlclark/regexp2 v1.4.0 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect github.com/gdamore/encoding v1.0.0 // indirect github.com/gorilla/css v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/mattn/go-colorable v0.1.4 // indirect - github.com/mattn/go-isatty v0.0.14 // indirect - github.com/mattn/go-runewidth v0.0.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-localereader v0.0.1 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b // indirect github.com/microcosm-cc/bluemonday v1.0.17 // indirect + github.com/mitchellh/hashstructure/v2 v2.0.2 // indirect + github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect + github.com/muesli/cancelreader v0.2.2 // indirect github.com/muesli/reflow v0.3.0 // indirect - github.com/muesli/termenv v0.11.1-0.20220204035834-5ac8409525e0 // indirect + github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/rivo/uniseg v0.4.2 // indirect + github.com/rivo/uniseg v0.4.7 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/yuin/goldmark v1.4.4 // indirect github.com/yuin/goldmark-emoji v1.0.1 // indirect golang.org/x/net v0.0.0-20210614182718-04defd469f4e // indirect - golang.org/x/sys v0.0.0-20220422013727-9388b58f7150 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.24.0 // indirect golang.org/x/term v0.0.0-20210503060354-a79de5458b56 // indirect - golang.org/x/text v0.3.7 // indirect + golang.org/x/text v0.16.0 // indirect ) diff --git a/go.sum b/go.sum index e946d2b..66fbb31 100644 --- a/go.sum +++ b/go.sum @@ -1,17 +1,36 @@ github.com/AlecAivazis/survey/v2 v2.3.5 h1:A8cYupsAZkjaUmhtTYv3sSqc7LO5mp1XDfqe5E/9wRQ= github.com/AlecAivazis/survey/v2 v2.3.5/go.mod h1:4AuI9b7RjAR+G7v9+C4YSlX/YL3K3cWNXgWXOhllqvI= +github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= github.com/MakeNowJust/heredoc/v2 v2.0.1 h1:rlCHh70XXXv7toz95ajQWOWQnN4WNLt0TdpZYIR/J6A= github.com/MakeNowJust/heredoc/v2 v2.0.1/go.mod h1:6/2Abh5s+hc3g9nbWLe9ObDIOhaRrqsyY9MWy+4JdRM= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek= github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s= +github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= +github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= +github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= +github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= +github.com/catppuccin/go v0.2.0 h1:ktBeIrIP42b/8FGiScP9sgrWOss3lw0Z5SktRoithGA= +github.com/catppuccin/go v0.2.0/go.mod h1:8IHJuMGaUUjQM82qBrGNBv7LFq6JI3NnQCF6MOlZjpc= +github.com/charmbracelet/bubbles v0.19.0 h1:gKZkKXPP6GlDk6EcfujDK19PCQqRjaJZQ7QRERx1UF0= +github.com/charmbracelet/bubbles v0.19.0/go.mod h1:WILteEqZ+krG5c3ntGEMeG99nCupcuIk7V0/zOP0tOA= +github.com/charmbracelet/bubbletea v0.27.0 h1:Mznj+vvYuYagD9Pn2mY7fuelGvP0HAXtZYGgRBCbHvU= +github.com/charmbracelet/bubbletea v0.27.0/go.mod h1:5MdP9XH6MbQkgGhnlxUqCNmBXf9I74KRQ8HIidRxV1Y= github.com/charmbracelet/glamour v0.5.0 h1:wu15ykPdB7X6chxugG/NNfDUbyyrCLV9XBalj5wdu3g= github.com/charmbracelet/glamour v0.5.0/go.mod h1:9ZRtG19AUIzcTm7FGLGbq3D5WKQ5UyZBbQsMQN0XIqc= -github.com/charmbracelet/lipgloss v0.6.0 h1:1StyZB9vBSOyuZxQUcUwGr17JmojPNm87inij9N3wJY= -github.com/charmbracelet/lipgloss v0.6.0/go.mod h1:tHh2wr34xcHjC2HCXIlGSG1jaDF0S0atAUvBMP6Ppuk= +github.com/charmbracelet/huh v0.5.3 h1:3KLP4a/K1/S4dq4xFMTNMt3XWhgMl/yx8NYtygQ0bmg= +github.com/charmbracelet/huh v0.5.3/go.mod h1:OZC3lshuF+/y8laj//DoZdFSHxC51OrtXLJI8xWVouQ= +github.com/charmbracelet/lipgloss v0.13.0 h1:4X3PPeoWEDCMvzDvGmTajSyYPcZM4+y8sCA/SsA3cjw= +github.com/charmbracelet/lipgloss v0.13.0/go.mod h1:nw4zy0SBX/F/eAO1cWdcvy6qnkDUxr8Lw7dvFrAIbbY= +github.com/charmbracelet/x/ansi v0.2.2 h1:BC7xzaVpfWIYZRNE8NhO9zo8KA4eGUL6L/JWXDh3GF0= +github.com/charmbracelet/x/ansi v0.2.2/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw= +github.com/charmbracelet/x/exp/strings v0.0.0-20240722160745-212f7b056ed0 h1:qko3AQ4gK1MTS/de7F5hPGx6/k1u0w4TeYmBFwzYVP4= +github.com/charmbracelet/x/exp/strings v0.0.0-20240722160745-212f7b056ed0/go.mod h1:pBhA0ybfXv6hDjQUZ7hk1lVxBiUbupdw5R31yPUViVQ= +github.com/charmbracelet/x/term v0.2.0 h1:cNB9Ot9q8I711MyZ7myUR5HFWL/lc3OpU8jZ4hwm0x0= +github.com/charmbracelet/x/term v0.2.0/go.mod h1:GVxgxAbjUrmpvIINHIQnJJKpMlHiZ4cktEQCN6GWyF0= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.17 h1:QeVUsEDNrLBW4tMgZHvxy18sKtr6VI492kBhUfhDJNI= github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= @@ -20,6 +39,10 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E= github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= +github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM= github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko= github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= github.com/gdamore/tcell/v2 v2.5.3 h1:b9XQrT6QGbgI7JvZOJXFNczOQeIYbo8BfeSMzt2sAV0= @@ -42,14 +65,16 @@ github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVc github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= +github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/mattn/go-tty v0.0.5 h1:s09uXI7yDbXzzTTfw3zonKFzwGkyYlgU3OMjqA0ddz4= @@ -58,12 +83,17 @@ github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1f github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/microcosm-cc/bluemonday v1.0.17 h1:Z1a//hgsQ4yjC+8zEkV8IWySkXnsxmdSY642CTFQb5Y= github.com/microcosm-cc/bluemonday v1.0.17/go.mod h1:Z0r70sCuXHig8YpBzCc5eGHAap2K7e/u082ZUpDRRqM= -github.com/muesli/reflow v0.2.1-0.20210115123740-9e1d0d53df68/go.mod h1:Xk+z4oIWdQqJzsxyjgl3P22oYZnHdZ8FFTHAQQt5BMQ= +github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4= +github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= +github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI= +github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo= +github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= +github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= github.com/muesli/termenv v0.9.0/go.mod h1:R/LzAKf+suGs4IsO95y7+7DpFHO0KABgnZqtlyx2mBw= -github.com/muesli/termenv v0.11.1-0.20220204035834-5ac8409525e0 h1:STjmj0uFfRryL9fzRA/OupNppeAID6QJYPMavTL7jtY= -github.com/muesli/termenv v0.11.1-0.20220204035834-5ac8409525e0/go.mod h1:Bd5NYQ7pd+SrtBSrSNoBBmXlcY8+Xj4BMJgh8qcZrvs= +github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a h1:2MaM6YC3mGu54x+RKAA6JiFFHlHDY1UbkxqppT7wYOg= +github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a/go.mod h1:hxSnBBYLK21Vtq/PHd0S2FYCxBXzBua8ov5s1RobyRQ= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -72,8 +102,8 @@ github.com/rivo/tview v0.0.0-20230130130022-4a1b7a76c01c h1:zIYU4PjQJ4BnYryMmpyi github.com/rivo/tview v0.0.0-20230130130022-4a1b7a76c01c/go.mod h1:lBUy/T5kyMudFzWUH/C2moN+NlU5qF505vzOyINXuUQ= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.2 h1:YwD0ulJSJytLpiaWua0sBDusfsCZohxjxzVTYjwxfV8= -github.com/rivo/uniseg v0.4.2/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/cobra v1.5.0 h1:X+jTBEBqF0bHN+9cSMgmfuvv2VHJ9ezmFNf9Y/XstYU= github.com/spf13/cobra v1.5.0/go.mod h1:dWXEIy2H428czQCjInthrTRUg7yKbok+2Qi/yBIJoUM= @@ -90,16 +120,20 @@ github.com/yuin/goldmark-emoji v1.0.1 h1:ctuWEyzGBwiucEqxzwe0SOYDXPAucOrE9NQC18W github.com/yuin/goldmark-emoji v1.0.1/go.mod h1:2w1E6FEWLcDQkoTE+7HU6QF1F6SLlNGjRIBbIZQFqkQ= golang.org/x/net v0.0.0-20210614182718-04defd469f4e h1:XpT3nA5TvE525Ne3hInMh6+GETgn27Zfm9dxsThnX2Q= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220318055525-2edf467146b5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220422013727-9388b58f7150 h1:xHms4gcpe1YE7A3yIllJXP16CMAGuqwO2lX1mTyyRRc= golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210503060354-a79de5458b56 h1:b8jxX3zqjpqb2LklXPzKSGJhzyxCOZSz8ncv8Nv+y7w= @@ -107,8 +141,9 @@ golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=