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

130 lines
4.7 KiB
YAML

---
version: '3'
vars:
TEMPLATE_FILE: '{{if .CLI_ARGS}}{{.CLI_ARGS}}{{else}}template.json{{end}}'
tasks:
descriptions:
deps:
- :install:software:jq
log:
error: Error populating `{{.TEMPLATE_FILE}}` with descriptions
start: Populating `{{.TEMPLATE_FILE}}` with descriptions
success: Populated `{{.TEMPLATE_FILE}}` with descriptions
cmds:
- |
DESCRIPTION_TEMPLATE="$(jq -r '.description_template' '{{.VARIABLES_PATH}}')"
VERSION_DESCRIPTION="$(jq -r '.version_description' '{{.VARIABLES_PATH}}')"
TMP="$(mktemp)"
jq --arg a "$DESCRIPTION_TEMPLATE" --arg b "$VERSION_DESCRIPTION" \
'.variables.description = $a | .variables.version_description = $b' {{.TEMPLATE_FILE}} > "$TMP"
mv "$TMP" {{.TEMPLATE_FILE}}
sources:
- '{{.TEMPLATE_FILE}}'
- '{{.VARIABLES_PATH}}'
readme:
log:
error: Encountered error while updating README.md for Packer template
start: Updating README.md for Packer template
success: Updated README.md for Packer template
cmds:
- task: readme:platform
vars:
TYPE: hyperv-iso
- task: readme:platform
vars:
TYPE: parallels-iso
- task: readme:platform
vars:
TYPE: qemu
- task: readme:platform
vars:
TYPE: virtualbox-iso
- task: readme:platform
vars:
TYPE: vmware-iso
readme:platform:
log:
start: Determining whether to update README.md for `{{.TYPE}}`
cmds:
- task: readme:platform:{{OS}}
vars:
TYPE: '{{.TYPE}}'
status:
- |
grep -q '"type": "{{.TYPE}}"' {{.TEMPLATE_FILE}}
readme:platform:darwin:
log:
error: Error updating README.md with supported OS information for Packer template
start: Updating README.md with supported OS information for Packer template
success: Updated README.md with supported OS information for Packer template
cmds:
- sed -i .bak '/SUPPORTED_OS_{{.TYPE}}/d' README.md && rm README.md.bak
readme:platform:linux:
log:
error: Error updating README.md with supported OS information for Packer template
start: Updating README.md with supported OS information for Packer template
success: Updated README.md with supported OS information for Packer template
cmds:
- sed -i '/SUPPORTED_OS_{{.TYPE}}/d' README.md
variables:
deps:
- :install:software:jq
vars:
ISO_VERSION:
sh: jq -r '.variables.iso_version' {{.TEMPLATE_FILE}}
MAJOR_VERSION:
sh: cut -d '.' -f 1 <<< {{.ISO_VERSION}}
MINOR_VERSION:
sh: cut -d '.' -f 2 <<< {{.ISO_VERSION}}
log:
error: Error updating `{{.VARIABLES_PATH}}` with variables from `{{.TEMPLATE_FILE}}`
start: Updating `{{.VARIABLES_PATH}}` with variables from `{{.TEMPLATE_FILE}}`
success: Updated `{{.VARIABLES_PATH}}` with variables from `{{.TEMPLATE_FILE}}`
cmds:
- |
TEMPLATE_JSON="$(jq -r '.' {{.TEMPLATE_FILE}})"
TMP="$(mktemp)"
jq -S --arg templatejson "$TEMPLATE_JSON" '.template_json = ($templatejson | fromjson)' '{{.VARIABLES_PATH}}' > "$TMP"
mv "$TMP" '{{.VARIABLES_PATH}}'
- task: variables:{{OS}}
vars:
ISO_VERSION: '{{.ISO_VERSION}}'
MAJOR_VERSION: '{{.MAJOR_VERSION}}'
MINOR_VERSION: '{{.MINOR_VERSION}}'
sources:
- '{{.TEMPLATE_FILE}}'
- '{{.VARIABLES_PATH}}'
preconditions:
- sh: test -f {{.TEMPLATE_FILE}}
msg: 'A `{{.TEMPLATE_FILE}}` file is not present. This project uses values stored in `{{.TEMPLATE_FILE}}` to generate certain
meta artifacts. Please add a `{{.TEMPLATE_FILE}}`. You can find an example of one in
[this repository](https://gitlab.com/megabyte-labs/packer/ubuntu-desktop)'
- sh: test -f '{{.VARIABLES_PATH}}'
msg: 'The `{{.VARIABLES_PATH}}` file is missing!'
variables:darwin:
log:
error: Error updating major version
start: Updating major version
success: Updated major version
cmds:
- sed -i .bak "s^MAJOR_VERSION^{{.MAJOR_VERSION}}^g" '{{.VARIABLES_PATH}}' && rm '{{.VARIABLES_PATH}}.bak'
- sed -i .bak "s^MINOR_VERSION^{{.MINOR_VERSION}}^g" '{{.VARIABLES_PATH}}' && rm '{{.VARIABLES_PATH}}.bak'
- sed -i .bak "s^ISO_VERSION^{{.ISO_VERSION}}^g" '{{.VARIABLES_PATH}}' && rm '{{.VARIABLES_PATH}}.bak'
variables:linux:
log:
error: Error updating major version
start: Updating major version
success: Updated major version
cmds:
- sed -i "s^MAJOR_VERSION^{{.MAJOR_VERSION}}^g" '{{.VARIABLES_PATH}}'
- sed -i "s^MINOR_VERSION^{{.MINOR_VERSION}}^g" '{{.VARIABLES_PATH}}'
- sed -i "s^ISO_VERSION^{{.ISO_VERSION}}^g" '{{.VARIABLES_PATH}}'