on main help sign in
feat: use fang (#39)
commitcebf0ac4ae5c87074a48ca57fe6aa3f2313b80f2 authorCarlos Alexandro Becker <caarlos0@users.noreply.github.com> dateWed 18 Jun 2025, 15:02 (1 year ago) parent723ae12
3 files changed+24−16
cmd/root.go+6−13 go.mod+6−1 go.sum+12−2
cmd/root.go+6−13
@@ -17,6 +17,7 @@ import (
1717 "github.com/charmbracelet/crush/internal/pubsub"
1818 "github.com/charmbracelet/crush/internal/tui"
1919 "github.com/charmbracelet/crush/internal/version"
20+ "github.com/charmbracelet/fang"
2021 "github.com/spf13/cobra"
2122)
2223
@@ -46,16 +47,6 @@ to assist developers in writing, debugging, and understanding code directly from
4647 crush -p "Explain the use of context in Go" -f json
4748 `,
4849 RunE: func(cmd *cobra.Command, args []string) error {
49− // If the help flag is set, show the help message
50− if cmd.Flag("help").Changed {
51− cmd.Help()
52− return nil
53− }
54− if cmd.Flag("version").Changed {
55− fmt.Println(version.Version)
56− return nil
57− }
58−
5950 // Load the config
6051 debug, _ := cmd.Flags().GetBool("debug")
6152 cwd, _ := cmd.Flags().GetString("cwd")
@@ -282,15 +273,17 @@ func setupSubscriptions(app *app.App, parentCtx context.Context) (chan tea.Msg,
282273}
283274
284275func Execute() {
285− err := rootCmd.Execute()
286− if err != nil {
276+ if err := fang.Execute(
277+ context.Background(),
278+ rootCmd,
279+ fang.WithVersion(version.Version),
280+ ); err != nil {
287281 os.Exit(1)
288282 }
289283}
290284
291285func init() {
292286 rootCmd.Flags().BoolP("help", "h", false, "Help")
293− rootCmd.Flags().BoolP("version", "v", false, "Version")
294287 rootCmd.Flags().BoolP("debug", "d", false, "Debug")
295288 rootCmd.Flags().StringP("cwd", "c", "", "Current working directory")
296289 rootCmd.Flags().StringP("prompt", "p", "", "Prompt to run in non-interactive mode")
go.mod+6−1
@@ -14,10 +14,11 @@ require (
1414 github.com/charlievieth/fastwalk v1.0.11
1515 github.com/charmbracelet/bubbles/v2 v2.0.0-beta.1.0.20250607113720-eb5e1cf3b09e
1616 github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.3.0.20250609143341-c76fa36f1b94
17+ github.com/charmbracelet/fang v0.1.0
1718 github.com/charmbracelet/glamour/v2 v2.0.0-20250516160903-6f1e2c8f9ebe
1819 github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.1.0.20250523195325-2d1af06b557c
1920 github.com/charmbracelet/x/ansi v0.9.3-0.20250602153603-fb931ed90413
20− github.com/charmbracelet/x/exp/charmtone v0.0.0-20250530202730-6ba1785cd7b9
21+ github.com/charmbracelet/x/exp/charmtone v0.0.0-20250603201427-c31516f43444
2122 github.com/charmbracelet/x/exp/golden v0.0.0-20250207160936-21c02780d27a
2223 github.com/disintegration/imageorient v0.0.0-20180920195336-8147d86e83ec
2324 github.com/fsnotify/fsnotify v1.8.0
@@ -93,6 +94,10 @@ require (
9394 github.com/mfridman/interpolate v0.0.2 // indirect
9495 github.com/microcosm-cc/bluemonday v1.0.27 // indirect
9596 github.com/muesli/cancelreader v0.2.2 // indirect
97+ github.com/muesli/mango v0.1.0 // indirect
98+ github.com/muesli/mango-cobra v1.2.0 // indirect
99+ github.com/muesli/mango-pflag v0.1.0 // indirect
100+ github.com/muesli/roff v0.1.0 // indirect
96101 github.com/ncruces/julianday v1.0.0 // indirect
97102 github.com/pelletier/go-toml/v2 v2.2.3 // indirect
98103 github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
go.sum+12−2
@@ -74,6 +74,8 @@ github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.3.0.20250609143341-c76fa36f1b9
7474github.com/charmbracelet/bubbletea/v2 v2.0.0-beta.3.0.20250609143341-c76fa36f1b94/go.mod h1:oOn1YZGZyJHxJfh4sFAna9vDzxJRNuErLETr/lnlB/I=
7575github.com/charmbracelet/colorprofile v0.3.1 h1:k8dTHMd7fgw4bnFd7jXTLZrSU/CQrKnL3m+AxCzDz40=
7676github.com/charmbracelet/colorprofile v0.3.1/go.mod h1:/GkGusxNs8VB/RSOh3fu0TJmQ4ICMMPApIIVn0KszZ0=
77+github.com/charmbracelet/fang v0.1.0 h1:SlZS2crf3/zQh7Mr4+W+7QR1k+L08rrPX5rm5z3d7Wg=
78+github.com/charmbracelet/fang v0.1.0/go.mod h1:Zl/zeUQ8EtQuGyiV0ZKZlZPDowKRTzu8s/367EpN/fc=
7779github.com/charmbracelet/glamour/v2 v2.0.0-20250516160903-6f1e2c8f9ebe h1:i6ce4CcAlPpTj2ER69m1DBeLZ3RRcHnKExuwhKa3GfY=
7880github.com/charmbracelet/glamour/v2 v2.0.0-20250516160903-6f1e2c8f9ebe/go.mod h1:p3Q+aN4eQKeM5jhrmXPMgPrlKbmc59rWSnMsSA3udhk=
7981github.com/charmbracelet/lipgloss/v2 v2.0.0-beta.1.0.20250523195325-2d1af06b557c h1:177KMz8zHRlEZJsWzafbKYh6OdjgvTspoH+UjaxgIXY=
@@ -82,8 +84,8 @@ github.com/charmbracelet/x/ansi v0.9.3-0.20250602153603-fb931ed90413 h1:L07QkDqR
8284github.com/charmbracelet/x/ansi v0.9.3-0.20250602153603-fb931ed90413/go.mod h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE=
8385github.com/charmbracelet/x/cellbuf v0.0.14-0.20250516160309-24eee56f89fa h1:lphz0Z3rsiOtMYiz8axkT24i9yFiueDhJbzyNUADmME=
8486github.com/charmbracelet/x/cellbuf v0.0.14-0.20250516160309-24eee56f89fa/go.mod h1:xBlh2Yi3DL3zy/2n15kITpg0YZardf/aa/hgUaIM6Rk=
85−github.com/charmbracelet/x/exp/charmtone v0.0.0-20250530202730-6ba1785cd7b9 h1:f6tG7ApqIvXTpgF6MZ+C4Ga7669eiW9BsMkXEjDFHfY=
86−github.com/charmbracelet/x/exp/charmtone v0.0.0-20250530202730-6ba1785cd7b9/go.mod h1:vr+xCFylsPYq2qSz+n5/jItjcK2/PgrKFMTI7VRR6CI=
87+github.com/charmbracelet/x/exp/charmtone v0.0.0-20250603201427-c31516f43444 h1:IJDiTgVE56gkAGfq0lBEloWgkXMk4hl/bmuPoicI4R0=
88+github.com/charmbracelet/x/exp/charmtone v0.0.0-20250603201427-c31516f43444/go.mod h1:T9jr8CzFpjhFVHjNjKwbAD7KwBNyFnj2pntAO7F2zw0=
8789github.com/charmbracelet/x/exp/golden v0.0.0-20250207160936-21c02780d27a h1:FsHEJ52OC4VuTzU8t+n5frMjLvpYWEznSr/u8tnkCYw=
8890github.com/charmbracelet/x/exp/golden v0.0.0-20250207160936-21c02780d27a/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
8991github.com/charmbracelet/x/exp/slice v0.0.0-20250611152503-f53cdd7e01ef h1:v7qwsZ2OxzlwvpKwz8dtZXp7fIJlcDEUOyFBNE4fz4Q=
@@ -166,6 +168,14 @@ github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwX
166168github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA=
167169github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
168170github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
171+github.com/muesli/mango v0.1.0 h1:DZQK45d2gGbql1arsYA4vfg4d7I9Hfx5rX/GCmzsAvI=
172+github.com/muesli/mango v0.1.0/go.mod h1:5XFpbC8jY5UUv89YQciiXNlbi+iJgt29VDC5xbzrLL4=
173+github.com/muesli/mango-cobra v1.2.0 h1:DQvjzAM0PMZr85Iv9LIMaYISpTOliMEg+uMFtNbYvWg=
174+github.com/muesli/mango-cobra v1.2.0/go.mod h1:vMJL54QytZAJhCT13LPVDfkvCUJ5/4jNUKF/8NC2UjA=
175+github.com/muesli/mango-pflag v0.1.0 h1:UADqbYgpUyRoBja3g6LUL+3LErjpsOwaC9ywvBWe7Sg=
176+github.com/muesli/mango-pflag v0.1.0/go.mod h1:YEQomTxaCUp8PrbhFh10UfbhbQrM/xJ4i2PB8VTLLW0=
177+github.com/muesli/roff v0.1.0 h1:YD0lalCotmYuF5HhZliKWlIx7IEhiXeSfq7hNjFqGF8=
178+github.com/muesli/roff v0.1.0/go.mod h1:pjAHQM9hdUUwm/krAfrLGgJkXJ+YuhtsfZ42kieB2Ig=
169179github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
170180github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
171181github.com/ncruces/go-sqlite3 v0.25.0 h1:trugKUs98Zwy9KwRr/EUxZHL92LYt7UqcKqAfpGpK+I=