diff --git a/website/src/docs/reference/cli.md b/website/src/docs/reference/cli.md index 47b5c7d1..11a72bf6 100644 --- a/website/src/docs/reference/cli.md +++ b/website/src/docs/reference/cli.md @@ -128,7 +128,8 @@ Disable fuzzy matching for task names. When enabled, Task will not suggest similar task names when you mistype a task name. - **Config equivalent**: [`disable-fuzzy`](./config.md#disable-fuzzy) -- **Environment variable**: [`TASK_DISABLE_FUZZY`](./environment.md#task-disable-fuzzy) +- **Environment variable**: + [`TASK_DISABLE_FUZZY`](./environment.md#task-disable-fuzzy) ```bash task buidl --disable-fuzzy @@ -180,7 +181,8 @@ task test lint --parallel Limit the number of concurrent tasks. Zero means unlimited. - **Config equivalent**: [`concurrency`](./config.md#concurrency) -- **Environment variable**: [`TASK_CONCURRENCY`](./environment.md#task-concurrency) +- **Environment variable**: + [`TASK_CONCURRENCY`](./environment.md#task-concurrency) ```bash task test --concurrency 4 @@ -248,7 +250,8 @@ task test --output group Message template to print before grouped output. -- **Environment variable**: [`TASK_OUTPUT_GROUP_BEGIN`](./environment.md#task-output-group-begin) +- **Environment variable**: + [`TASK_OUTPUT_GROUP_BEGIN`](./environment.md#task-output-group-begin) ```bash task test --output group --output-group-begin "::group::{{.TASK}}" @@ -258,7 +261,8 @@ task test --output group --output-group-begin "::group::{{.TASK}}" Message template to print after grouped output. -- **Environment variable**: [`TASK_OUTPUT_GROUP_END`](./environment.md#task-output-group-end) +- **Environment variable**: + [`TASK_OUTPUT_GROUP_END`](./environment.md#task-output-group-end) ```bash task test --output group --output-group-end "::endgroup::" @@ -268,7 +272,8 @@ task test --output group --output-group-end "::endgroup::" Only show command output on non-zero exit codes. -- **Environment variable**: [`TASK_OUTPUT_GROUP_ERROR_ONLY`](./environment.md#task-output-group-error-only) +- **Environment variable**: + [`TASK_OUTPUT_GROUP_ERROR_ONLY`](./environment.md#task-output-group-error-only) ```bash task test --output group --output-group-error-only @@ -351,7 +356,8 @@ task build --watch --interval 1s Automatically answer "yes" to all prompts. -- **Environment variable**: [`TASK_ASSUME_YES`](./environment.md#task-assume-yes) +- **Environment variable**: + [`TASK_ASSUME_YES`](./environment.md#task-assume-yes) ```bash task deploy --yes @@ -366,12 +372,69 @@ Task automatically detects non-TTY environments (like CI pipelines) and skips prompts. This flag can also be set in `.taskrc.yml` to enable prompts by default. -- **Environment variable**: [`TASK_INTERACTIVE`](./environment.md#task-interactive) +- **Environment variable**: + [`TASK_INTERACTIVE`](./environment.md#task-interactive) ```bash task deploy --interactive ``` +### Remote + +The following flags are used to control the behavior of +[remote Taskfiles](../remote-taskfiles.md). + +#### `--insecure` + +Allow insecure connections when fetching remote Taskfiles. + +#### `--offline` + +Work in offline mode, preventing remote Taskfile fetching. + +#### `--download` + +Forces task to download remote Taskfiles and ignore any cached versions. + +#### `--timeout` + +Timeout duration for remote operations (e.g., '30s', '5m'). + +#### `--clear-cache` + +Wipe the cache of remote Taskfiles and checksums. + +#### `--expiry` + +Cache expiry duration for remote Taskfiles (e.g., '1h', '24h'). + +#### `--remote-cache-dir` + +Directory where remote Taskfiles are cached. Can be an absolute path (e.g., +`/var/cache/task`) or relative to the Taskfile directory. + +#### `--trusted-hosts` + +List of (comma-separated) trusted hosts for remote Taskfiles. Hosts in this list +will not prompt for confirmation when downloading Taskfiles. + +Hosts in the trusted hosts list will automatically be trusted without prompting +for confirmation when they are first downloaded or when their checksums change. +The host matching includes the port if specified in the URL. Use with caution +and only add hosts you fully trust. + +#### `--cacert` + +Path to a custom CA certificate file for TLS verification. + +#### `--cert` + +Path to a client certificate file for mTLS authentication. + +#### `--cert-key` + +Path to the client certificate private key file. + ## Exit Codes Task uses specific exit codes to indicate different types of errors: diff --git a/website/src/docs/reference/config.md b/website/src/docs/reference/config.md index 7222b713..81c21800 100644 --- a/website/src/docs/reference/config.md +++ b/website/src/docs/reference/config.md @@ -108,7 +108,8 @@ silent: true - **Type**: `boolean` - **Default**: `true` -- **Description**: Enable colored output. Colors are automatically enabled in CI environments (`CI=true`). +- **Description**: Enable colored output. Colors are automatically enabled in CI + environments (`CI=true`). - **CLI equivalent**: [`-c, --color`](./cli.md#-c---color) - **Environment variable**: [`TASK_COLOR`](./environment.md#task-color) @@ -120,9 +121,11 @@ color: false - **Type**: `boolean` - **Default**: `false` -- **Description**: Disable fuzzy matching for task names. When enabled, Task will not suggest similar task names when you mistype a task name. +- **Description**: Disable fuzzy matching for task names. When enabled, Task + will not suggest similar task names when you mistype a task name. - **CLI equivalent**: [`--disable-fuzzy`](./cli.md#--disable-fuzzy) -- **Environment variable**: [`TASK_DISABLE_FUZZY`](./environment.md#task-disable-fuzzy) +- **Environment variable**: + [`TASK_DISABLE_FUZZY`](./environment.md#task-disable-fuzzy) ```yaml disable-fuzzy: true @@ -134,7 +137,8 @@ disable-fuzzy: true - **Minimum**: `1` - **Description**: Number of concurrent tasks to run - **CLI equivalent**: [`-C, --concurrency`](./cli.md#-c---concurrency-number) -- **Environment variable**: [`TASK_CONCURRENCY`](./environment.md#task-concurrency) +- **Environment variable**: + [`TASK_CONCURRENCY`](./environment.md#task-concurrency) ```yaml concurrency: 4 @@ -158,8 +162,8 @@ failfast: true - **Default**: `false` - **Description**: Prompt for missing required variables instead of failing. When enabled, Task will display an interactive prompt for any missing required - variable. Requires a TTY. Task automatically detects non-TTY environments - (CI pipelines, etc.) and skips prompts. + variable. Requires a TTY. Task automatically detects non-TTY environments (CI + pipelines, etc.) and skips prompts. - **CLI equivalent**: [`--interactive`](./cli.md#--interactive) ```yaml @@ -178,6 +182,157 @@ interactive: true temp-dir: .task ``` +### `remote` + +- **Type**: `object` +- **Description**: Remote configuration settings for handling + [remote Taskfiles](../remote-taskfiles.md). + +#### `remote.insecure` + +- **Type**: `boolean` +- **Default**: `false` +- **Description**: Allow insecure connections when fetching remote Taskfiles +- **CLI equivalent**: `--insecure` +- **Environment variable**: + [`TASK_REMOTE_INSECURE`](./environment.md#task_remote_insecure) + +```yaml +remote: + insecure: true +``` + +#### `remote.offline` + +- **Type**: `boolean` +- **Default**: `false` +- **Description**: Work in offline mode, preventing remote Taskfile fetching +- **CLI equivalent**: `--offline` +- **Environment variable**: + [`TASK_REMOTE_OFFLINE`](./environment.md#task_remote_offline) + +```yaml +remote: + offline: true +``` + +#### `remote.timeout` + +- **Type**: `string` +- **Default**: 10s +- **Pattern**: `^[0-9]+(ns|us|µs|ms|s|m|h)$` +- **Description**: Timeout duration for remote operations (e.g., '30s', '5m') +- **CLI equivalent**: `--timeout` +- **Environment variable**: + [`TASK_REMOTE_TIMEOUT`](./environment.md#task_remote_timeout) + +```yaml +remote: + timeout: '1m' +``` + +#### `remote.cache-expiry` + +- **Type**: `string` +- **Default**: 0s (no cache) +- **Pattern**: `^[0-9]+(ns|us|µs|ms|s|m|h)$` +- **Description**: Cache expiry duration for remote Taskfiles (e.g., '1h', + '24h') +- **CLI equivalent**: `--expiry` +- **Environment variable**: + [`TASK_REMOTE_CACHE_EXPIRY`](./environment.md#task_remote_cache_expiry) + +```yaml +remote: + cache-expiry: '6h' +``` + +#### `remote.cache-dir` + +- **Type**: `string` +- **Default**: `.task` +- **Description**: Directory where remote Taskfiles are cached. Can be an + absolute path (e.g., `/var/cache/task`) or relative to the Taskfile directory. +- **CLI equivalent**: `--remote-cache-dir` +- **Environment variable**: + [`TASK_REMOTE_CACHE_DIR`](./environment.md#task_remote_cache_dir) + +```yaml +remote: + cache-dir: ~/.task +``` + +#### `remote.trusted-hosts` + +- **Type**: `array of strings` +- **Default**: `[]` (empty list) +- **Description**: List of trusted hosts for remote Taskfiles. Hosts in this + list will not prompt for confirmation when downloading Taskfiles +- **CLI equivalent**: `--trusted-hosts` +- **Environment variable**: + [`TASK_REMOTE_TRUSTED_HOSTS`](./environment.md#task_remote_trusted_hosts) + (comma-separated) + +```yaml +remote: + trusted-hosts: + - github.com + - gitlab.com + - raw.githubusercontent.com + - example.com:8080 +``` + +Hosts in the trusted hosts list will automatically be trusted without prompting +for confirmation when they are first downloaded or when their checksums change. +The host matching includes the port if specified in the URL. Use with caution +and only add hosts you fully trust. + +You can also specify trusted hosts via the command line: + +```shell +# Trust specific host for this execution +task --trusted-hosts github.com -t https://github.com/user/repo.git//Taskfile.yml + +# Trust multiple hosts (comma-separated) +task --trusted-hosts github.com,gitlab.com -t https://github.com/user/repo.git//Taskfile.yml + +# Trust a host with a specific port +task --trusted-hosts example.com:8080 -t https://example.com:8080/Taskfile.yml +``` + +#### `remote.cacert` + +- **Type**: `string` +- **Default**: `""` +- **Description**: Path to a custom CA certificate file for TLS verification + +```yaml +remote: + cacert: '/path/to/ca.crt' +``` + +#### `remote.cert` + +- **Type**: `string` +- **Default**: `""` +- **Description**: Path to a client certificate file for mTLS authentication + +```yaml +remote: + cert: '/path/to/client.crt' +``` + +#### `remote.cert-key` + +- **Type**: `string` +- **Default**: `""` +- **Description**: Path to the client certificate private key file + +```yaml +remote: + cert-key: '/path/to/client.key' +``` + ## Example Configuration Here's a complete example of a `.taskrc.yml` file with all available options: @@ -190,7 +345,20 @@ color: true disable-fuzzy: false concurrency: 2 temp-dir: .task +remote: + insecure: false + offline: false + timeout: '30s' + cache-expiry: '24h' + cache-dir: ~/.task + trusted-hosts: + - github.com + - gitlab.com + cacert: '' + cert: '' + cert-key: '' # Enable experimental features experiments: - REMOTE_TASKFILES: 1 + GENTLE_FORCE: 1 +``` diff --git a/website/src/docs/reference/environment.md b/website/src/docs/reference/environment.md index e5fdf42a..87bc29c7 100644 --- a/website/src/docs/reference/environment.md +++ b/website/src/docs/reference/environment.md @@ -20,7 +20,8 @@ their configuration file equivalents. ## Variables All [configuration file options](./config.md) can also be set via environment -variables. The priority order is: CLI flags > environment variables > config files > defaults. +variables. The priority order is: CLI flags > environment variables > config +files > defaults. ### `TASK_VERBOSE` @@ -67,7 +68,8 @@ variables. The priority order is: CLI flags > environment variables > config fil - **Type**: `boolean` (`true`, `false`, `1`, `0`) - **Default**: `false` -- **Description**: Compiles and prints tasks in the order that they would be run, without executing them +- **Description**: Compiles and prints tasks in the order that they would be + run, without executing them ### `TASK_ASSUME_YES` @@ -92,14 +94,16 @@ variables. The priority order is: CLI flags > environment variables > config fil - **Type**: `string` - **Description**: Message template to print before a task's grouped output. Only applies when the output style is `group`. -- **CLI equivalent**: [`--output-group-begin`](./cli.md#--output-group-begin-template) +- **CLI equivalent**: + [`--output-group-begin`](./cli.md#--output-group-begin-template) ### `TASK_OUTPUT_GROUP_END` - **Type**: `string` -- **Description**: Message template to print after a task's grouped output. - Only applies when the output style is `group`. -- **CLI equivalent**: [`--output-group-end`](./cli.md#--output-group-end-template) +- **Description**: Message template to print after a task's grouped output. Only + applies when the output style is `group`. +- **CLI equivalent**: + [`--output-group-end`](./cli.md#--output-group-end-template) ### `TASK_OUTPUT_GROUP_ERROR_ONLY` @@ -107,7 +111,8 @@ variables. The priority order is: CLI flags > environment variables > config fil - **Default**: `false` - **Description**: Swallow output from successful tasks. Only applies when the output style is `group`. -- **CLI equivalent**: [`--output-group-error-only`](./cli.md#--output-group-error-only) +- **CLI equivalent**: + [`--output-group-error-only`](./cli.md#--output-group-error-only) ### `TASK_TEMP_DIR` @@ -118,16 +123,64 @@ Taskfile, not the working directory. Defaults to: `./.task`. ### `TASK_CORE_UTILS` -This env controls whether the Bash interpreter will use its own -core utilities implemented in Go, or the ones available in the system. -Valid values are `true` (`1`) or `false` (`0`). By default, this is `true` on -Windows and `false` on other operating systems. We might consider making this -enabled by default on all platforms in the future. +This env controls whether the Bash interpreter will use its own core utilities +implemented in Go, or the ones available in the system. Valid values are `true` +(`1`) or `false` (`0`). By default, this is `true` on Windows and `false` on +other operating systems. We might consider making this enabled by default on all +platforms in the future. ### `FORCE_COLOR` Force color output usage. +## Remote Taskfile Variables + +The following variables are used to control the behavior of +[remote Taskfiles](../remote-taskfiles.md). + +### `TASK_REMOTE_INSECURE` + +Allow insecure connections when fetching remote Taskfiles. + +### `TASK_REMOTE_OFFLINE` + +Work in offline mode, preventing remote Taskfile fetching. + +### `TASK_REMOTE_TIMEOUT` + +Timeout duration for remote operations (e.g., '30s', '5m'). + +### `TASK_REMOTE_CACHE_EXPIRY` + +Cache expiry duration for remote Taskfiles (e.g., '1h', '24h'). + +### `TASK_REMOTE_CACHE_DIR` + +Directory where remote Taskfiles are cached. Can be an absolute path (e.g., +`/var/cache/task`) or relative to the Taskfile directory. + +### `TASK_REMOTE_TRUSTED_HOSTS` + +List of (comma-separated) trusted hosts for remote Taskfiles. Hosts in this list +will not prompt for confirmation when downloading Taskfiles. + +Hosts in the trusted hosts list will automatically be trusted without prompting +for confirmation when they are first downloaded or when their checksums change. +The host matching includes the port if specified in the URL. Use with caution +and only add hosts you fully trust. + +### `TASK_REMOTE_CACERT` + +Path to a custom CA certificate file for TLS verification. + +### `TASK_REMOTE_CERT` + +Path to a client certificate file for mTLS authentication. + +### `TASK_REMOTE_CERT_KEY` + +Path to the client certificate private key file. + ### Custom Colors All color variables are [ANSI color codes][ansi]. You can specify multiple codes