# 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
The CLI is the default entrypoint for the Docker container, making it easy to run CLI commands:
```sh
# Interactive CLI (default when running container)
docker-compose run --rm app
# Direct CLI commands
docker-compose run --rm app files:list --dataset movies
docker-compose run --rm app task:list
docker-compose run --rm app config:get datasets
# Run development servers instead
docker-compose run --rm app pnpm dev
```
When running the CLI from within a running Docker container:
```sh
docker-compose exec app pnpm run cli task:list
```