install.fairie/.config/taskfiles/go/Taskfile.yml
Brian Zalewski f42899b107 Latest
2022-12-24 15:04:59 -05:00

109 lines
2.9 KiB
YAML

---
version: '3'
tasks:
build:
deps:
- :install:software:jq
vars:
BUILD_COMMAND:
sh: jq -r '.blueprint.build_command' package.json
BUILD_OUTPUT:
sh: jq -r '.blueprint.build_command_output' package.json
cmds:
- task: build:bin
vars:
BUILD_COMMAND: '{{.BUILD_COMMAND}}'
BUILD_OUTPUT: '{{.BUILD_OUTPUT}}'
status:
- '[[ "{{.BUILD_COMMAND}}" == "null" ]] || [[ "{{.BUILD_OUTPUT}}" == "null" ]]'
build:bin:
deps:
- :install:software:go
log:
error: Failed to build binary
start: Running build command specified in `package.json` (defined under the `build_command` key in the `blueprint` section)
success: Successfully built the binary
cmds:
- go mod tidy
- '{{.BUILD_COMMAND}}'
sources:
- '**/*.go'
generates:
- '{{.BUILD_OUTPUT}}'
help:
deps:
- build
- :install:software:jq
vars:
BUILD_COMMAND:
sh: jq -r '.blueprint.build_command' package.json
BUILD_OUTPUT:
sh: jq -r '.blueprint.build_command_output' package.json
log:
error: Failed to query binary help menu output
start: Querying binary help menu output
success: Successfully injected binary help menu output into `.variables.json`
cmds:
- |
TMP_HELP="$(mktemp)"
{{.BUILD_OUTPUT}} --help 2> "$TMP_HELP"
TMP_VARS="$(mktemp)"
jq --arg output "$(cat "$TMP_HELP")" '.help_menu_output = $output' .variables.json > "$TMP_VARS"
mv "$TMP_VARS" .variables.json
status:
- '[[ "{{.BUILD_COMMAND}}" == "null" ]] || [[ "{{.BUILD_OUTPUT}}" == "null" ]]'
prepare:
cmds:
- task: :go:goreleaser:build
publish:
cmds:
- task: :go:goreleaser:release
- task: publish:after
- rm -rf dist
publish:after:
deps:
- publish:after:docker
- publish:after:fury
publish:after:docker:
summary: |
Unsure why this is here and how it is useful.
cmds:
- .config/log warn 'Unused step go:publish:after:docker - pay attention to this only for debugging purposes'
# cmds:
# - |
# for FILE in build/goreleaserdocker*; do
# [ -e "$FILE" ] && task --dir "$FILE" docker:verify docker:build docker:publish
# break
# done
# - rm -rf build/goreleaserdocker*
publish:after:fury:
deps:
- :install:software:fury
cmds:
- fury push build/*.deb --account=$FURY_ACCOUNT --api-token=$FURY_DEPLOY_TOKEN
- fury push build/*.rpm --account=$FURY_ACCOUNT --api-token=$FURY_DEPLOY_TOKEN
status:
- '[ -z "$FURY_ACCOUNT" ] || [ -z "$FURY_DEPLOY_TOKEN" ]'
test:
deps:
- :install:software:go
log:
error: Failed to test Go sources
start: Testing Go sources
success: Successfully finished testing Go sources
cmds:
- go test ./...
verify:
cmds:
- task: :go:goreleaser:check
- task: :publish:snap:register