Task

T

Task

Task is a task runner / build tool that aims to be simpler and easier to use than, for example, GNU Make.

Join

yaml formatted data

Assuming a variable ARRAY like in https://taskfile.dev/blog/any-variables/#arrays , but YAML formatted. Is it possible, loop over a variable containing YAML formatted data (in this case a list) either inline or loaded from a .yaml file with templating functions? example data: ```...

Precondition with OR does not work

Hey all, I have a build pre condition that checks two things: production or version. If the build is production I want to validate the version in my pre condition and if the build is not production I want to continue successfully without validating the version. When I run the two expression together it fails even when I specify PRODUCTION = false. That is, if I pass PRODUCTION == false I want to skip validating the version and continue successfully and if PRODUCTION == true I want to validate the version with my regex and fail if it is not a valid format. Here is my pre condition:...

Using sh to generate a map?

I've been taking a poke at https://github.com/go-task/task/issues/1585 very briefly but it made me wonder if there would be interest in something that would support using the output of a sh: into a map. This would allow me to create complex tasks or scripts that generate valid JSON for consumption by task (something I already do regularly for GitHub Actions matrixes). For instance: ```yaml...

Required input does not prevent dependencies from running and dependencies do not share variables

Hey all, I am running into two problems with my build release task: 1. In my dependencies section I have duplications with the variables I want to pass to each dependency. Do we have a way to pass common variables to all dependencies instead of explicitly setting them for each dependency?...

How to use for loop with filenames containing spaces?

I'm encountering an error when trying to run a Taskfile and need some help. My task needs to process filenames that may contain spaces. ``` task: Failed to run task "sample-for-cmd": 6:1: "foo(" must be followed by )...

Blocking Task?

Is there a way to have a "blocking" task so that it waits for it to complete first? (see the first task infra/up below) ```yaml yaml-language-server: $schema=https://taskfile.dev/schema.json version: "3"...

Should the 'generates' folders be automatically excluded from 'sources' evaluaton?

If I have a project structure of: ``` project: - src - build...
Solution:
ok, thanks. It seem like if the build directory is deleted and then recreated then it's thinking that the content has changed except I think the checksums for each file would be the same. I guess there's something different that I'm not realising. I'll close this question off as it's something specific to the project I'm working on. Thanks

Static context issues

As I understand it, once a task command is executed, its environment context cannot be changed. This means I can't set a global variable from a task, which introduces difficulties when running tasks that install software, update $PATH, or modify other environment variables. I'm not sure what the workaround could be at this point. However, my main point is that it would be very helpful to have a shared environment between tasks....

Path to Taskfile from environment variable

It would be great to have the option to set the path to the Taskfile using an environment variable. This would be particularly useful in scenarios where the Taskfile is not located in the default path (e.g., Taskfile.yaml), allowing us to avoid specifying the path each time.

Running task fails in git hooks

We have a pre push git hook which will run the build task. When it is executed normally it works without any problem. But during pre push it throws the following error "task: Failed to parse stdin yaml: line 1: cannot unmarshal !!str into taskfile" ...

is there a way to give required variables check in the root level similar to the task level?

We have a use case where any task can be runnable only when common environment variables are available. Instead of setting them up in each task, is there an possibility to set it at root level?

how task kill process?

I have a process handle SIGHUP SIGINT SIGKILL SIGTERM and SIGQUIT but they are not trigger, how task kill process in watch mode? it looks like it use differnt strategy to stop process when exit watch mode and in watch mode?...

Looking for advice - Rendering template files

Hi, I'm wondering what would be the best approach to handle rendering a whole bunch of template files. Having 1 folder containing many templates. Loading an env file for example and substitute all placeholders in these files to a location on fs. I used to do something alike using jinja2 and ansible but I don't want to use ansible or python. I'd just like to know if there is a smart way to do that using taskfile. Maybe leveraging go's sprig templating or the basic variable substitution with {{.EXAMPLE}} syntax , I'm not sure how to achieve that for many files....

sources with wildcards, can I run the command only for the modified files?

With the following code, every time a plantuml file changes, all plantuml is run for every *.plantuml files I have. Is there a way to only run it for the files that actually changed? ```yaml tasks: build:...

Referencing parent tasks

Hi, how can I reference parent tasks from the included taskfile?
Solution:
Hi @Leon, It is as simple as prepending : when calling the task: ```yaml...

Working out why a task with sources and generates is considered up to date

I have a task that looks something like: ``` zip_foo: deps: [update_target] sources:...

commands composition?

Hi! I need to build my go program but i have some options. First: - GOOS=linux GOARCH=arm64 - Native....

encounter a issue that task caching not working anymore.

I have a simple task running just echo 1 with sources and generates. and it's hash in .task/checksum/ doesn't change. But it never consider up to date and command always run. I have same version task on debian and it's ok, but not working as expected on windows...

is it possible to set vars in cmds?

I need a run a command before vars are defined, it this possible? for example: ```...

how to apply `ignore` in source filter?

I have a python project using task, and I try to use --watch to restart my application. I'm using sources: ['**/*.py'] and this would include .venv dir, which is third part library lives. Is there a way to exclude this from source?