UNPKG

@installdoc/ansible-gas-station

Version:

An Ansible playbook that provisions your network with software from GitHub Awesome lists, developed with disaster recovery in mind ⛽🔥🤤

212 lines (197 loc) 7.13 kB
--- version: '3' vars: COMMON_DOCS_URL: https://gitlab.com/megabyte-labs/documentation/shared/-/raw/master/common.json PROJECT_SUBTYPE_VARS_URL: '{{.COMMON_URL}}{{.REPOSITORY_TYPE}}/-/raw/master/project-{{.REPOSITORY_SUBTYPE}}/.config/variables.json' PROJECT_VARS_URL: '{{.COMMON_URL}}{{.REPOSITORY_TYPE}}/-/raw/master/project/.config/variables.json' tasks: all: cmds: - task: name - task: :boilerplate:populate:group - task: group - task: :boilerplate:populate:subgroup - task: subgroup - task: title - task: description - task: overview - task: slug - task: project-specific - task: build - task: test build: summary: | This task prompts the user for the `build` command to place in `scripts.build` inside of `package.json`. For the default value, it looks at the corresponding common respoitory by first checking the `project-subtype` folder and then the `project` folder's value for `scriptsBuild` inside of the `.config/variables.json` file. prompt: type: input message: Enter the build command default: sh: | DATA_SUBTYPE="$(curl -sSL '{{.PROJECT_SUBTYPE_VARS_URL}}')" || EXIT_CODE=$? if [ -n "$EXIT_CODE" ]; then DATA_TYPE="$(curl -sSL '{{.PROJECT_VARS_URL}}')" || EXIT_CODE_2=$? if [ -n "$EXIT_CODE_2" ]; then echo '' else if [ "$(echo "$DATA_TYPE" | jq -r '.scriptsBuild')" != 'null' ]; then echo "$DATA_TYPE" | jq -r '.scriptsBuild' else echo '' fi fi else if [ "$(echo "$DATA_SUBTYPE" | jq -r '.scriptsBuild')" != 'null' ]; then echo "$DATA_SUBTYPE" | jq -r '.scriptsBuild' else echo '' fi fi answer: cmds: - TMP="$(mktemp)" && jq --arg cmd '{{.ANSWER | replace "'" "\'"}}' '.scripts.build = $cmd' package.json && mv "$TMP" package.json status: - | [[ "$(jq -r '.blueprint.description' package.json)" != "null" ]] description: prompt: type: input message: Enter a description for the project answer: cmds: - TMP="$(mktemp)" && jq --arg desc '{{.ANSWER | replace "'" "\'"}}' '.blueprint.description = $desc' package.json && mv "$TMP" package.json status: - | [[ "$(jq -r '.blueprint.description' package.json)" != "null" ]] group: prompt: type: select message: Select a group options: - angular - ansible - docker - go - npm - packer - python answer: cmds: - | TMP="$(mktemp)" && jq --arg group '{{.ANSWER}}' '.blueprint.group = $group' package.json > "$TMP" && mv "$TMP" package.json - | TYPE='{{.ANSWER}}' yq e -i '.vars.REPOSITORY_TYPE = env(TYPE)' Taskfile.yml status: - | [[ "$(jq -r '.blueprint.group' package.json)" != "null" ]] && [[ "$(yq e '.vars.REPOSITORY_TYPE' Taskfile.yml)" != "null" ]] name: prompt: type: input message: Enter a name for the project answer: cmds: - TMP="$(mktemp)" && jq --arg name '{{.ANSWER}}' '.blueprint.name = $name' package.json > "$TMP" && mv "$TMP" package.json status: - | [[ "$(jq -r '.blueprint.name' package.json)" != "null" ]] overview: prompt: type: input message: Enter an overview for the project answer: cmds: - TMP="$(mktemp)" && jq --arg overview '{{.ANSWER}}' '.blueprint.overview = $overview' package.json > "$TMP" && mv "$TMP" package.json status: - | [[ "$(jq -r '.blueprint.overview' package.json)" != "null" ]] project-specific: 'true' slug: prompt: type: input message: Enter a slug for the project answer: cmds: - TMP="$(mktemp)" && jq --arg slug '{{.ANSWER}}' '.blueprint.slug = $slug' package.json > "$TMP" && mv "$TMP" package.json status: - | [[ "$(jq -r '.blueprint.slug' package.json)" != "null" ]] subgroup: env: SUBGROUP_GROUP: sh: | TASK_GROUP="$(yq e '.vars.REPOSITORY_TYPE' Taskfile.yml)" if [ "$TASK_GROUP" == 'null' ]; then PKG_GROUP="$(jq -r '.blueprint.group' package.json)" if [ "$PKG_GROUP" == 'null' ]; then echo 'generic' else echo "$PKG_GROUP" fi else echo "$TASK_GROUP" fi prompt: type: select message: Select a subgroup options: sh: curl -sSL '{{.COMMON_DOCS_URL}}' | jq --arg type "$SUBGROUP_GROUP" '.groups[$type]' answer: cmds: - | TMP="$(mktemp)" && jq --arg subtype '{{.ANSWER}}' '.blueprint.subgroup = $subtype' package.json > "$TMP" && mv "$TMP" package.json - | SUBTYPE='{{.ANSWER}}' yq e -i '.vars.REPOSITORY_SUBTYPE = env(SUBTYPE)' Taskfile.yml status: - | [[ "$(jq -r '.blueprint.subgroup' package.json)" != "null" ]] && [[ "$(yq e '.vars.REPOSITORY_SUBTYPE' Taskfile.yml)" != "null" ]] test: summary: | This task prompts the user for the `test` command to place in `scripts.test` inside of `package.json`. For the default value, it looks at the corresponding common respoitory by first checking the `project-subtype` folder and then the `project` folder's value for `scriptsTest` inside of the `.config/variables.json` file. prompt: type: input message: Enter the test command default: sh: | DATA_SUBTYPE="$(curl -sSL '{{.PROJECT_SUBTYPE_VARS_URL}}')" || EXIT_CODE=$? if [ -n "$EXIT_CODE" ]; then DATA_TYPE="$(curl -sSL '{{.PROJECT_VARS_URL}}')" || EXIT_CODE_2=$? if [ -n "$EXIT_CODE_2" ]; then echo '' else if [ "$(echo "$DATA_TYPE" | jq -r '.scriptsTest')" != 'null' ]; then echo "$DATA_TYPE" | jq -r '.scriptsTest' else echo '' fi fi else if [ "$(echo "$DATA_SUBTYPE" | jq -r '.scriptsTest')" != 'null' ]; then echo "$DATA_SUBTYPE" | jq -r '.scriptsTest' else echo '' fi fi answer: cmds: - TMP="$(mktemp)" && jq --arg cmd '{{.ANSWER | replace "'" "\'"}}' '.scripts.test = $cmd' package.json && mv "$TMP" package.json status: - | [[ "$(jq -r '.scripts.test' package.json)" != "null" ]] title: type: input message: Enter the title of the README.md default: sh: jq -r '.blueprint.name' package.json answer: cmds: - TMP="$(mktemp)" && jq --arg title '{{.ANSWER | replace "'" "\'"}}' '.blueprint.title = $title' package.json && mv "$TMP" package.json status: - | [[ "$(jq -r '.blueprint.title' package.json)" != "null" ]]