The <code>cmds</code> attribute should contain the commands of a task.
The example below allows compiling a Go app and uses <ahref="https://github.com/tdewolff/minify/tree/master/cmd/minify"target="_blank"rel="noopener noreferrer">Minify</a> to concat
and minify multiple CSS files into a single one.</p><divclass="language-yaml codeBlockContainer_MPoW theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_B9tL"><pretabindex="0"class="prism-code language-yaml codeBlock__0OG thin-scrollbar"><codeclass="codeBlockLines_gEuF"><spanclass="token-line"style="color:#393A34"><spanclass="token key atrule"style="color:#00a4db">version</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token string"style="color:#e3116c">'3'</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">tasks</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">build</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> go build </span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">v </span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">i main.go</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">assets</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> minify </span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">o public/style.css src/css</span><br></span></code></pre><divclass="buttonGroup_hRr1"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_W9eQ"aria-hidden="true"><svgclass="copyButtonIcon_XEyF"viewBox="0 0 24 24"><pathd="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgclass="copyButtonSuccessIcon_i9w9"viewBox="0 0 24 24"><pathd="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Running the tasks is as simple as running:</p><divclass="language-bash codeBlockContainer_MPoW theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_B9tL"><pretabindex="0"class="prism-code language-bash codeBlock__0OG thin-scrollbar"><codeclass="codeBlockLines_gEuF"><spanclass="token-line"style="color:#393A34"><spanclass="token plain">task assets build</span><br></span></code></pre><divclass="buttonGroup_hRr1"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_W9eQ"aria-hidden="true"><svgclass="copyButtonIcon_
Windows, where <code>sh</code> or <code>bash</code> are usually not available. Just remember any
executable called must be available by the OS or in PATH.</p><p>If you omit a task name, "default" will be assumed.</p><h2class="anchor anchorWithStickyNavbar_mojV"id="supported-file-names">Supported file names<aclass="hash-link"href="#supported-file-names"title="Direct link to heading"></a></h2><p>Task will look for the following file names, in order of priority:</p><ul><li>Taskfile.yml</li><li>Taskfile.yaml</li><li>Taskfile.dist.yml</li><li>Taskfile.dist.yaml</li></ul><p>The intention of having the <code>.dist</code> variants is to allow projects to have one
committed version (<code>.dist</code>) while still allowing individual users to override
the Taskfile by adding an additional <code>Taskfile.yml</code> (which would be on
just like variables, as you can see in the <ahref="#variables">Variables</a> section.</p></div></div><h3class="anchor anchorWithStickyNavbar_mojV"id="env-files">.env files<aclass="hash-link"href="#env-files"title="Direct link to heading"></a></h3><p>You can also ask Task to include <code>.env</code> like files by using the <code>dotenv:</code>
the importing mechanism to include other Taskfiles using the <code>includes</code> keyword:</p><divclass="language-yaml codeBlockContainer_MPoW theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_B9tL"><pretabindex="0"class="prism-code language-yaml codeBlock__0OG thin-scrollbar"><codeclass="codeBlockLines_gEuF"><spanclass="token-line"style="color:#393A34"><spanclass="token key atrule"style="color:#00a4db">version</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token string"style="color:#e3116c">'3'</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">includes</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">docs</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"> ./documentation </span><spanclass="token comment"style="color:#999988;font-style:italic"># will look for ./documentation/Taskfile.yml</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">docker</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"> ./DockerTasks.yml</span><br></span></code></pre><divclass="buttonGroup_hRr1"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_W9eQ"aria-hidden="true"><svgclass="copyButtonIcon_XEyF"viewBox="0 0 24 24"><pathd="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgclass="copyButtonSuccessIcon_i9w9"viewBox="0 0 24 24"><pathd="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The tasks described in the given Taskfiles will be available with the informed
namespace. So, you'd call <code>task docs:serve</code> to run the <code>serve</code> task from
<code>documentation/Taskfile.yml</code> or <code>task docker:build</code> to run the <code>build</code> task
from the <code>DockerTasks.yml</code> file.</p><p>Relative paths are resolved relative to the directory containing the including Taskfile.</p><h3class="anchor anchorWithStickyNavbar_mojV"id="os-specific-taskfiles">OS-specific Taskfiles<aclass="hash-link"href="#os-specific-taskfiles"title="Direct link to heading"></a></h3><p>With <code>version: '2'</code>, task automatically includes any <code>Taskfile_{{OS}}.yml</code>
Taskfile uses.</p></div></div><h3class="anchor anchorWithStickyNavbar_mojV"id="optional-includes">Optional includes<aclass="hash-link"href="#optional-includes"title="Direct link to heading"></a></h3><p>Includes marked as optional will allow Task to continue execution as normal if
the included file is missing.</p><divclass="language-yaml codeBlockContainer_MPoW theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_B9tL"><pretabindex="0"class="prism-code language-yaml codeBlock__0OG thin-scrollbar"><codeclass="codeBlockLines_gEuF"><spanclass="token-line"style="color:#393A34"><spanclass="token key atrule"style="color:#00a4db">version</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token string"style="color:#e3116c">'3'</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">includes</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">tests</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">taskfile</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"> ./tests/Taskfile.yml</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">optional</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token boolean important"style="color:#36acaa">true</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">tasks</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">greet</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> echo "This command can still be successfully executed if ./tests/Taskfile.yml does not exist"</span><br></span></code></pre><divclass="buttonGroup_hRr1"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_W9eQ"aria-hidden="true"><svgclass="copyButtonIcon_XEyF"viewBox="0 0 24 24"><pathd="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgclass="copyButtonSuccessIcon_i9w9"viewBox="0 0 24 24"><pathd="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3class="anchor anchorWithStickyNavbar_mojV"id="vars-of-included-taskfiles">Vars of included Taskfiles<aclass="hash-link"href="#vars-of-included-taskfiles"title="Direct link to heading"></a></h3><p>You can also specify variables when including a Taskfile. This may be useful
for having reusable Taskfile that can be tweaked or even included more than once:</p><divclass="language-yaml codeBlockContainer_MPoW theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_B9tL"><pretabindex="0"class="prism-code language-yaml codeBlock__0OG thin-scrollbar"><codeclass="codeBlockLines_gEuF"><spanclass="token-line"style="color:#393A34"><spanclass="token key atrule"style="color:#00a4db">version</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token string"style="color:#e3116c">'3'</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">includes</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">backend</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">taskfile</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"> ./taskfiles/Docker.yml</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">vars</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">DOCKER_IMAGE</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"> backend_image</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">frontend</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">taskfile</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"> ./taskfiles/Docker.yml</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">vars</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">DOCKER_IMAGE</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"> frontend_image</span><br></span></code></pre><divclass="buttonGroup_hRr1"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_W9eQ"aria-hidden="true"><svgclass="copyButtonIcon_XEyF"viewBox="0 0 24 24"><pathd="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgclass="copyButtonSuccessIcon_i9w9"viewBox="0 0 24 24"><pathd="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><divclass="admonition admonition-info alert alert--info"><divclass="admonition-heading"><h5><spanclass="admonition-icon"><svgxmlns="http://www.w3.org/2000/svg"width="14"height="16"viewBox="0 0 14 16"><pathfil
use the <ahref="https://go-task.github.io/slim-sprig/defaults.html"target="_blank"rel="noopener noreferrer">default function</a>:
<code>MY_VAR: '{{.MY_VAR | default "my-default-value"}}'</code>.</p></div></div><h2class="anchor anchorWithStickyNavbar_mojV"id="task-directory">Task directory<aclass="hash-link"href="#task-directory"title="Direct link to heading"></a></h2><p>By default, tasks will be executed in the directory where the Taskfile is
<ahref="#calling-another-task">Calling Another Task</a> section below.</p></blockquote><p>You may have tasks that depend on others. Just pointing them on <code>deps</code> will
make them run automatically before running the parent task:</p><divclass="language-yaml codeBlockContainer_MPoW theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_B9tL"><pretabindex="0"class="prism-code language-yaml codeBlock__0OG thin-scrollbar"><codeclass="codeBlockLines_gEuF"><spanclass="token-line"style="color:#393A34"><spanclass="token key atrule"style="color:#00a4db">version</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token string"style="color:#e3116c">'3'</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">tasks</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">build</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">deps</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">[</span><spanclass="token plain">assets</span><spanclass="token punctuation"style="color:#393A34">]</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> go build </span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">v </span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">i main.go</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">assets</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> minify </span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">o public/style.css src/css</span><br></span></code></pre><divclass="buttonGroup_hRr1"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_W9eQ"aria-hidden="true"><svgclass="copyButtonIcon_XEyF"viewBox="0 0 24 24"><pathd="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgclass="copyButtonSuccessIcon_i9w9"viewBox="0 0 24 24"><pathd="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>In the above example, <code>assets</code> will always run right before <code>build</code> if you run
performance.</p><divclass="admonition admonition-tip alert alert--success"><divclass="admonition-heading"><h5><spanclass="admonition-icon"><svgxmlns="http://www.w3.org/2000/svg"width="12"height="16"viewBox="0 0 12 16"><pathfill-rule="evenodd"d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</h5></div><divclass="admonition-content"><p>You can also make the tasks given by the command line run in parallel by
using the <code>--parallel</code> flag (alias <code>-p</code>). Example: <code>task --parallel js css</code>.</p></div></div><p>If you want to pass information to dependencies, you can do that the same
<ahref="#including-other-taskfiles">included Taskfile</a>, add a leading <code>:</code> like this:
<code>task: :task-name</code>.</p></div></div><h2class="anchor anchorWithStickyNavbar_mojV"id="prevent-unnecessary-work">Prevent unnecessary work<aclass="hash-link"href="#prevent-unnecessary-work"title="Direct link to heading"></a></h2><h3class="anchor anchorWithStickyNavbar_mojV"id="by-fingerprinting-locally-generated-files-and-their-sources">By fingerprinting locally generated files and their sources<aclass="hash-link"href="#by-fingerprinting-locally-generated-files-and-their-sources"title="Direct link to heading"></a></h3><p>If a task generates something, you can inform Task the source and generated
inform the source files, but if you want to use the <code>timestamp</code> method, you
also need to inform the generated files with <code>generates</code>.</p></div></div><h3class="anchor anchorWithStickyNavbar_mojV"id="using-programmatic-checks-to-indicate-a-task-is-up-to-date">Using programmatic checks to indicate a task is up to date.<aclass="hash-link"href="#using-programmatic-checks-to-indicate-a-task-is-up-to-date"title="Direct link to heading"></a></h3><p>Alternatively, you can inform a sequence of tests as <code>status</code>. If no error
is returned (exit status 0), the task is considered up-to-date:</p><divclass="language-yaml codeBlockContainer_MPoW theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_B9tL"><pretabindex="0"class="prism-code language-yaml codeBlock__0OG thin-scrollbar"><codeclass="codeBlockLines_gEuF"><spanclass="token-line"style="color:#393A34"><spanclass="token key atrule"style="color:#00a4db">version</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token string"style="color:#e3116c">'3'</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">tasks</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">generate-files</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> mkdir directory</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> touch directory/file1.txt</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> touch directory/file2.txt</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token comment"style="color:#999988;font-style:italic"># test existence of files</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">status</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> test </span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">d directory</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> test </span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">f directory/file1.txt</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> test </span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">f directory/file2.txt</span><br></span></code></pre><divclass="buttonGroup_hRr1"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_W9eQ"aria-hidden="true"><svgclass="copyButtonIcon_XEyF"viewBox="0 0 24 24"><pathd="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgclass="copyButtonSuccessIcon_i9w9"viewBox="0 0 24 24"><pathd="M21,7L9,19L3.5,13.5L4.9
<code>generates</code> - but for tasks that generate remote artifacts (Docker images,
deploys, CD releases) the checksum source and timestamps require either
access to the artifact or for an out-of-band refresh of the <code>.checksum</code>
fingerprint file.</p><p>Two special variables <code>{{.CHECKSUM}}</code> and <code>{{.TIMESTAMP}}</code> are available
for interpolation within <code>status</code> commands, depending on the method assigned
to fingerprint the sources. Only <code>source</code> globs are fingerprinted.</p><p>Note that the <code>{{.TIMESTAMP}}</code> variable is a "live" Go <code>time.Time</code> struct, and
can be formatted using any of the methods that <code>time.Time</code> responds to.</p><p>See <ahref="https://golang.org/pkg/time/"target="_blank"rel="noopener noreferrer">the Go Time documentation</a> for more information.</p><p>You can use <code>--force</code> or <code>-f</code> if you want to force a task to run even when
up-to-date.</p><p>Also, <code>task --status [tasks]...</code> will exit with a non-zero exit code if any of
the tasks are not up-to-date.</p><h3class="anchor anchorWithStickyNavbar_mojV"id="using-programmatic-checks-to-cancel-the-execution-of-a-task-and-its-dependencies">Using programmatic checks to cancel the execution of a task and its dependencies<aclass="hash-link"href="#using-programmatic-checks-to-cancel-the-execution-of-a-task-and-its-dependencies"title="Direct link to heading"></a></h3><p>In addition to <code>status</code> checks, <code>preconditions</code> checks are
when it is executed using <code>run</code>. <code>run</code> can also be set at the root
of the Taskfile to change the behavior of all the tasks unless explicitly
overridden.</p><p>Supported values for <code>run</code>:</p><ul><li><code>always</code> (default) always attempt to invoke the task regardless of the
number of previous executions</li><li><code>once</code> only invoke this task once regardless of the number of references</li><li><code>when_changed</code> only invokes the task once for each unique set of variables
They are listed below in order of importance (i.e. most important first):</p><ul><li>Variables declared in the task definition</li><li>Variables given while calling a task from another
that this command will run even when the task fails.</p><p>In the example below, <code>rm -rf tmpdir/</code> will run even if the third command fails:</p><divclass="language-yaml codeBlockContainer_MPoW theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_B9tL"><pretabindex="0"class="prism-code language-yaml codeBlock__0OG thin-scrollbar"><codeclass="codeBlockLines_gEuF"><spanclass="token-line"style="color:#393A34"><spanclass="token key atrule"style="color:#00a4db">version</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token string"style="color:#e3116c">'3'</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">tasks</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">default</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> mkdir </span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">p tmpdir/</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">defer</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"> rm </span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">rf tmpdir/</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> echo 'Do work on tmpdir/'</span><br></span></code></pre><divclass="buttonGroup_hRr1"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_W9eQ"aria-hidden="true"><svgclass="copyButtonIcon_XEyF"viewBox="0 0 24 24"><pathd="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgclass="copyButtonSuccessIcon_i9w9"viewBox="0 0 24 24"><pathd="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If you want to move the cleanup command into another task, that is possible as
<ahref="https://go.dev/tour/flowcontrol/13"target="_blank"rel="noopener noreferrer">Go's own <code>defer</code> work</a>, the deferred
commands are executed in the reverse order if you schedule multiple of them.</p></div></div><h2class="anchor anchorWithStickyNavbar_mojV"id="gos-template-engine">Go's template engine<aclass="hash-link"href="#gos-template-engine"title="Direct link to heading"></a></h2><p>Task parse commands as <ahref="https://golang.org/pkg/text/template/"target="_blank"rel="noopener noreferrer">Go's template engine</a> before executing
them. Variables are accessible through dot syntax (<code>.VARNAME</code>).</p><p>All functions by the Go's <ahref="https://go-task.github.io/slim-sprig/"target="_blank"rel="noopener noreferrer">slim-sprig lib</a>
"darwin" (macOS) and "freebsd".</li><li><code>ARCH</code>: return the architecture Task was compiled to: "386", "amd64", "arm"
or "s390x".</li><li><code>splitLines</code>: Splits Unix (\n) and Windows (\r\n) styled newlines.</li><li><code>catLines</code>: Replaces Unix (\n) and Windows (\r\n) styled newlines with a space.</li><li><code>toSlash</code>: Does nothing on Unix, but on Windows converts a string from <code>\</code>
path format to <code>/</code>.</li><li><code>fromSlash</code>: Opposite of <code>toSlash</code>. Does nothing on Unix, but on Windows
converts a string from <code>/</code> path format to <code>\</code>.</li><li><code>exeExt</code>: Returns the right executable extension for the current OS
(<code>".exe"</code> for Windows, <code>""</code> for others).</li><li><code>shellQuote</code>: Quotes a string to make it safe for use in shell scripts.
Task uses <ahref="https://pkg.go.dev/mvdan.cc/sh/v3@v3.4.0/syntax#Quote"target="_blank"rel="noopener noreferrer">this Go function</a>
for this. The Bash dialect is assumed.</li></ul><p>Example:</p><divclass="language-yaml codeBlockContainer_MPoW theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_B9tL"><pretabindex="0"class="prism-code language-yaml codeBlock__0OG thin-scrollbar"><codeclass="codeBlockLines_gEuF"><spanclass="token-line"style="color:#393A34"><spanclass="token key atrule"style="color:#00a4db">version</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token string"style="color:#e3116c">'3'</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">tasks</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">print-os</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> echo '</span><spanclass="token punctuation"style="color:#393A34">{</span><spanclass="token punctuation"style="color:#393A34">{</span><spanclass="token plain">OS</span><spanclass="token punctuation"style="color:#393A34">}</span><spanclass="token punctuation"style="color:#393A34">}</span><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">{</span><spanclass="token punctuation"style="color:#393A34">{</span><spanclass="token plain">ARCH</span><spanclass="token punctuation"style="color:#393A34">}</span><spanclass="token punctuation"style="color:#393A34">}</span><spanclass="token plain">'</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> echo '</span><spanclass="token punctuation"style="color:#393A34">{</span><spanclass="token punctuation"style="color:#393A34">{</span><spanclass="token plain">if eq OS "windows"</span><spanclass="token punctuation"style="color:#393A34">}</span><spanclass="token punctuation"style="color:#393A34">}</span><spanclass="token plain">windows</span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">command</span><spanclass="token punctuation"style="color:#393A34">{</span><spanclass="token punctuation"style="color:#393A34">{</span><spanclass="token plain">else</span><spanclass="token punctuation"style="color:#393A34">}</span><spanclass="token punctuation"style="color:#393A34">}</span><spanclass="token plain">unix</span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">command</span><spanclass="token punctuation"style="color:#393A34">{</span><spanclass="token punctuation"style="color:#393A34">{</span><spanclass="token plain">end</span><spanclass="token punctuation"style="color:#393A34">}</span><spanclass="token punctuation"style="color:#393A34">}</span><spanclass="token plain">'</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token comment"style="color:#999988;font-style:italic"># This will be path/to/file on Unix but path\to\file on Windows</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="
The following Taskfile:</p><divclass="language-yaml codeBlockContainer_MPoW theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_B9tL"><pretabindex="0"class="prism-code language-yaml codeBlock__0OG thin-scrollbar"><codeclass="codeBlockLines_gEuF"><spanclass="token-line"style="color:#393A34"><spanclass="token key atrule"style="color:#00a4db">version</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token string"style="color:#e3116c">'3'</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">tasks</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">build</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">desc</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"> Build the go binary.</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> go build </span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">v </span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">i main.go</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">test</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">desc</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"> Run all the go tests.</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> go test </span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">race ./</span><spanclass="token punctuation"style="color:#393A34">...</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">js</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain">
The following Taskfile:</p><divclass="language-yaml codeBlockContainer_MPoW theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_B9tL"><pretabindex="0"class="prism-code language-yaml codeBlock__0OG thin-scrollbar"><codeclass="codeBlockLines_gEuF"><spanclass="token-line"style="color:#393A34"><spanclass="token key atrule"style="color:#00a4db">version</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token string"style="color:#e3116c">'3'</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">tasks</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">release</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">deps</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">[</span><spanclass="token plain">build</span><spanclass="token punctuation"style="color:#393A34">]</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">summary</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">|</span><spanclass="token scalar string"style="color:#e3116c"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token scalar string"style="color:#e3116c"> Release your project to github</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"> It will build your project before starting the release.</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"> Please make sure that you have set GITHUB_TOKEN before starting.</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> your</span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">release</span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain">tool</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">build</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="toke
If the task does not have a summary or a description, a warning is printed.</p><p>Please note: <em>showing the summary will not execute the command</em>.</p><h2class="anchor anchorWithStickyNavbar_mojV"id="overriding-task-name">Overriding task name<aclass="hash-link"href="#overriding-task-name"title="Direct link to heading"></a></h2><p>Sometimes you may want to override the task name printed on the summary, up-to-date
messages to STDOUT, etc. In this case, you can just set <code>label:</code>, which can also
that would be run without executing them. This is useful for debugging your Taskfiles.</p><h2class="anchor anchorWithStickyNavbar_mojV"id="ignore-errors">Ignore errors<aclass="hash-link"href="#ignore-errors"title="Direct link to heading"></a></h2><p>You have the option to ignore errors during command execution.
Given the following Taskfile:</p><divclass="language-yaml codeBlockContainer_MPoW theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_B9tL"><pretabindex="0"class="prism-code language-yaml codeBlock__0OG thin-scrollbar"><codeclass="codeBlockLines_gEuF"><spanclass="token-line"style="color:#393A34"><spanclass="token key atrule"style="color:#00a4db">version</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token string"style="color:#e3116c">'3'</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">tasks</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">echo</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> exit 1</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> echo "Hello World"</span><br></span></code></pre><divclass="buttonGroup_hRr1"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_W9eQ"aria-hidden="true"><svgclass="copyButtonIcon_XEyF"viewBox="0 0 24 24"><pathd="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgclass="copyButtonSuccessIcon_i9w9"viewBox="0 0 24 24"><pathd="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Task will abort the execution after running <code>exit 1</code> because the status code <code>1</code> stands for <code>EXIT_FAILURE</code>.
However, it is possible to continue with execution using <code>ignore_error</code>:</p><divclass="language-yaml codeBlockContainer_MPoW theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_B9tL"><pretabindex="0"class="prism-code language-yaml codeBlock__0OG thin-scrollbar"><codeclass="codeBlockLines_gEuF"><spanclass="token-line"style="color:#393A34"><spanclass="token key atrule"style="color:#00a4db">version</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token string"style="color:#e3116c">'3'</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">tasks</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">echo</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">cmds</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">cmd</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"> exit 1</span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">ignore_error</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token boolean important"style="color:#36acaa">true</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token punctuation"style="color:#393A34">-</span><spanclass="token plain"> echo "Hello World"</span><br></span></code></pre><divclass="buttonGroup_hRr1"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_W9eQ"aria-hidden="true"><svgclass="copyButtonIcon_XEyF"viewBox="0 0 24 24"><pathd="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgclass="copyButtonSuccessIcon_i9w9"viewBox="0 0 24 24"><pathd="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><code>ignore_error</code> can also be set for a task, which means errors will be suppressed
for all commands. Nevertheless, keep in mind that this option will not propagate to other tasks
called either by <code>deps</code> or <code>cmds</code>!</p><h2class="anchor anchorWithStickyNavbar_mojV"id="output-syntax">Output syntax<aclass="hash-link"href="#output-syntax"title="Direct link to heading"></a></h2><p>By default, Task just redirects the STDOUT and STDERR of the running commands
to the shell in real-time. This is good for having live feedback for logging
commands running simultaneously and printing lots of stuff.</p><p>To make this more customizable, there are currently three different output
options you can choose:</p><ul><li><code>interleaved</code> (default)</li><li><code>group</code></li><li><code>prefixed</code></li></ul><p>To choose another one, just set it to root in the Taskfile:</p><divclass="language-yaml codeBlockContainer_MPoW theme-code-block"style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><divclass="codeBlockContent_B9tL"><pretabindex="0"class="prism-code language-yaml codeBlock__0OG thin-scrollbar"><codeclass="codeBlockLines_gEuF"><spanclass="token-line"style="color:#393A34"><spanclass="token key atrule"style="color:#00a4db">version</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token string"style="color:#e3116c">'3'</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">output</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><spanclass="token string"style="color:#e3116c">'group'</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token key atrule"style="color:#00a4db">tasks</span><spanclass="token punctuation"style="color:#393A34">:</span><spanclass="token plain"></span><br></span><spanclass="token-line"style="color:#393A34"><spanclass="token plain"></span><spanclass="token comment"style="color:#999988;font-style:italic"># ...</span><br></span></code></pre><divclass="buttonGroup_hRr1"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_W9eQ"aria-hidden="true"><svgclass="copyButtonIcon_XEyF"viewBox="0 0 24 24"><pathd="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgclass="copyButtonSuccessIcon_i9w9"viewBox="0 0 24 24"><pathd="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The <code>group</code> output will print the entire output of a command once after it
finishes, so you will not have live feedback for commands that take a long time
an issue about it.</p><h2class="anchor anchorWithStickyNavbar_mojV"id="short-task-syntax">Short task syntax<aclass="hash-link"href="#short-task-syntax"title="Direct link to heading"></a></h2><p>Starting on Task v3, you can now write tasks with a shorter syntax if they
so task knows which files to watch.</p></div></article><navclass="pagination-nav docusaurus-mt-lg"aria-label="Docs pages navigation"><aclass="pagination-nav__link pagination-nav__link--prev"href="/installation/"><divclass="pagination-nav__sublabel">Previous</div><divclass="pagination-nav__label">Installation</div></a><aclass="pagination-nav__link pagination-nav__link--next"href="/api/"><divclass="pagination-nav__sublabel">Next</div><divclass="pagination-nav__label">API Reference</div></a></nav></div></div><divclass="col col--3"><divclass="tableOfContents_cNA8 thin-scrollbar theme-doc-toc-desktop"><ulclass="table-of-contents table-of-contents__left-border"><li><ahref="#getting-started"class="table-of-contents__link toc-highlight">Getting started</a></li><li><ahref="#supported-file-names"class="table-of-contents__link toc-highlight">Supported file names</a></li><li><ahref="#environment-variables"class="table-of-contents__link toc-highlight">Environment variables</a><ul><li><ahref="#task"class="table-of-contents__link toc-highlight">Task</a></li><li><ahref="#env-files"class="table-of-contents__link toc-highlight">.env files</a></li></ul></li><li><ahref="#including-other-taskfiles"class="table-of-contents__link toc-highlight">Including other Taskfiles</a><ul><li><ahref="#os-specific-taskfiles"class="table-of-contents__link toc-highlight">OS-specific Taskfiles</a></li><li><ahref="#directory-of-included-taskfile"class="table-of-contents__link toc-highlight">Directory of included Taskfile</a></li><li><ahref="#optional-includes"class="table-of-contents__link toc-highlight">Optional includes</a></li><li><ahref="#vars-of-included-taskfiles"class="table-of-contents__link toc-highlight">Vars of included Taskfiles</a></li></ul></li><li><ahref="#task-directory"class="table-of-contents__link toc-highlight">Task directory</a></li><li><ahref="#task-dependencies"class="table-of-contents__link toc-highlight">Task dependencies</a></li><li><ahref="#calling-another-task"class="table-of-contents__link toc-highlight">Calling another task</a></li><li><ahref="#prevent-unnecessary-work"class="table-of-contents__link toc-highlight">Prevent unnecessary work</a><ul><li><ahref="#by-fingerprinting-locally-generated-files-and-their-sources"class="table-of-contents__link toc-highlight">By fingerprinting locally generated files and their sources</a></li><li><ahref="#using-programmatic-checks-to-indicate-a-task-is-up-to-date"class="table-of-contents__link toc-highlight">Using programmatic checks to indicate a task is up to date.</a></li><li><ahref="#using-programmatic-checks-to-cancel-the-execution-of-a-task-and-its-dependencies"class="table-of-contents__link toc-highlight">Using programmatic checks to cancel the execution of a task and its dependencies</a></li><li><ahref="#limiting-when-tasks-run"class="table-of-contents__link toc-highlight">Limiting when tasks run</a></li></ul></li><li><ahref="#variables"class="table-of-contents__link toc-highlight">Variables</a><ul><li><ahref="#dynamic-variables"class="table-of-contents__link toc-highlight">Dynamic variables</a></li></ul></li><li><ahref="#forwarding-cli-arguments-to-commands"class="table-of-contents__link toc-highlight">Forwarding CLI arguments to commands</a></li><li><ahref="#doing-task-cleanup-with-defer"class="table-of-contents__link toc-highlight">Doing task cleanup with <code>defer</code></a></li><li><ahref="#gos-template-engine"class="table-of-contents__link toc-highlight">Go's template engine</a></li><li><ahref="#help"class="table-of-contents__link toc-highlight">Help</a></li><li><ahref="#display-summary-of-task"class="table-of-contents__link toc-highlight">Display summary of task</a></li><li><ahref="#overriding-task-name"class="table-of-contents__link toc-highlight">Overriding task name</a></li><li><ahref="#silent-mode"class="table-of-contents__link toc-highlight">Silent mode</a></li><li><ahref="#dry-run-mode"class="table-of-contents__link toc-highlight">Dry run mode</a></li><li><ahref="#ignore-errors"class="table-of-con