From 149f6fe2339f717b95dfde699af420828b352104 Mon Sep 17 00:00:00 2001 From: Stephen Rosen Date: Thu, 18 Jan 2024 12:05:49 -0600 Subject: [PATCH] refactor: dedent JSON Schema 'definitions' The default git diff algorithm isn't great at showing this because it incorrectly matches some closing blocks against other, distant, closing blocks. But this is all just a two-space dedent. --- docs/static/schema.json | 978 ++++++++++++++++++++-------------------- 1 file changed, 489 insertions(+), 489 deletions(-) diff --git a/docs/static/schema.json b/docs/static/schema.json index c2085d27..2bb4e469 100644 --- a/docs/static/schema.json +++ b/docs/static/schema.json @@ -3,525 +3,525 @@ "title": "Taskfile YAML Schema", "description": "Schema for Taskfile files.", "definitions": { - "env": { - "$ref": "#/definitions/vars" - }, - "tasks": { - "type": "object", - "patternProperties": { - "^.*$": { - "anyOf": [ + "env": { + "$ref": "#/definitions/vars" + }, + "tasks": { + "type": "object", + "patternProperties": { + "^.*$": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/task_call" + } + ] + } + }, + { + "$ref": "#/definitions/task" + } + ] + } + } + }, + "task": { + "type": "object", + "additionalProperties": false, + "properties": { + "cmds": { + "description": "A list of commands to be executed.", + "$ref": "#/definitions/cmds" + }, + "cmd": { + "description": "The command to be executed.", + "$ref": "#/definitions/cmd" + }, + "deps": { + "description": "A list of dependencies of this task. Tasks defined here will run in parallel before this task.", + "type": "array", + "items": { + "oneOf": [ { "type": "string" }, { - "type": "array", - "items": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/task_call" - } - ] - } - }, - { - "$ref": "#/definitions/task" + "$ref": "#/definitions/task_call" } ] } + }, + "label": { + "description": "Overrides the name of the task in the output when a task is run. Supports variables.", + "type": "string" + }, + "desc": { + "description": "A short description of the task. This is displayed when calling `task --list`.", + "type": "string" + }, + "prompt": { + "description": "A prompt that will be presented before a task is run. Declining will cancel running the current and any subsequent tasks.", + "type": "string" + }, + "summary": { + "description": "A longer description of the task. This is displayed when calling `task --summary [task]`.", + "type": "string" + }, + "aliases": { + "description": "A list of alternative names by which the task can be called.", + "type": "array", + "items": { + "type": "string" + } + }, + "sources": { + "description": "A list of sources to check before running this task. Relevant for `checksum` and `timestamp` methods. Can be file paths or star globs.", + "type": "array", + "items": { + "$ref": "#/definitions/glob" + } + }, + "generates": { + "description": "A list of files meant to be generated by this task. Relevant for `timestamp` method. Can be file paths or star globs.", + "type": "array", + "items": { + "$ref": "#/definitions/glob" + } + }, + "status": { + "description": "A list of commands to check if this task should run. The task is skipped otherwise. This overrides `method`, `sources` and `generates`.", + "type": "array", + "items": { + "type": "string" + } + }, + "preconditions": { + "description": "A list of commands to check if this task should run. If a condition is not met, the task will error.", + "type": "array", + "items": { + "$ref": "#/definitions/precondition" + } + }, + "dir": { + "description": "The directory in which this task should run. Defaults to the current working directory.", + "type": "string" + }, + "set": { + "description": "Enables POSIX shell options for all of a task's commands. See https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html", + "type": "array", + "items": { + "$ref": "#/definitions/set" + } + }, + "shopt": { + "description": "Enables Bash shell options for all of a task's commands. See https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html", + "type": "array", + "items": { + "$ref": "#/definitions/shopt" + } + }, + "vars": { + "description": "A set of variables that can be used in the task.", + "$ref": "#/definitions/vars" + }, + "env": { + "description": "A set of environment variables that will be made available to shell commands.", + "$ref": "#/definitions/env" + }, + "dotenv": { + "description": "A list of `.env` file paths to be parsed.", + "type": "array", + "items": { + "type": "string" + } + }, + "silent": { + "description": "Hides task name and command from output. The command's output will still be redirected to `STDOUT` and `STDERR`. When combined with the `--list` flag, task descriptions will be hidden.", + "type": "boolean", + "default": false + }, + "interactive": { + "description": "Tells task that the command is interactive.", + "type": "boolean", + "default": false + }, + "internal": { + "description": "Stops a task from being callable on the command line. It will also be omitted from the output when used with `--list`.", + "type": "boolean", + "default": false + }, + "method": { + "description": "Defines which method is used to check the task is up-to-date. `timestamp` will compare the timestamp of the sources and generates files. `checksum` will check the checksum (You probably want to ignore the .task folder in your .gitignore file). `none` skips any validation and always run the task.", + "type": "string", + "enum": ["none", "checksum", "timestamp"], + "default": "none" + }, + "prefix": { + "description": "Defines a string to prefix the output of tasks running in parallel. Only used when the output mode is `prefixed`.", + "type": "string" + }, + "ignore_error": { + "description": "Continue execution if errors happen while executing commands.", + "type": "boolean" + }, + "run": { + "description": "Specifies whether the task should run again or not if called more than once. Available options: `always`, `once` and `when_changed`.", + "$ref": "#/definitions/run" + }, + "platforms": { + "description": "Specifies which platforms the task should be run on.", + "type": "array", + "items": { + "type": "string" + } + }, + "requires": { + "description": "A list of variables which should be set if this task is to run, if any of these variables are unset the task will error and not run", + "$ref": "#/definitions/requires_obj" + }, + "watch": { + "description": "Configures a task to run in watch mode automatically.", + "type": "boolean", + "default": false + } + } + }, + "cmds": { + "type": "array", + "items": { + "$ref": "#/definitions/cmd" + } + }, + "cmd": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/cmd_call" + }, + { + "$ref": "#/definitions/task_call" + }, + { + "$ref": "#/definitions/defer_call" + }, + { + "$ref": "#/definitions/for_call" + } + ] + }, + "set": { + "type": "string", + "enum": [ + "allexport", + "a", + "errexit", + "e", + "noexec", + "n", + "noglob", + "f", + "nounset", + "u", + "xtrace", + "x", + "pipefail" + ] + }, + "shopt": { + "type": "string", + "enum": ["expand_aliases", "globstar", "nullglob"] + }, + "vars": { + "type": "object", + "patternProperties": { + "^.*$": { + "anyOf": [ + { + "type": ["boolean", "integer", "null", "number", "string", "object", "array"] + }, + { + "$ref": "#/definitions/var_subkey" + } + ] + } + } + }, + "var_subkey": { + "type": "object", + "properties": { + "sh": { + "type": "string", + "description": "The value will be treated as a command and the output assigned to the variable" + }, + "ref": { + "type": "string", + "description": "The value will be used to lookup the value of another variable which will then be assigned to this variable" + }, + "map": { + "type": "object", + "description": "The value will be treated as a literal map type and stored in the variable" + }, + "json": { + "type": "string", + "description": "The value will parsed as a JSON string and stored in the variable" + }, + "yaml": { + "type": "string", + "description": "The value will parsed as a YAML string and stored in the variable" + }, + "additionalProperties": false + } + }, + "task_call": { + "type": "object", + "properties": { + "task": { + "description": "Name of the task to run", + "type": "string" + }, + "vars": { + "description": "Values passed to the task called", + "$ref": "#/definitions/vars" + }, + "silent": { + "description": "Hides task name and command from output. The command's output will still be redirected to `STDOUT` and `STDERR`.", + "type": "boolean" } }, - "task": { - "type": "object", - "additionalProperties": false, - "properties": { - "cmds": { - "description": "A list of commands to be executed.", - "$ref": "#/definitions/cmds" - }, - "cmd": { - "description": "The command to be executed.", - "$ref": "#/definitions/cmd" - }, - "deps": { - "description": "A list of dependencies of this task. Tasks defined here will run in parallel before this task.", - "type": "array", - "items": { - "oneOf": [ - { + "additionalProperties": false, + "required": ["task"] + }, + "cmd_call": { + "type": "object", + "properties": { + "cmd": { + "description": "Command to run", + "type": "string" + }, + "silent": { + "description": "Silent mode disables echoing of command before Task runs it", + "type": "boolean" + }, + "set": { + "description": "Enables POSIX shell options for this command. See https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html", + "type": "array", + "items": { + "$ref": "#/definitions/set" + } + }, + "shopt": { + "description": "Enables Bash shell options for this command. See https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html", + "type": "array", + "items": { + "$ref": "#/definitions/shopt" + } + }, + "ignore_error": { + "description": "Prevent command from aborting the execution of task even after receiving a status code of 1", + "type": "boolean" + }, + "platforms": { + "description": "Specifies which platforms the command should be run on.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "required": ["cmd"] + }, + "defer_call": { + "type": "object", + "properties": { + "defer": { + "description": "Run a command when the task completes. This command will run even when the task fails", + "anyOf": [ + "string", + { + "type": "object", + "properties": { + "task": { + "description": "Name of the task to defer", "type": "string" - }, - { - "$ref": "#/definitions/task_call" } - ] - } - }, - "label": { - "description": "Overrides the name of the task in the output when a task is run. Supports variables.", - "type": "string" - }, - "desc": { - "description": "A short description of the task. This is displayed when calling `task --list`.", - "type": "string" - }, - "prompt": { - "description": "A prompt that will be presented before a task is run. Declining will cancel running the current and any subsequent tasks.", - "type": "string" - }, - "summary": { - "description": "A longer description of the task. This is displayed when calling `task --summary [task]`.", - "type": "string" - }, - "aliases": { - "description": "A list of alternative names by which the task can be called.", - "type": "array", - "items": { - "type": "string" - } - }, - "sources": { - "description": "A list of sources to check before running this task. Relevant for `checksum` and `timestamp` methods. Can be file paths or star globs.", - "type": "array", - "items": { - "$ref": "#/definitions/glob" - } - }, - "generates": { - "description": "A list of files meant to be generated by this task. Relevant for `timestamp` method. Can be file paths or star globs.", - "type": "array", - "items": { - "$ref": "#/definitions/glob" - } - }, - "status": { - "description": "A list of commands to check if this task should run. The task is skipped otherwise. This overrides `method`, `sources` and `generates`.", - "type": "array", - "items": { - "type": "string" - } - }, - "preconditions": { - "description": "A list of commands to check if this task should run. If a condition is not met, the task will error.", - "type": "array", - "items": { - "$ref": "#/definitions/precondition" - } - }, - "dir": { - "description": "The directory in which this task should run. Defaults to the current working directory.", - "type": "string" - }, - "set": { - "description": "Enables POSIX shell options for all of a task's commands. See https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html", - "type": "array", - "items": { - "$ref": "#/definitions/set" - } - }, - "shopt": { - "description": "Enables Bash shell options for all of a task's commands. See https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html", - "type": "array", - "items": { - "$ref": "#/definitions/shopt" - } - }, - "vars": { - "description": "A set of variables that can be used in the task.", - "$ref": "#/definitions/vars" - }, - "env": { - "description": "A set of environment variables that will be made available to shell commands.", - "$ref": "#/definitions/env" - }, - "dotenv": { - "description": "A list of `.env` file paths to be parsed.", - "type": "array", - "items": { - "type": "string" - } - }, - "silent": { - "description": "Hides task name and command from output. The command's output will still be redirected to `STDOUT` and `STDERR`. When combined with the `--list` flag, task descriptions will be hidden.", - "type": "boolean", - "default": false - }, - "interactive": { - "description": "Tells task that the command is interactive.", - "type": "boolean", - "default": false - }, - "internal": { - "description": "Stops a task from being callable on the command line. It will also be omitted from the output when used with `--list`.", - "type": "boolean", - "default": false - }, - "method": { - "description": "Defines which method is used to check the task is up-to-date. `timestamp` will compare the timestamp of the sources and generates files. `checksum` will check the checksum (You probably want to ignore the .task folder in your .gitignore file). `none` skips any validation and always run the task.", - "type": "string", - "enum": ["none", "checksum", "timestamp"], - "default": "none" - }, - "prefix": { - "description": "Defines a string to prefix the output of tasks running in parallel. Only used when the output mode is `prefixed`.", - "type": "string" - }, - "ignore_error": { - "description": "Continue execution if errors happen while executing commands.", - "type": "boolean" - }, - "run": { - "description": "Specifies whether the task should run again or not if called more than once. Available options: `always`, `once` and `when_changed`.", - "$ref": "#/definitions/run" - }, - "platforms": { - "description": "Specifies which platforms the task should be run on.", - "type": "array", - "items": { - "type": "string" - } - }, - "requires": { - "description": "A list of variables which should be set if this task is to run, if any of these variables are unset the task will error and not run", - "$ref": "#/definitions/requires_obj" - }, - "watch": { - "description": "Configures a task to run in watch mode automatically.", - "type": "boolean", - "default": false - } - } - }, - "cmds": { - "type": "array", - "items": { - "$ref": "#/definitions/cmd" - } - }, - "cmd": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/cmd_call" - }, - { - "$ref": "#/definitions/task_call" - }, - { - "$ref": "#/definitions/defer_call" - }, - { - "$ref": "#/definitions/for_call" - } - ] - }, - "set": { - "type": "string", - "enum": [ - "allexport", - "a", - "errexit", - "e", - "noexec", - "n", - "noglob", - "f", - "nounset", - "u", - "xtrace", - "x", - "pipefail" - ] - }, - "shopt": { - "type": "string", - "enum": ["expand_aliases", "globstar", "nullglob"] - }, - "vars": { - "type": "object", - "patternProperties": { - "^.*$": { - "anyOf": [ - { - "type": ["boolean", "integer", "null", "number", "string", "object", "array"] }, - { - "$ref": "#/definitions/var_subkey" - } - ] - } + "additionalProperties": false + } + ] } }, - "var_subkey": { - "type": "object", - "properties": { - "sh": { - "type": "string", - "description": "The value will be treated as a command and the output assigned to the variable" - }, - "ref": { - "type": "string", - "description": "The value will be used to lookup the value of another variable which will then be assigned to this variable" - }, - "map": { - "type": "object", - "description": "The value will be treated as a literal map type and stored in the variable" - }, - "json": { - "type": "string", - "description": "The value will parsed as a JSON string and stored in the variable" - }, - "yaml": { - "type": "string", - "description": "The value will parsed as a YAML string and stored in the variable" - }, - "additionalProperties": false + "additionalProperties": false, + "required": ["defer"] + }, + "for_call": { + "type": "object", + "properties": { + "for": { + "anyOf": [ + { + "$ref": "#/definitions/for_list" + }, + { + "$ref": "#/definitions/for_attribute" + }, + { + "$ref": "#/definitions/for_var" + } + ] + }, + "cmd": { + "description": "Command to run", + "type": "string" + }, + "silent": { + "description": "Silent mode disables echoing of command before Task runs it", + "type": "boolean" + }, + "task": { + "description": "Task to run", + "type": "string" + }, + "vars": { + "description": "Values passed to the task called", + "$ref": "#/definitions/vars" } }, - "task_call": { - "type": "object", - "properties": { - "task": { - "description": "Name of the task to run", - "type": "string" - }, - "vars": { - "description": "Values passed to the task called", - "$ref": "#/definitions/vars" - }, - "silent": { - "description": "Hides task name and command from output. The command's output will still be redirected to `STDOUT` and `STDERR`.", - "type": "boolean" - } + "oneOf": [ + {"required": ["cmd"]}, + {"required": ["task"]} + ], + "additionalProperties": false, + "required": ["for"] + }, + "for_list": { + "description": "A list of values to iterate over", + "type": "array", + "items": { + "type": "string" + } + }, + "for_attribute": { + "description": "The task attribute to iterate over", + "type": "string", + "enum": ["sources"] + }, + "for_var": { + "description": "Which variables to iterate over. The variable will be split using any whitespace character by default. This can be changed by using the `split` attribute.", + "type": "object", + "properties": { + "var": { + "description": "Name of the variable to iterate over", + "type": "string" }, - "additionalProperties": false, - "required": ["task"] - }, - "cmd_call": { - "type": "object", - "properties": { - "cmd": { - "description": "Command to run", - "type": "string" - }, - "silent": { - "description": "Silent mode disables echoing of command before Task runs it", - "type": "boolean" - }, - "set": { - "description": "Enables POSIX shell options for this command. See https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html", - "type": "array", - "items": { - "$ref": "#/definitions/set" - } - }, - "shopt": { - "description": "Enables Bash shell options for this command. See https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html", - "type": "array", - "items": { - "$ref": "#/definitions/shopt" - } - }, - "ignore_error": { - "description": "Prevent command from aborting the execution of task even after receiving a status code of 1", - "type": "boolean" - }, - "platforms": { - "description": "Specifies which platforms the command should be run on.", - "type": "array", - "items": { - "type": "string" - } - } + "split": { + "description": "String to split the variable on", + "type": "string" }, - "additionalProperties": false, - "required": ["cmd"] - }, - "defer_call": { - "type": "object", - "properties": { - "defer": { - "description": "Run a command when the task completes. This command will run even when the task fails", - "anyOf": [ - "string", - { - "type": "object", - "properties": { - "task": { - "description": "Name of the task to defer", - "type": "string" - } - }, - "additionalProperties": false - } - ] - } - }, - "additionalProperties": false, - "required": ["defer"] - }, - "for_call": { - "type": "object", - "properties": { - "for": { - "anyOf": [ - { - "$ref": "#/definitions/for_list" - }, - { - "$ref": "#/definitions/for_attribute" - }, - { - "$ref": "#/definitions/for_var" - } - ] - }, - "cmd": { - "description": "Command to run", - "type": "string" - }, - "silent": { - "description": "Silent mode disables echoing of command before Task runs it", - "type": "boolean" - }, - "task": { - "description": "Task to run", - "type": "string" - }, - "vars": { - "description": "Values passed to the task called", - "$ref": "#/definitions/vars" - } - }, - "oneOf": [ - {"required": ["cmd"]}, - {"required": ["task"]} - ], - "additionalProperties": false, - "required": ["for"] - }, - "for_list": { - "description": "A list of values to iterate over", - "type": "array", - "items": { + "as": { + "description": "What the loop variable should be named", + "default": "ITEM", "type": "string" } }, - "for_attribute": { - "description": "The task attribute to iterate over", - "type": "string", - "enum": ["sources"] - }, - "for_var": { - "description": "Which variables to iterate over. The variable will be split using any whitespace character by default. This can be changed by using the `split` attribute.", - "type": "object", - "properties": { - "var": { - "description": "Name of the variable to iterate over", - "type": "string" - }, - "split": { - "description": "String to split the variable on", - "type": "string" - }, - "as": { - "description": "What the loop variable should be named", - "default": "ITEM", - "type": "string" - } + "additionalProperties": false, + "required": ["var"] + }, + "precondition": { + "anyOf": [ + { + "type": "string" }, - "additionalProperties": false, - "required": ["var"] - }, - "precondition": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/precondition_obj" - } - ] - }, - "precondition_obj": { - "type": "object", - "properties": { - "sh": { - "description": "Command to run. If that command returns 1, the condition will fail", - "type": "string" - }, - "msg": { - "description": "Failure message to display when the condition fails", - "type": "string" - } + { + "$ref": "#/definitions/precondition_obj" } - }, - "glob": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/glob_obj" - } - ] - }, - "glob_obj": { - "type": "object", - "properties": { - "exclude": { - "description": "File or glob patter to exclude from the list", - "type": "string" - } + ] + }, + "precondition_obj": { + "type": "object", + "properties": { + "sh": { + "description": "Command to run. If that command returns 1, the condition will fail", + "type": "string" + }, + "msg": { + "description": "Failure message to display when the condition fails", + "type": "string" } - }, - "run": { - "type": "string", - "enum": ["always", "once", "when_changed"] - }, - "outputString": { - "type": "string", - "enum": ["interleaved", "prefixed", "group"], - "default": "interleaved" - }, - "outputObject": { - "type": "object", - "properties": { - "group": { - "type": "object", - "properties": { - "begin": { - "type": "string" - }, - "end": { - "type": "string" - }, - "error_only": { - "description": "Swallows command output on zero exit code", - "type": "boolean", - "default": false - } - } - } + } + }, + "glob": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/glob_obj" } - }, - "requires_obj": { - "type": "object", - "properties": { - "vars": { - "description": "List of variables that must be defined for the task to run", - "type": "array", - "items": { + ] + }, + "glob_obj": { + "type": "object", + "properties": { + "exclude": { + "description": "File or glob patter to exclude from the list", + "type": "string" + } + } + }, + "run": { + "type": "string", + "enum": ["always", "once", "when_changed"] + }, + "outputString": { + "type": "string", + "enum": ["interleaved", "prefixed", "group"], + "default": "interleaved" + }, + "outputObject": { + "type": "object", + "properties": { + "group": { + "type": "object", + "properties": { + "begin": { "type": "string" + }, + "end": { + "type": "string" + }, + "error_only": { + "description": "Swallows command output on zero exit code", + "type": "boolean", + "default": false } } } } + }, + "requires_obj": { + "type": "object", + "properties": { + "vars": { + "description": "List of variables that must be defined for the task to run", + "type": "array", + "items": { + "type": "string" + } + } + } + } }, "allOf": [ {