task icon indicating copy to clipboard operation
task copied to clipboard

When multiple includes are used sometimes variables randomly get lost

Open luischre opened this issue 3 months ago • 6 comments

  • Task version: 3.37.2
  • Operating system: Linux
  • Experiments enabled:

Pretty much the same issue that was described here, please find below a pretty similar reproduceable example.

Taskfile.dist.yml:

version: "3"

includes:
  a:
    taskfile: ./a/Taskfile.yml
  b:
    taskfile: ./b/Taskfile.yml
    vars:
      FIRSTITEM: "{{ .FIRSTITEM }}"
      SECONDITEM: "{{ .SECONDITEM }}"
      THIRDITEM: "{{ .THIRDITEM }}"

tasks:
  print-list:
    desc: 'Print the list'
    cmds:
      - for: { var: MYLIST }
        task: print:item
        vars: { MYITEM: ' {{ .ITEM }}' }
    vars:
      MYLIST: >
        {{ .FIRSTITEM }}
        {{ .SECONDITEM }}
        {{ .THIRDITEM }}
        {{ .FIRSTITEMEXTENDED }}
        {{ .SECONDITEMEXTENDED }}
        {{ .THIRDITEMEXTENDED }}

  print:item:
    desc: 'Print the item'
    label: "print:item-{{ .MYITEM }}"
    cmds:
      - echo "Current item {{ .MYITEM }}"
    var:
      MYITEM: '{{ .MYITEM }}'

./a/Taskfile.yml

version: "3"

vars:
  FIRSTITEM: "FIRST"
  SECONDITEM: "SECOND"
  THIRDITEM: "THIRD"

./b/Taskfile.yml

version: "3"

vars:
  FIRSTITEMEXTENDED: "{{ .FIRSTITEM }}EXTENDED"
  SECONDITEMEXTENDED: "{{ .SECONDITEM }}EXTENDED"
  THIRDITEMEXTENDED: "{{ .THIRDITEM }}EXTENDED"

testTask.sh

#!/bin/bash

for i in {1..1000}; do
    task print-list
done

Executing this with ./testTask.sh | grep -o FIRSTEXTENDED | wc -l returns 1000 for version 3.36.0 it only return 817 for version 3.37.2, also visible in the print output in the excerpt below:

task: [print:item- SECOND] echo "Current item  SECOND"
task: [print:item- THIRD] echo "Current item  THIRD"
task: [print:item- FIRSTEXTENDED] echo "Current item  FIRSTEXTENDED"
task: [print:item- SECONDEXTENDED] echo "Current item  SECONDEXTENDED"
task: [print:item- THIRDEXTENDED] echo "Current item  THIRDEXTENDED"
task: [print:item- FIRST] echo "Current item  FIRST"
task: [print:item- SECOND] echo "Current item  SECOND"
task: [print:item- THIRD] echo "Current item  THIRD"
task: [print:item- EXTENDED] echo "Current item  EXTENDED"
task: [print:item- EXTENDED] echo "Current item  EXTENDED"
task: [print:item- EXTENDED] echo "Current item  EXTENDED"
task: [print:item- FIRST] echo "Current item  FIRST"
task: [print:item- SECOND] echo "Current item  SECOND"
task: [print:item- THIRD] echo "Current item  THIRD"
task: [print:item- FIRSTEXTENDED] echo "Current item  FIRSTEXTENDED"
task: [print:item- SECONDEXTENDED] echo "Current item  SECONDEXTENDED"
task: [print:item- THIRDEXTENDED] echo "Current item  THIRDEXTENDED"

luischre avatar May 16 '24 15:05 luischre