From 35e765daa7e93c2e62d4899386d94328eb0a7b70 Mon Sep 17 00:00:00 2001 From: task-bot <106601941+task-bot@users.noreply.github.com> Date: Fri, 10 Mar 2023 19:29:45 +0000 Subject: [PATCH] deploy: 8717c4c287f9a8b88fe1f30b2c5e9db941e198c2 --- 404.html | 4 +- api/index.html | 4 +- ...hema-06f52dcf5370d360caaab692289f8af1.json | 483 ------------------ assets/js/4d54d076.5e69e92c.js | 1 + assets/js/4d54d076.69d2ff66.js | 1 - ...n.fef98170.js => runtime~main.66e6a9d2.js} | 2 +- changelog/index.html | 4 +- community/index.html | 4 +- contributing/index.html | 21 +- donate/index.html | 4 +- faq/index.html | 4 +- index.html | 4 +- installation/index.html | 4 +- releasing/index.html | 4 +- search/index.html | 4 +- styleguide/index.html | 4 +- taskfile-versions/index.html | 4 +- usage/index.html | 4 +- 18 files changed, 38 insertions(+), 522 deletions(-) delete mode 100644 assets/files/schema-06f52dcf5370d360caaab692289f8af1.json create mode 100644 assets/js/4d54d076.5e69e92c.js delete mode 100644 assets/js/4d54d076.69d2ff66.js rename assets/js/{runtime~main.fef98170.js => runtime~main.66e6a9d2.js} (98%) diff --git a/404.html b/404.html index f8d2fc97..efc83e9e 100644 --- a/404.html +++ b/404.html @@ -10,13 +10,13 @@ - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- + \ No newline at end of file diff --git a/api/index.html b/api/index.html index c1a01f70..1457d379 100644 --- a/api/index.html +++ b/api/index.html @@ -10,7 +10,7 @@ - + @@ -20,7 +20,7 @@ variable

ShortFlagTypecmds and everything else will be set to their default values:

tasks:
foo: echo "foo"

foobar:
- echo "foo"
- echo "bar"

baz:
cmd: echo "baz"

Dependency

AttributeTypeDefaultDescription
taskstringThe task to be execute as a dependency.
varsmap[string]VariableOptional additional variables to be passed to this task.
tip

If you don't want to set additional variables, it's enough to declare the dependency as a list of strings (they will be assigned to task):

tasks:
foo:
deps: [foo, bar]

Command

AttributeTypeDefaultDescription
cmdstringThe shell command to be executed.
silentboolfalseSkips some output for this command. Note that STDOUT and STDERR of the commands will still be redirected.
taskstringSet this to trigger execution of another task instead of running a command. This cannot be set together with cmd.
varsmap[string]VariableOptional additional variables to be passed to the referenced task. Only relevant when setting task instead of cmd.
ignore_errorboolfalseContinue execution if errors happen while executing the command.
deferstringAlternative to cmd, but schedules the command to be executed at the end of this task instead of immediately. This cannot be used together with cmd.
platforms[]stringAll platformsSpecifies which platforms the command should be run on. Valid GOOS and GOARCH values allowed. Command will be skipped otherwise.
set[]stringSpecify options for the set builtin.
shopt[]stringSpecify option for the shopt builtin.
info

If given as a a string, the value will be assigned to cmd:

tasks:
foo:
cmds:
- echo "foo"
- echo "bar"

Variable

AttributeTypeDefaultDescription
itselfstringA static value that will be set to the variable.
shstringA shell command. The output (STDOUT) will be assigned to the variable.
info

Static and dynamic variables have different syntaxes, like below:

vars:
STATIC: static
DYNAMIC:
sh: echo "dynamic"

Precondition

AttributeTypeDefaultDescription
shstringCommand to be executed. If a non-zero exit code is returned, the task errors without executing its commands.
msgstringOptional message to print if the precondition isn't met.
tip

If you don't want to set a different message, you can declare a precondition like this and the value will be assigned to sh:

tasks:
foo:
precondition: test -f Taskfile.yml
- + \ No newline at end of file diff --git a/assets/files/schema-06f52dcf5370d360caaab692289f8af1.json b/assets/files/schema-06f52dcf5370d360caaab692289f8af1.json deleted file mode 100644 index 0ac75eb2..00000000 --- a/assets/files/schema-06f52dcf5370d360caaab692289f8af1.json +++ /dev/null @@ -1,483 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "title": "Taskfile YAML Schema", - "description": "Schema for Taskfile files.", - "definitions": { - "3": { - "env": { - "$ref": "#/definitions/3/vars" - }, - "tasks": { - "type": "object", - "patternProperties": { - "^.*$": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "oneOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/3/task_call" - } - ] - } - }, - { - "$ref": "#/definitions/3/task" - } - ] - } - } - }, - "task": { - "type": "object", - "additionalProperties": false, - "properties": { - "cmds": { - "description": "A list of commands to be executed.", - "$ref": "#/definitions/3/cmds" - }, - "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" - }, - { - "$ref": "#/definitions/3/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" - }, - "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": { - "type": "string" - } - }, - "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": { - "type": "string" - } - }, - "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/3/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/3/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/3/shopt" - } - }, - "vars": { - "description": "A set of variables that can be used in the task.", - "$ref": "#/definitions/3/vars" - }, - "env": { - "description": "A set of environment variables that will be made available to shell commands.", - "$ref": "#/definitions/3/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/3/run" - }, - "platforms": { - "description": "Specifies which platforms the task should be run on.", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "cmds": { - "type": "array", - "items": { - "$ref": "#/definitions/3/cmd" - } - }, - "cmd": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/3/cmd_call" - }, - { - "$ref": "#/definitions/3/task_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"] - }, - { - "$ref": "#/definitions/3/dynamic_var" - } - ] - } - } - }, - "dynamic_var": { - "type": "object", - "properties": { - "sh": { - "type": "string", - "description": "The value will be treated as a command and the output assigned" - }, - "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/3/vars" - } - } - }, - "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/3/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/3/shopt" - } - }, - "ignore_error": { - "description": "Prevent command from aborting the execution of task even after receiving a status code of 1", - "type": "boolean" - }, - "defer": { - "description": "", - "type": "boolean" - }, - "platforms": { - "description": "Specifies which platforms the command should be run on.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "required": ["cmd"] - }, - "precondition": { - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "#/definitions/3/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" - } - } - }, - "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 - } - } - } - } - } - } - }, - "allOf": [ - { - "type": "object", - "properties": { - "version": { - "description": "Specify the Taskfile format that this file conforms to.", - "anyOf": [ - { - "type": "number", - "enum": [3] - }, - { - "type": "string", - "enum": ["3"] - } - ] - }, - "output": { - "description": "Defines how the STDOUT and STDERR are printed when running tasks in parallel. The interleaved output prints lines in real time (default). The group output will print the entire output of a command once, after it finishes, so you won't have live feedback for commands that take a long time to run. The prefix output will prefix every line printed by a command with [task-name] as the prefix, but you can customize the prefix for a command with the prefix: attribute.", - "anyOf": [ - {"$ref": "#/definitions/3/outputString"}, - {"$ref": "#/definitions/3/outputObject"} - ] - }, - "method": { - "description": "Defines which method is used to check the task is up-to-date. (default: checksum)", - "type": "string", - "enum": ["none", "checksum", "timestamp"], - "default": "checksum" - }, - "includes": { - "description": "Imports tasks from the specified taskfiles. The tasks described in the given Taskfiles will be available with the informed namespace.", - "type": "object", - "patternProperties": { - "^.*$": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "object", - "properties": { - "taskfile": { - "description": "The path for the Taskfile or directory to be included. If a directory, Task will look for files named `Taskfile.yml` or `Taskfile.yaml` inside that directory. If a relative path, resolved relative to the directory containing the including Taskfile.", - "type": "string" - }, - "dir": { - "description": "The working directory of the included tasks when run.", - "type": "string" - }, - "optional": { - "description": "If `true`, no errors will be thrown if the specified file does not exist.", - "type": "boolean" - }, - "internal": { - "description": "Stops any task in the included Taskfile from being callable on the command line. These commands will also be omitted from the output when used with `--list`.", - "type": "boolean" - }, - "aliases": { - "description": "Alternative names for the namespace of the included Taskfile.", - "type": "array", - "items": { - "type": "string" - } - }, - "vars": { - "description": "A set of variables to apply to the included Taskfile.", - "$ref": "#/definitions/3/vars" - } - } - } - ] - } - } - }, - "vars": { - "description": "A set of global variables.", - "$ref": "#/definitions/3/vars" - }, - "env": { - "description": "A set of global environment variables.", - "$ref": "#/definitions/3/env" - }, - "tasks": { - "description": "A set of task definitions.", - "$ref": "#/definitions/3/tasks" - }, - "silent": { - "description": "Default 'silent' options for this Taskfile. If `false`, can be overidden with `true` in a task by task basis.", - "type": "boolean" - }, - "set": { - "description": "Enables POSIX shell options for all commands in the Taskfile. See https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html", - "type": "array", - "items": { - "$ref": "#/definitions/3/set" - } - }, - "shopt": { - "description": "Enables Bash shell options for all commands in the Taskfile. See https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html", - "type": "array", - "items": { - "$ref": "#/definitions/3/shopt" - } - }, - "dotenv": { - "type": "array", - "description": "A list of `.env` file paths to be parsed.", - "items": { - "type": "string" - } - }, - "run": { - "description": "Default 'run' option for this Taskfile. Available options: `always`, `once` and `when_changed`.", - "$ref": "#/definitions/3/run" - }, - "interval": { - "description": "Sets a different watch interval when using `--watch`, the default being 5 seconds. This string should be a valid Go duration: https://pkg.go.dev/time#ParseDuration.", - "type": "string", - "pattern": "^[0-9]+(?:m|s|ms)$" - } - }, - "additionalProperties": false, - "required": ["version"], - "anyOf": [ - { - "required": ["includes"] - }, - { - "required": ["tasks"] - }, - { - "required": ["includes", "tasks"] - } - ] - } - ] -} diff --git a/assets/js/4d54d076.5e69e92c.js b/assets/js/4d54d076.5e69e92c.js new file mode 100644 index 00000000..c2ded498 --- /dev/null +++ b/assets/js/4d54d076.5e69e92c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunktaskfile_dev=self.webpackChunktaskfile_dev||[]).push([[80],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return h}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var u=a.createContext({}),l=function(e){var t=a.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=l(e.components);return a.createElement(u.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,u=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=l(n),m=r,h=d["".concat(u,".").concat(m)]||d[m]||p[m]||i;return n?a.createElement(h,o(o({ref:t},c),{},{components:n})):a.createElement(h,o({ref:t},c))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[d]="string"==typeof e?e:r,o[1]=s;for(var l=2;l "),"."),(0,r.kt)("h3",{id:"updating-documentation"},"Updating documentation"),(0,r.kt)("p",null,"Task uses ",(0,r.kt)("a",{parentName:"p",href:"https://docusaurus.io"},"Docusaurus")," to host a documentation server. This can be setup and run\nlocally by using ",(0,r.kt)("inlineCode",{parentName:"p"},"task docs")," (requires ",(0,r.kt)("inlineCode",{parentName:"p"},"nodejs")," & ",(0,r.kt)("inlineCode",{parentName:"p"},"yarn"),"). All content is\nwritten in Markdown and is located in the ",(0,r.kt)("inlineCode",{parentName:"p"},"docs/docs")," directory. All Markdown\ndocuments should have an 80 character line wrap limit."),(0,r.kt)("p",null,"When making a change, consider whether a change to the ",(0,r.kt)("a",{parentName:"p",href:"/usage/"},"Usage Guide"),"\nis necessary. This document contains descriptions and examples of how to use\nTask features. If you're adding a new feature, try to find an appropriate place\nto add a new section. If you're updating an existing feature, ensure that the\ndocumentation and any examples are up-to-date. Ensure that any examples follow\nthe ",(0,r.kt)("a",{parentName:"p",href:"/styleguide/"},"Taskfile Styleguide"),"."),(0,r.kt)("p",null,"If you added a new field, command or flag, ensure that you add it to the ",(0,r.kt)("a",{parentName:"p",href:"/api/"},"API\nReference"),". New fields also need to be added to the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/go-task/task/blob/master/docs/static/schema.json"},"JSON Schema"),". The descriptions for fields in the API\nreference and the schema should match."),(0,r.kt)("h3",{id:"writing-tests"},"Writing tests"),(0,r.kt)("p",null,"Most of Task's test are held in the ",(0,r.kt)("inlineCode",{parentName:"p"},"task_test.go")," file in the project root and\nthis is where you'll most likely want to add new ones too. Most of these tests\nalso have a subdirectory in the ",(0,r.kt)("inlineCode",{parentName:"p"},"testdata")," directory where any Taskfiles/data\nrequired to run the tests are stored."),(0,r.kt)("p",null,"When making a changes, consider whether new tests are required. These tests\nshould ensure that the functionality you are adding will continue to work in the\nfuture. Existing tests may also need updating if you have changed Task's\nbehaviour."),(0,r.kt)("h2",{id:"3-committing-your-code"},"3. Committing your code"),(0,r.kt)("p",null,"Try to write meaningful commit messages and avoid having too many commits on\nthe PR. Most PRs should likely have a single commit (although for bigger PRs it\nmay be reasonable to split it in a few). Git squash and rebase is your friend!"),(0,r.kt)("h2",{id:"4-submitting-a-pr"},"4. Submitting a PR"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Describe your changes")," - Ensure that you provide a comprehensive\ndescription of your changes."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Issue/PR links")," - Link any previous work such as related issues or PRs.\nPlease describe how your changes differ to/extend this work."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Examples")," - Add any examples that you think are useful to demonstrate the\neffect of your changes."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Draft PRs")," - If your changes are incomplete, but you would like to discuss\nthem, open the PR as a draft and add a comment to start a discussion. Using\ncomments rather than the PR description allows the description to be updated\nlater while preserving any discussions.")),(0,r.kt)("h2",{id:"faq"},"FAQ"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"I want to contribute, where do I start?")),(0,r.kt)("p",null,"Take a look at the list of ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/go-task/task/issues"},"open issues"),". We have a ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/go-task/task/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22"},"good first issue")," label for\nsimpler issues that are ideal for first time contributions."),(0,r.kt)("p",null,"All kinds of contributions are welcome, whether its a typo fix or a shiny new\nfeature. You can also contribute by upvoting/commenting on issues, helping to\nanswer questions or contributing to other ",(0,r.kt)("a",{parentName:"p",href:"/community/"},"community projects"),"."),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"I'm stuck, where can I get help?")),(0,r.kt)("p",null,"If you have questions, feel free to ask them in the ",(0,r.kt)("inlineCode",{parentName:"p"},"#help")," forum channel on our\n",(0,r.kt)("a",{parentName:"p",href:"https://discord.gg/6TY36E39UK"},"Discord server")," or open a ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/go-task/task/discussions"},"Discussion")," on GitHub."),(0,r.kt)("hr",null))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4d54d076.69d2ff66.js b/assets/js/4d54d076.69d2ff66.js deleted file mode 100644 index 24d1e57b..00000000 --- a/assets/js/4d54d076.69d2ff66.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunktaskfile_dev=self.webpackChunktaskfile_dev||[]).push([[80],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return h}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var u=a.createContext({}),l=function(e){var t=a.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=l(e.components);return a.createElement(u.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,u=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=l(n),m=r,h=d["".concat(u,".").concat(m)]||d[m]||p[m]||i;return n?a.createElement(h,o(o({ref:t},c),{},{components:n})):a.createElement(h,o({ref:t},c))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[d]="string"==typeof e?e:r,o[1]=s;for(var l=2;l "),"."),(0,r.kt)("h3",{id:"updating-documentation"},"Updating documentation"),(0,r.kt)("p",null,"Task uses ",(0,r.kt)("a",{parentName:"p",href:"https://docusaurus.io"},"Docusaurus")," to host a documentation server. This can be setup and run\nlocally by using ",(0,r.kt)("inlineCode",{parentName:"p"},"task docs:setup")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"task docs:start")," respectively (requires\n",(0,r.kt)("inlineCode",{parentName:"p"},"nodejs")," & ",(0,r.kt)("inlineCode",{parentName:"p"},"yarn"),"). All content is written in Markdown and is located in the\n",(0,r.kt)("inlineCode",{parentName:"p"},"docs/docs")," directory. All Markdown documents should have an 80 character line\nwrap limit."),(0,r.kt)("p",null,"When making a change, consider whether a change to the ",(0,r.kt)("a",{parentName:"p",href:"/usage/"},"Usage Guide"),"\nis necessary. This document contains descriptions and examples of how to use\nTask features. If you're adding a new feature, try to find an appropriate place\nto add a new section. If you're updating an existing feature, ensure that the\ndocumentation and any examples are up-to-date. Ensure that any examples follow\nthe ",(0,r.kt)("a",{parentName:"p",href:"/styleguide/"},"Taskfile Styleguide"),"."),(0,r.kt)("p",null,"If you added a new field, command or flag, ensure that you add it to the ",(0,r.kt)("a",{parentName:"p",href:"/api/"},"API\nReference"),". New fields also need to be added to the\n",(0,r.kt)("a",{target:"_blank",href:n(3624).Z},"JSON Schema"),". The descriptions for fields in the API\nreference and the schema should match."),(0,r.kt)("h3",{id:"writing-tests"},"Writing tests"),(0,r.kt)("p",null,"Most of Task's test are held in the ",(0,r.kt)("inlineCode",{parentName:"p"},"task_test.go")," file in the project root and\nthis is where you'll most likely want to add new ones too. Most of these tests\nalso have a subdirectory in the ",(0,r.kt)("inlineCode",{parentName:"p"},"testdata")," directory where any Taskfiles/data\nrequired to run the tests are stored."),(0,r.kt)("p",null,"When making a changes, consider whether new tests are required. These tests\nshould ensure that the functionality you are adding will continue to work in the\nfuture. Existing tests may also need updating if you have changed Task's\nbehaviour."),(0,r.kt)("h2",{id:"3-committing-your-code"},"3. Committing your code"),(0,r.kt)("p",null,"Try to write meaningful commit messages and avoid having too many commits on\nthe PR. Most PRs should likely have a single commit (although for bigger PRs it\nmay be reasonable to split it in a few). Git squash and rebase is your friend!"),(0,r.kt)("h2",{id:"4-submitting-a-pr"},"4. Submitting a PR"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Describe your changes")," - Ensure that you provide a comprehensive\ndescription of your changes."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Issue/PR links")," - Link any previous work such as related issues or PRs.\nPlease describe how your changes differ to/extend this work."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Examples")," - Add any examples that you think are useful to demonstrate the\neffect of your changes."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Draft PRs")," - If your changes are incomplete, but you would like to discuss\nthem, open the PR as a draft and add a comment to start a discussion. Using\ncomments rather than the PR description allows the description to be updated\nlater while preserving any discussions.")),(0,r.kt)("h2",{id:"faq"},"FAQ"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"I want to contribute, where do I start?")),(0,r.kt)("p",null,"Take a look at the list of ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/go-task/task/issues"},"open issues"),". We have a ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/go-task/task/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22"},"good first issue")," label for\nsimpler issues that are ideal for first time contributions."),(0,r.kt)("p",null,"All kinds of contributions are welcome, whether its a typo fix or a shiny new\nfeature. You can also contribute by upvoting/commenting on issues, helping to\nanswer questions or contributing to other ",(0,r.kt)("a",{parentName:"p",href:"/community/"},"community projects"),"."),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"I'm stuck, where can I get help?")),(0,r.kt)("p",null,"If you have questions, feel free to ask them in the ",(0,r.kt)("inlineCode",{parentName:"p"},"#help")," channel on our\n",(0,r.kt)("a",{parentName:"p",href:"https://discord.gg/6TY36E39UK"},"Discord server"),"."),(0,r.kt)("hr",null))}d.isMDXComponent=!0},3624:function(e,t,n){t.Z=n.p+"assets/files/schema-06f52dcf5370d360caaab692289f8af1.json"}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.fef98170.js b/assets/js/runtime~main.66e6a9d2.js similarity index 98% rename from assets/js/runtime~main.fef98170.js rename to assets/js/runtime~main.66e6a9d2.js index bd851738..aa0401eb 100644 --- a/assets/js/runtime~main.fef98170.js +++ b/assets/js/runtime~main.66e6a9d2.js @@ -1 +1 @@ -!function(){"use strict";var e,t,n,r,o,f={},u={};function i(e){var t=u[e];if(void 0!==t)return t.exports;var n=u[e]={id:e,loaded:!1,exports:{}};return f[e].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=f,i.c=u,e=[],i.O=function(t,n,r,o){if(!n){var f=1/0;for(d=0;d=o)&&Object.keys(i.O).every((function(e){return i.O[e](n[c])}))?n.splice(c--,1):(u=!1,o0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[n,r,o]},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},i.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);i.r(o);var f={};t=t||[null,n({}),n([]),n(n)];for(var u=2&r&&e;"object"==typeof u&&!~t.indexOf(u);u=n(u))Object.getOwnPropertyNames(u).forEach((function(t){f[t]=function(){return e[t]}}));return f.default=function(){return e},i.d(o,f),o},i.d=function(e,t){for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.f={},i.e=function(e){return Promise.all(Object.keys(i.f).reduce((function(t,n){return i.f[n](e,t),t}),[]))},i.u=function(e){return"assets/js/"+({34:"9beb87c2",53:"935f2afb",80:"4d54d076",133:"f1d66b0d",217:"3b8c55ea",514:"1be78505",552:"0afd354a",582:"f7fd502c",595:"d0766b26",648:"3c140c84",671:"0e384e19",705:"7d415946",713:"1c56b476",827:"6476eba6",836:"0480b142",880:"5ef0e9d6",918:"17896441",920:"1a4e3797"}[e]||e)+"."+{34:"a7a97048",53:"fb2e82f0",80:"69d2ff66",133:"6862b446",217:"54339141",514:"c3290964",552:"e8bad103",582:"9b04f408",595:"c5627647",648:"b629b889",671:"649e4736",705:"6bf3701e",713:"658c49e2",780:"b979b06f",827:"03becc21",836:"098568bb",880:"bc3ff7f3",894:"4bf7d380",918:"22a90ead",920:"0724cc4c",945:"3694633c",972:"f5c2bd8c"}[e]+".js"},i.miniCssF=function(e){},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="taskfile-dev:",i.l=function(e,t,n,f){if(r[e])r[e].push(t);else{var u,c;if(void 0!==n)for(var a=document.getElementsByTagName("script"),d=0;d=o)&&Object.keys(i.O).every((function(e){return i.O[e](n[c])}))?n.splice(c--,1):(u=!1,o0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[n,r,o]},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},i.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);i.r(o);var f={};t=t||[null,n({}),n([]),n(n)];for(var u=2&r&&e;"object"==typeof u&&!~t.indexOf(u);u=n(u))Object.getOwnPropertyNames(u).forEach((function(t){f[t]=function(){return e[t]}}));return f.default=function(){return e},i.d(o,f),o},i.d=function(e,t){for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.f={},i.e=function(e){return Promise.all(Object.keys(i.f).reduce((function(t,n){return i.f[n](e,t),t}),[]))},i.u=function(e){return"assets/js/"+({34:"9beb87c2",53:"935f2afb",80:"4d54d076",133:"f1d66b0d",217:"3b8c55ea",514:"1be78505",552:"0afd354a",582:"f7fd502c",595:"d0766b26",648:"3c140c84",671:"0e384e19",705:"7d415946",713:"1c56b476",827:"6476eba6",836:"0480b142",880:"5ef0e9d6",918:"17896441",920:"1a4e3797"}[e]||e)+"."+{34:"a7a97048",53:"fb2e82f0",80:"5e69e92c",133:"6862b446",217:"54339141",514:"c3290964",552:"e8bad103",582:"9b04f408",595:"c5627647",648:"b629b889",671:"649e4736",705:"6bf3701e",713:"658c49e2",780:"b979b06f",827:"03becc21",836:"098568bb",880:"bc3ff7f3",894:"4bf7d380",918:"22a90ead",920:"0724cc4c",945:"3694633c",972:"f5c2bd8c"}[e]+".js"},i.miniCssF=function(e){},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="taskfile-dev:",i.l=function(e,t,n,f){if(r[e])r[e].push(t);else{var u,c;if(void 0!==n)for(var a=document.getElementsByTagName("script"),d=0;d