Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

## Effortless Go CLI apps

![demo](demo.gif)

`github.com/toaweme/cli` is a small, generics-based lib for building command-line apps where a command is just a struct.
Its flags, positional arguments, environment bindings, defaults, and validation rules are declared once as struct tags, and the module does the parsing, merging, validating, help, and dispatch.

Expand Down
Binary file added demo.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
293 changes: 293 additions & 0 deletions demo.tape
Original file line number Diff line number Diff line change
@@ -0,0 +1,293 @@
Output demo.gif
Set FontSize 16
Set Width 1000
Set Height 600
Set Padding 20
Set Theme Dracula

Hide
Type "unset PROMPT_COMMAND"
Enter
Type "cd /tmp/cli-demo"
Enter
Type "clear"
Enter
Show

Sleep 500ms
Type "# toaweme/cli - Effortless Go CLI apps"
Type "# Run these yourself from examples/ dir"
Sleep 1s
Enter
Sleep 1s

# --- Basic: help & info ---
Enter
Type "# 1. Basic app with built-in help"
Enter
Sleep 1s

Type "./bin/basic --help"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

Enter
Type "./bin/basic info"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

# --- Greet: positional args, flags, env ---
Type "# 2. Positional args, flags, and env binding"
Enter
Sleep 1s

Type "./bin/greet greet Ada"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

Enter
Type "./bin/greet greet Ada --shout"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

Enter
Type "./bin/greet greet Ada -s -r 3"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

Enter
Type "GREET_NAME=World ./bin/greet greet"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

Enter
Type "./bin/greet greet --help"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

# --- Deploy: subcommand trees ---
Enter
Type "# 3. Subcommand trees"
Enter
Sleep 1s

Type "./bin/deploy deploy"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

Enter
Type "./bin/deploy deploy staging v1.2.3"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

Enter
Type "./bin/deploy deploy production v1.2.3 --dry-run"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

# --- Full: build, serve, db, config ---
Type "# 4. Full-featured app: build, serve, subcommands"
Enter
Sleep 1s

Type "./bin/full --help"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

Enter
Type "./bin/full build"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

Enter
Type "./bin/full build -o ./dist --tags=integration,e2e --verbose"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

Enter
Type "./bin/full serve --help"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

Enter
Type "./bin/full serve --help --help-format=pretty"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

Enter
Type "./bin/full serve --help --help-format=md"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

# --- Secret masking ---
Enter
Type "# 5. Secret masking with --help-values"
Enter
Sleep 2s

Type "SERVER_TOKEN=sk-abc123secret ./bin/server start --help-values"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

# --- DB subcommands ---
Enter
Type "# 6. Nested subcommands"
Enter
Sleep 1s

Type "./bin/full db"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

Enter
Type "./bin/full db migrate -n 3"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

Enter
Type "./bin/full db migrate --dry-run"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

# --- Version ---
Enter
Type "# 7. Built-in version flag"
Enter
Sleep 1s

Type "./bin/full --version"
Sleep 500ms
Enter
Sleep 3s

Hide
Type "clear"
Enter
Show

# --- Outro ---
Enter
Type "# github.com/toaweme/cli"
Sleep 500ms
Enter
Sleep 3s