name: "Releases"

on:
  workflow_dispatch:
  push:
    tags:
    - 'v*'

jobs:
  main:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2

    - name: Set node version
      uses: actions/setup-node@v1
      with:
        node-version: '17.x'

    - name: Install
      run: |
        npm install
        npm run setheapsize

    - name: Lint
      run: npx grunt lint

    - name: Unit Tests
      run: |
        npm test
        npm run testnodeconsumer

    - name: Production Build
      if: success()
      run: npx grunt prod

    # - name: UI Tests
    #   if: success()
    #   run: xvfb-run --server-args="-screen 0 1200x800x24" npx grunt testui

    - name: Upload Release Assets
      if: success()
      id: upload-release-assets
      uses: svenstaro/upload-release-action@v2
      with:
        repo_token: ${{ secrets.GITHUB_TOKEN }}
        file: build/prod/*.zip
        tag: ${{ github.ref }}
        overwrite: true
        file_glob: true
        body: "See the [CHANGELOG](https://github.com/gchq/CyberChef/blob/master/CHANGELOG.md) and [commit messages](https://github.com/gchq/CyberChef/commits/master) for details."

    - name: Publish to NPM
      if: success()
      uses: JS-DevTools/npm-publish@v1
      with:
        token: ${{ secrets.NPM_TOKEN }}
