name: Release

on:
  push:
    # Sequence of patterns matched against refs/tags
    tags:
      - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10

jobs:
  getNodeVersion:
    uses: gagoar/github-app-installation-token/.github/workflows/node_version.yml@main

  npm:
    runs-on: ubuntu-latest
    needs: getNodeVersion
    steps:
      - uses: actions/checkout@v2
      - name: Setting node version to ${{ needs.getNodeVersion.outputs.node_version }}
        uses: actions/setup-node@v2
        with:
          node-version: '${{ needs.getNodeVersion.outputs.node_version }}'
          registry-url: 'https://registry.npmjs.org'
      - run: npm install
      - run: npm run release
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
      - run: npm run build-binaries
      - name: Zip binaries
        run: |
          zip --junk-paths linux cli-linux 
          zip --junk-paths macosx cli-macos
          zip --junk-paths win cli-win.exe
      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: Release ${{ github.ref }}
          draft: false
          prerelease: false
      - name: Upload Release Asset - WIN
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
          asset_path: ./win.zip
          asset_name: win.zip
          asset_content_type: application/zip
      - name: Upload Release Asset - MACOSX
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
          asset_path: ./macosx.zip
          asset_name: macosx.zip
          asset_content_type: application/zip
      - name: Upload Release Asset - LINUX
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
          asset_path: ./linux.zip
          asset_name: linux.zip
          asset_content_type: application/zip
