Skip to content

Variables from included Taskfiles cannot be overwritten #2108

@Diaphteiros

Description

@Diaphteiros

Description

The documentation states that in order to overwrite a variable from an included Taskfile, one has to use the syntax

MY_VAR: '{{.MY_VAR | default "my-default-value"}}'

That does not work, at least not for 'global' variables defined in the top-level vars field of the Taskfile.

Taskfile.yaml

version: 3

vars:
  FOOBAR: foo

includes:
  bar: Taskfile_bar.yaml

tasks:
  foobar:
    cmds:
    - cmd: echo '{{.FOOBAR}}'
      silent: true

Taskfile_bar.yaml

version: 3

vars:
  FOOBAR: '{{.FOOBAR | default "bar"}}'

tasks:
  foobar:
    cmds:
    - cmd: echo '{{.FOOBAR}}'
      silent: true

The Problem

Running either task foobar or task bar:foobar results in bar, but both should print foo instead.


I have to admit that I find the behavior weird in general, I would assume that in most use-cases, variables from the imported Taskfile (often generic/library) should be overwritten by the ones from the importing Taskfile (specialized for project). Having it work the other way around is somewhat confusing. I can work with that though, but if there is no way to overwrite the variables in the included Taskfile from the including one, that is a problem.


Version

v3.41.0

Operating system

darwin/arm64

Experiments Enabled

None

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions