---
version: '3'

tasks:
  actions:test:
    deps:
      - :install:software:act
      - :install:software:docker
    desc: Locally test the on-push GitHub Action event (only works for Linux containers)
    hide:
      sh: '! test -d .github/workflows'
    summary: |
      # Test GitHub Actions

      This task ensures Docker and Act are installed. It then uses Act to locally
      test Linux-based on-push GitHub Action events.

      See [Act's README.md](https://github.com/nektos/act) for more information.
    log:
      error: Error encountered while testing GitHub Actions locally with `act`
      start: Testing GitHub Actions locally with `act`
      success: Completed local GitHub Actions test
    cmds:
      - act

  synchronize:
    deps:
      - :install:software:git
    summary: |
      Forces a push to the GitHub master branch so that GitHub stays mirrored with
      the GitLab master branch.
    env:
      GITHUB_HTTP_REPO:
        sh: jq -r '.blueprint.repository.github' package.json
    cmds:
      - cmd: |
          if [ "$GITHUB_HTTP_REPO" != 'null' ]; then
            GITHUB_REPO_WITH_TOKEN="$(echo "$GITHUB_HTTP_REPO" | sed "s/github.com/${GITHUB_TOKEN}@github.com/")"
            git remote add github "${GITHUB_REPO_WITH_TOKEN}.git"
            git fetch --unshallow origin
            git push github master --force
          else
            .config/log warn 'The .blueprint.repository.github field is missing! Cannot synchronize to GitHub.'
          fi
        ignore_error: true
