summaryrefslogtreecommitdiff
path: root/internal/app/app.go
diff options
context:
space:
mode:
authorBenjamin Chausse <benjamin@chausse.xyz>2025-03-26 17:28:58 -0400
committerGitHub <noreply@github.com>2025-03-26 17:28:58 -0400
commitd2fdcbc0d4f8b4c184ba2b1c3c4b00da3918521f (patch)
tree6f4ba628fffb5e6d84f2eaa756345d3307abab77 /internal/app/app.go
parentcd9338e0d6cf582f9ea8028661ac3729e408f3bf (diff)
Stylish `--help` + generate manpages (#27)v1.3.7
* man page generation * generate VHS Gifs manually * goreleaser packages manpage
Diffstat (limited to 'internal/app/app.go')
-rw-r--r--internal/app/app.go50
1 files changed, 50 insertions, 0 deletions
diff --git a/internal/app/app.go b/internal/app/app.go
new file mode 100644
index 0000000..d0b168d
--- /dev/null
+++ b/internal/app/app.go
@@ -0,0 +1,50 @@
+package app
+
+import (
+ "context"
+ _ "embed"
+ "log/slog"
+
+ "github.com/ChausseBenjamin/termpicker/internal/logging"
+ "github.com/ChausseBenjamin/termpicker/internal/switcher"
+ tea "github.com/charmbracelet/bubbletea"
+ "github.com/urfave/cli/v3"
+)
+
+//go:embed description.txt
+var Desc string
+
+func AppAction(ctx context.Context, cmd *cli.Command) error {
+ logfile := logging.Setup(cmd.String("logfile"))
+ defer logfile.Close()
+
+ slog.Info("Starting Termpicker")
+
+ sw := switcher.New()
+
+ if colorStr := cmd.String("color"); colorStr != "" {
+ sw.NewNotice(sw.SetColorFromText(colorStr))
+ }
+
+ p := tea.NewProgram(sw)
+ if _, err := p.Run(); err != nil {
+ return err
+ }
+ return nil
+}
+
+func Command(version string) *cli.Command {
+ cmd := &cli.Command{
+ Name: "termpicker",
+ Usage: "A terminal-based color picker",
+ Action: AppAction,
+ ArgsUsage: "",
+ Description: Desc,
+ Authors: []any{"Benjamin Chausse <benjamin@chausse.xyz>"},
+ Version: version,
+ Flags: AppFlags,
+ EnableShellCompletion: true,
+ }
+
+ return cmd
+}