task
task copied to clipboard
Variables are initialized at start of taskfile and not when I actually need them to be initialized
- Task version: 3
- Operating system: Linux
- Experiments enabled: false
I'm having a very simple issue. I'm trying to build a couple of go lambda functions like
version: '4'
env:
GOARCH: arm64
GOOS: linux
CGO_ENABLED: 0
OUTPUT_DIR: ./bin/
tasks:
build:
vars:
SOURCES:
sh: find -type f -name '*.go'
cmds:
- for: { var: SOURCES }
cmd: GOARCH=$GOARCH GOOS=$GOOS CGO_ENABLED=$CGO_ENABLED go build -ldflags="-s -w" -tags lambda.norpc -o $OUTPUT_DIR {{.ITEM}}
zip:
vars:
OBJECTS:
sh: find {{.OUTPUT_DIR}} -type f
deps:
- build
cmds:
- for: { var: OBJECTS }
cmd:
zip {{.ITEM}}.zip {{.ITEM}}
I would assume this task file would
- execute 'build' which compiles my go files and stores them in 'bin'
- iterate now over all files in 'bin' and zip each of them
sadly this is not what happens, instead what seems to happen is
- evaluate all variable definitions (SOURCES and OBJECTS)
- sources are populated correctly, since there are file. Objects does not get populate right, since no files exist yet so it's empy
- this now causes the zip task to fail, since the array OBJECTS is empty.
how can I force 'tasks' to not populate 'OBJCETCS' until the task is actually execute.
Or if this is not possible, how can I instead compile 50 go files, to 50 zip files, each containing 1 go file, fir the zip file name go-file.zip. Where go-file is the name of the file.
thanks!