76a9e7a0cc
Automation / Format (push) Waiting to run
Automation / File Labeler (push) Waiting to run
Automation / Gemini Reviewed (push) Waiting to run
Coverage / Coverage (push) Waiting to run
Publish OpenClaw Skills / publish (push) Has been cancelled
Audit / Security Audit (push) Has been cancelled
Automation / Gemini Review (push) Has been cancelled
CI / Detect Changes (push) Has been cancelled
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (ubuntu-latest) (push) Has been cancelled
CI / Nix (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Cargo Deny (push) Has been cancelled
CI / Verify Skills (push) Has been cancelled
CI / Lint Skills (push) Has been cancelled
CI / Build (Linux x86_64) (push) Has been cancelled
CI / Build (macos-latest, aarch64-apple-darwin) (push) Has been cancelled
CI / Build (macos-latest, x86_64-apple-darwin) (push) Has been cancelled
CI / Build (ubuntu-latest, aarch64-unknown-linux-gnu) (push) Has been cancelled
CI / Build (windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
CI / API Smoketest (push) Has been cancelled
Policy / Policy Check (push) Has been cancelled
Release (Changeset) / Release (push) Has been cancelled
198 lines
5.1 KiB
VHS
198 lines
5.1 KiB
VHS
# GWS CLI — README Demo
|
|
# Run: vhs docs/demo.tape
|
|
#
|
|
# All cosmetic sleeps minimized. API sleeps kept for responses.
|
|
# Single line commands for reliability.
|
|
|
|
Output docs/demo.mp4
|
|
Output docs/demo.gif
|
|
|
|
Set Shell "bash"
|
|
Set FontSize 18
|
|
Set Width 800
|
|
Set Height 500
|
|
Set TypingSpeed 1ms
|
|
Set Padding 30
|
|
Set LineHeight 1.3
|
|
|
|
# ── Setup (hidden) ──
|
|
Hide
|
|
# Mock gemini CLI for deterministic demo
|
|
Type 'function gemini() { echo "Why do Java developers wear glasses? Because they don'"'"'t C#."; }' Enter
|
|
Type "export -f gemini" Enter
|
|
Type "export PATH=$PWD/target/release:$PWD/target/debug:$PATH" Enter
|
|
Type "set -e" Enter
|
|
Sleep 1s
|
|
Type `DEMO=$(gws drive files create --json '{"name":"gws-demo","mimeType":"application/vnd.google-apps.folder"}' | jq -r '.id')` Enter
|
|
Sleep 3s
|
|
Type `gws drive files create --json "{\"name\":\"meeting-notes.md\",\"mimeType\":\"text/markdown\",\"parents\":[\"$DEMO\"]}" > /dev/null` Enter
|
|
Sleep 2s
|
|
Type `gws drive files create --json "{\"name\":\"quarterly-report.csv\",\"mimeType\":\"text/csv\",\"parents\":[\"$DEMO\"]}" > /dev/null` Enter
|
|
Sleep 2s
|
|
Type `gws drive files create --json "{\"name\":\"project-roadmap.md\",\"mimeType\":\"text/markdown\",\"parents\":[\"$DEMO\"]}" > /dev/null` Enter
|
|
Sleep 2s
|
|
Type `Q="'$DEMO' in parents"` Enter
|
|
Sleep 500ms
|
|
Type "clear" Enter
|
|
Sleep 1s
|
|
Show
|
|
|
|
# ╔══════════════════════════════════════╗
|
|
# ║ ASCII ART INTRO ║
|
|
# ╚══════════════════════════════════════╝
|
|
|
|
Hide
|
|
Type "./scripts/show-art.sh art/intro.txt" Enter
|
|
Sleep 1s
|
|
Show
|
|
Sleep 1s
|
|
|
|
# ── Scene 1: What is gws? ──
|
|
Hide
|
|
Type "./scripts/show-art.sh art/scene1.txt" Enter
|
|
Sleep 1s
|
|
Show
|
|
Sleep 4s
|
|
|
|
# ── Scene 2: Discover all services ──
|
|
Hide
|
|
Type "./scripts/show-art.sh art/scene2.txt" Enter
|
|
Sleep 1s
|
|
Show
|
|
Sleep 1s
|
|
|
|
Type "gws --help 2>&1 | head -40" Enter
|
|
Sleep 4s
|
|
|
|
# ── Scene 2b: Inspect Drive resources ──
|
|
Hide
|
|
Type "./scripts/show-art.sh art/scene2b.txt" Enter
|
|
Sleep 1s
|
|
Show
|
|
Sleep 1s
|
|
|
|
Type "gws drive --help 2>&1 | head -40" Enter
|
|
Sleep 4s
|
|
|
|
# ── Scene 3: Schema introspection ──
|
|
Hide
|
|
Type "./scripts/show-art.sh art/scene3.txt" Enter
|
|
Sleep 1s
|
|
Show
|
|
Sleep 1s
|
|
|
|
Type "gws schema drive.files.list | head -15" Enter
|
|
Sleep 3s
|
|
|
|
# ── Scene 3b: Inspect JSON Schemas ──
|
|
Hide
|
|
Type "./scripts/show-art.sh art/scene3b.txt" Enter
|
|
Sleep 1s
|
|
Show
|
|
Sleep 1s
|
|
|
|
Type "gws schema drive.File | head -20" Enter
|
|
Sleep 3s
|
|
|
|
Type "gws schema drive.File --resolve-refs | head -30" Enter
|
|
Sleep 5s
|
|
|
|
# ── Scene 4: List files in a folder ──
|
|
Hide
|
|
Type "./scripts/show-art.sh art/scene4.txt" Enter
|
|
Sleep 1s
|
|
Show
|
|
Sleep 1s
|
|
|
|
Type "gws drive files list"
|
|
Type ` --params "{\"q\":\"$Q\",\"fields\":\"files(name,mimeType)\"}"` Enter
|
|
Sleep 3s
|
|
|
|
# ── Scene 5: Upload a file ──
|
|
Hide
|
|
Type "./scripts/show-art.sh art/scene5.txt" Enter
|
|
Sleep 1s
|
|
Show
|
|
Sleep 1s
|
|
|
|
Type "echo '# Notes' > /tmp/notes.md" Enter
|
|
Sleep 500ms
|
|
|
|
Type "gws drive files create"
|
|
Type ` --json '{"name":"notes.md","mimeType":"text/markdown"}'`
|
|
Type " --upload /tmp/notes.md" Enter
|
|
Sleep 3s
|
|
|
|
# ── Scene 6: Gmail labels ──
|
|
Hide
|
|
Type "./scripts/show-art.sh art/scene6.txt" Enter
|
|
Sleep 1s
|
|
Show
|
|
Sleep 1s
|
|
|
|
Type "JOKE=$(gemini 'tell me a joke')" Enter
|
|
Sleep 1s
|
|
|
|
Type `MSG=$(echo -e "To: justin@example.com\nSubject: joke of the day\n\n$JOKE" | base64 | tr -d '\n' | tr '+/' '-_' | tr -d '=')` Enter
|
|
|
|
Type "gws gmail users messages send"
|
|
Type ` --params '{"userId":"me"}'`
|
|
Type ` --json "{\"raw\":\"$MSG\"}"`
|
|
Type " | jq ." Enter
|
|
Sleep 3s
|
|
|
|
# ── Scene 7: Calendar event ──
|
|
Hide
|
|
Type "./scripts/show-art.sh art/scene7.txt" Enter
|
|
Sleep 1s
|
|
Show
|
|
Sleep 1s
|
|
|
|
Type "gws calendar events insert"
|
|
Type ` --params '{"calendarId":"primary"}'`
|
|
Type ` --json '{"summary":"Ship v1.0 🚀","start":{"dateTime":"2024-06-17T10:00:00-07:00"},"end":{"dateTime":"2024-06-17T10:30:00-07:00"}}'`
|
|
Type " | jq . | head -15" Enter
|
|
Sleep 3s
|
|
|
|
# ── Scene 8: Sheets automation ──
|
|
Hide
|
|
Type "./scripts/show-art.sh art/scene8.txt" Enter
|
|
Sleep 1s
|
|
Show
|
|
Sleep 1s
|
|
|
|
Type "gws sheets spreadsheets values append"
|
|
Type ` --params '{"spreadsheetId":"1izmtvgBC4NuxHhABFX6descuB6-SXTm3g7c6LYBngJQ","range":"Sheet1!A1","valueInputOption":"USER_ENTERED"}'`
|
|
Type ` --json '{"values":[["Deploy","v1.0","=NOW()"]]}'` Enter
|
|
Sleep 3s
|
|
|
|
# ── Scene 9: Auto-pagination ──
|
|
Hide
|
|
Type "./scripts/show-art.sh art/scene9.txt" Enter
|
|
Sleep 1s
|
|
Show
|
|
Sleep 1s
|
|
|
|
Type "gws drive files list"
|
|
Type " --params '" Sleep 50ms
|
|
Type@30ms '{"pageSize":2,"fields":"nextPageToken,files(id)"}' Sleep 50ms
|
|
Type "'"
|
|
Type " --page-all"
|
|
Type " | jq -r '.files[]?.id'" Enter
|
|
Sleep 6s
|
|
|
|
# ╔══════════════════════════════════════╗
|
|
# ║ OUTRO ║
|
|
# ╚══════════════════════════════════════╝
|
|
|
|
Hide
|
|
Type "./scripts/show-art.sh art/outro.txt" Enter
|
|
Sleep 1s
|
|
Show
|
|
Sleep 1s
|
|
|
|
# ── Cleanup (hidden) ──
|
|
Hide
|
|
Type `gws drive files delete --params "{\"fileId\":\"$DEMO\"}" > /dev/null 2>&1` Enter
|
|
Sleep 3s
|