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 ⛽🔥🤤

137 lines (124 loc) 4.6 kB
--- version: '3' vars: PROJECT_COMMON_URL: https://gitlab.com/megabyte-labs/common/{{.REPOSITORY_TYPE}}.git SHARED_FOLDER: .shared tasks: boilerplate: deps: - :install:software:coreutils - :install:software:jq log: error: There was an error in the boilerplate logic start: Checking if `.boilerplate/` code should be added success: Boilerplate logic completed successfully cmds: - | PATH="$(brew --prefix)/opt/coreutils/libexec/gnubin:$PATH" if [[ "$(jq -r '.blueprint.boilerplate' package.json)" == 'true' ]]; then for ENTITY in .boilerplate/*; do TARGET="$(echo $ENTITY | sed 's/^.boilerplate\///')" rm -rf "$TARGET" done fi GREP="" for ENTITY in .boilerplate/*; do TARGET="$(echo $ENTITY | sed 's/^.boilerplate\///')" GREP="$TARGET"\|"$GREP" done GREP="$(echo $GREP | sed 's/\\|$//')" if ! ls -la | grep "$GREP" &> /dev/null; then .config/log info "Adding boilerplate code since there are no overlapping files" cp -rT .boilerplate . .config/log success "Scaffolded the project with boilerplate code!" fi - rm -rf .boilerplate clean: log: error: Failed to run `rm -rf {{.SHARED_FOLDER}}` start: Running `rm -rf {{.SHARED_FOLDER}}` success: Successfully ran `rm -rf {{.SHARED_FOLDER}}` cmds: - rm -rf {{.SHARED_FOLDER}} clone: log: error: Error cloning {{.PROJECT_COMMON_URL}} start: Cloning {{.PROJECT_COMMON_URL}} success: Finished cloning {{.PROJECT_COMMON_URL}} cmds: - rm -rf {{.SHARED_FOLDER}} - git clone --depth=1 {{.PROJECT_COMMON_URL}} {{.SHARED_FOLDER}} - rm -rf ./{{.SHARED_FOLDER}}/.git copy: deps: - :install:software:coreutils - :install:software:yq log: error: Error copying pre-generated files start: Copying pre-generated files success: Copied pre-generated files cmds: - mv .gitlab-ci.yml old.gitlab-ci.yml - | PATH="$(brew --prefix)/opt/coreutils/libexec/gnubin:$PATH" cp -rT {{.SHARED_FOLDER}}/_generated_/common . cp -rT {{.SHARED_FOLDER}}/_generated_/{{.REPOSITORY_SUBTYPE}} . - | yq eval-all -i 'select(fileIndex == 0) * select(fileIndex == 1)' old.gitlab-ci.yml .gitlab-ci.yml mv old.gitlab-ci.yml .gitlab-ci.yml - task: :common:husky:permissions - task: save:common:keywords merge:package:overrides: deps: - :install:software:jq summary: | # Merge data from package.json's '.blueprint.jsonOverrides' key If you wanted to ensure that the project's package.json file always has its 'xyz' key equal to 'abc' then you would add the following to the package.json file: ```json { ... "blueprint": { "jsonOverrides": { "package.json": { "xyz": "abc" } } } } ``` In the above example, you could also set the value of package.json equal to the path of some other JSON file in the project that you would like to override. This method is here in case there are any key/values that you would like to freeze. log: error: Error processing `.blueprint.jsonOverrides` in `package.json` start: Processing `.blueprint.jsonOverrides` in `package.json` success: Finished processing `.blueprint.jsonOverrides` in `package.json` cmds: - | if [ "$(jq -r '.blueprint.jsonOverrides' package.json)" != 'null' ]; then jq -r '.blueprint.jsonOverrides | keys[]' package.json | while read FILE_PATH; do VALUE="$(jq --arg filepath "$FILE_PATH" '.blueprint.jsonOverrides[$filepath]' "$FILE_PATH")" TMP="$(mktemp)" jq --arg value "$VALUE" -s '.[] + ($value | fromjson)' "$FILE_PATH" > "$TMP" mv "$TMP" "$FILE_PATH" done fi save:common:keywords: deps: - :install:software:jq log: error: Failed to save common keywords start: Saving common keywords success: Saved common keywords cmds: - | KEYWORDS="$(jq -r '.keywords' package.json.liquid)" jq -n --arg keywords "$KEYWORDS" '.keywords = ($keywords | fromjson | unique)' > .config/common-keywords.json.liquid template: cmds: - task: :upstream:variables vars: INPUT_FILE: .config/variables.json OUTPUT_FILE: .variables.json - task: :upstream:template