# vstask
A command-line tool to run VS Code tasks from the terminal.
## Overview
`vstask` allows you to execute VS Code tasks defined in `.vscode/tasks.json` directly from the command line, without needing to open VS Code. It supports all the features of VS Code tasks including:
- Shell and process tasks
- Platform-specific configurations (Windows, Linux, macOS)
- Working directory changes (`cwd`)
- Environment variables
- Background tasks
- Variable substitution (e.g., `${workspaceFolder}`, `${env:VAR}`)
## Installation
### Using Cargo
If you have Rust installed, you can install `vstask` directly from crates.io:
```bash
cargo install vstask
```
This will install the binary to `~/.cargo/bin/` which should be in your PATH.
### From Source
```bash
cargo build --release
```
The binary will be available at `target/release/vstask`.
You can then copy it to a location in your PATH:
```bash
cp target/release/vstask ~/.local/bin/
# or
sudo cp target/release/vstask /usr/local/bin/
```
## Usage
### Run a Task
```bash
vstask "Task Name"
```
### List All Available Tasks
```bash
vstask --list
# or
vstask -l
```
### Run Without Arguments
Running `vstask` without any arguments will display a list of available tasks:
```bash
vstask
```
## Shell Completion
### Zsh
Add the following to your `~/.zshrc` for dynamic task name completion:
```zsh
# --- vstask Dynamic Completion ---
compinit
_vstask_tasks_completion() {
# Read JSON task list into array
local -a tasks
tasks=("${(@f)$(vstask --json 2>/dev/null | jq -r '.[]')}")
# Add task names to Zsh's completion list.
_describe 'vstask tasks' tasks
}
compdef _vstask_tasks_completion vstask
```
After adding this, reload your shell configuration:
```zsh
source ~/.zshrc
```
Now you can use tab completion when typing task names:
```zsh
vstask <TAB>
```
HINT: Use `"` if the tasks contain spaces for the auto complete to display without the escape character.
## Requirements
- A `.vscode/tasks.json` file in your project directory
- Rust 1.70+ (for building from source)
## License
- MIT License
- Apache License, Version 2.0