# Watch Finished CLI A Node.js CLI for interacting with the Watch Finished system. Provides commands for managing files, settings, tasks, and maintenance from the terminal. ## CLI Command Structure ```mermaid graph TD CLI[watch-finished-cli] --> INTER[Interactive Mode
Default] CLI --> DIRECT[Direct Commands] INTER --> MENU[Menu-Driven Interface
Guided prompts] DIRECT --> HELP[--help
Command reference] DIRECT --> FILES[File Commands] DIRECT --> TASKS[Task Commands] DIRECT --> CONFIG[Config Commands] DIRECT --> WATCHER[Watcher Commands] DIRECT --> MAINT[Maintenance Commands] FILES --> FLIST[files:list
List dataset files] FILES --> FGET[file:get
Get file details] FILES --> FSET[file:set
Create/update file] FILES --> FREMOVE[file:remove
Delete file] FILES --> FDELETED[files:deleted-older-than
Find old deleted files] TASKS --> TLIST[task:list
List all tasks] TASKS --> TGET[task:get
Get task details] TASKS --> TREMOVE[task:remove
Delete task] TASKS --> TSETTINGS[task:queue-settings
Update queue config] CONFIG --> CLIST[config:list
List all settings] CONFIG --> CGET[config:get
Get setting value] CONFIG --> CSET[config:set
Update setting] WATCHER --> WSTATUS[watcher:status
Get watcher status] WATCHER --> WSTART[watcher:start
Start file watching] WATCHER --> WSTOP[watcher:stop
Stop file watching] MAINT --> MCLEANUP[maintenance:cleanup
Clean up files] MAINT --> MPURGE[maintenance:purge
Purge old data] MAINT --> MPRUNE[maintenance:prune
Remove orphaned files] style INTER fill:#e3f2fd style DIRECT fill:#f3e5f5 style FILES fill:#e8f5e8 style TASKS fill:#fff3e0 style CONFIG fill:#fce4ec style WATCHER fill:#f1f8e9 style MAINT fill:#e0f2f1 ``` ## Usage ```sh pnpm run cli [...args] ``` **Note:** The CLI defaults to connecting to `http://localhost:3001`. If your service runs on a different port, set the `WATCH_FINISHED_API` environment variable: ```sh WATCH_FINISHED_API=http://localhost:3000 pnpm run cli ``` ## Interactive Mode The CLI launches in **interactive mode by default** for a guided, menu-driven experience. Use specific commands for automation or pass `--help` for command-line usage. ```sh # Interactive mode (default) pnpm run cli # Command-line mode for automation pnpm run cli task:list # Show help pnpm run cli --help ``` The interactive mode provides: - **Menu-driven navigation** through all available commands - **Guided parameter input** with prompts and validation - **Contextual help** and error handling - **Colored output** for better readability ## Main Commands ## Main Commands ### File Management - `list --dataset ` — List files in a dataset - `file:get --dataset --file ` — Get a file record - `file:set --dataset --file [options]` — Set (create/update) a file record - `file:remove --dataset --file [options]` — Remove a file record - `files:deleted-older-than --dataset --isoDate ` — Get deleted files older than a date ### Configuration - `config:list` — List available config files - `config:settings [key]` — Get settings (optionally by key) - `config:file --name ` — Get a config file by name ### Task Management - `task:list` — List all tasks - `task:get --id ` — Get a task by ID - `task:delete --id ` — Delete a task by ID - `task:queue:status` — Get queue status - `task:queue:settings` — Get queue settings - `task:queue:settings:update [options]` — Update queue settings ### Watcher Control - `watcher:start [options]` — Start the watcher - `watcher:stop` — Stop the watcher - `watcher:status` — Get watcher status ### Maintenance - `maintenance:cleanup [options]` — Cleanup a file from DB if missing - `maintenance:purge [options]` — Purge deleted records older than a threshold - `maintenance:prune [options]` — Prune processed files that no longer exist ### HandBrake - `handbrake:presets` — List HandBrake presets - `handbrake:process [options]` — Process a video file with HandBrake ## Task Queue Settings Options When updating queue settings with `task:queue:settings:update`, you can specify: - `--batch-size ` — Number of tasks to process in each batch - `--concurrency ` — Maximum number of concurrent tasks - `--retry-enabled ` — Enable/disable retry logic - `--max-retries ` — Maximum number of retry attempts - `--retry-delay ` — Delay between retry attempts - `--processing-interval ` — Interval between processing cycles ## Examples ```sh # List all tasks (uses default localhost:3001) pnpm run cli task:list # Get current queue settings pnpm run cli task:queue:settings # Update queue settings (increase batch size and concurrency) pnpm run cli task:queue:settings:update --batch-size 5 --concurrency 3 # Start the file watcher pnpm run cli watcher:start --watches "/data/movies,/data/tvshows" # Process a video file pnpm run cli handbrake:process --input input.mp4 --output output.m4v --preset "Fast 1080p30" # Get settings pnpm run cli config:settings # Add a file record pnpm run cli file:set --dataset movies --file mymovie.mkv --output mymovie.mp4 --status completed # Launch interactive mode (also the default when no command is specified) pnpm run cli # If your service runs on a different port, set the environment variable WATCH_FINISHED_API=http://localhost:3000 pnpm run cli task:list ``` ## Running in Docker When running the CLI from within a Docker container: ```sh docker-compose exec service pnpm run cli task:list ```