name: Public NPM Package

on:
  release:
    types: [created]

jobs:
  build_and_test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
        with:
          node-version: '14.x'
      - run: yarn install
      - run: yarn build
      - run: yarn test
      # generate coverage report
      - run: ./node_modules/.bin/nyc report --reporter=text-lcov > ./coverage.lcov
      # send test coverage
      - run: bash <(curl -s https://codecov.io/bash) -f ./coverage.lcov

      # test if app can run with prod dependencies
      - run: yarn install --prod
      - run: node dist/src/cli.js -V

      - uses: actions/upload-artifact@v2
        with:
          name: coverage
          path: ./coverage/

      - uses: actions/upload-artifact@v2
        with:
          name: mochawesome-report
          path: ./mochawesome-report/


  build_and_publish:
    needs: [build_and_test]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
        with:
          node-version: '14.x'
          registry-url: 'https://registry.npmjs.org'
      - run: yarn install
      - run: yarn build
      - run: yarn install --prod

      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
