name: 'Bump & Publish'

on:
  push:
    branches:
      - 'master'
    paths-ignore:
      - '**.md'
      - '**.yml'
      - '**.yaml'

jobs:
  bump-version:
    name: 'Bump Version on master & Publish'
    runs-on: ubuntu-latest

    steps:
      - name: 'Checkout source code'
        uses: 'actions/checkout@v2'
        with:
          ref: ${{ github.ref }}
      - name: 'cat package.json'
        run: cat ./package.json
      - name: 'Automated Version Bump'
        id: version-bump
        uses: 'phips28/gh-action-bump-version@master'
        with:
          tag-prefix: 'v'
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - name: 'cat package.json'
        run: cat ./package.json
      - name: 'Output Step'
        env:
          NEW_TAG: ${{ steps.version-bump.outputs.newTag }}
        run: echo "new tag $NEW_TAG"
      - name: Check NPM secret presence
        id: checksecrets
        shell: bash
        run: |
          if [ "$SECRET" == "" ]; then
            echo ::set-output name=secretspresent::false
          else
            echo ::set-output name=secretspresent::true
          fi
        env:
          SECRET: ${{ secrets.NPM_TOKEN }}
      - uses: actions/setup-node@v1
        if: ${{ steps.checksecrets.outputs.secretspresent }}
        with:
          node-version: 14
      - name: Publish to NPM
        if: ${{ steps.checksecrets.outputs.secretspresent }}
        run: |
          npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN}
          npm install
          npm publish --access public
        env:
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
      
      - name: Check Docker secret presence
        id: checkdocker
        shell: bash
        run: |
          if [ "$SECRET" == "" ]; then
            echo ::set-output name=secretspresent::false
          else
            echo ::set-output name=secretspresent::true
          fi
        env:
          SECRET: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Set up Docker QEMU
        if: ${{ steps.checkdocker.outputs.secretspresent }}
        uses: docker/setup-qemu-action@v1
      - name: Set up Docker Buildx
        if: ${{ steps.checkdocker.outputs.secretspresent }}
        uses: docker/setup-buildx-action@v1
      - name: Login to DockerHub
        if: ${{ steps.checkdocker.outputs.secretspresent }}
        uses: docker/login-action@v1 
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Build and push
        if: ${{ steps.checkdocker.outputs.secretspresent }}
        id: docker_build
        uses: docker/build-push-action@v2
        with:
          push: true
          tags: |
            qxip/cloki:latest
            qxip/cloki:${{ steps.version-bump.outputs.newTag }}
