name: release

on:
  push:
    branches:
      - release

jobs:
  release:
    runs-on: ubuntu-latest
    continue-on-error: false

    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js
      uses: actions/setup-node@v1
      with:
        node-version: 12
        registry-url: 'https://registry.npmjs.org'
    - name: Install dependencies
      run: npm install --only=prod
    - name: Build binaries
      run: npm install -g pkg && npm run build
    
    - name: Get version
      run: echo "VERSION=$(bash ./deployment/get_version.sh)" >> $GITHUB_ENV

    - name: Create Release
      id: create_release
      uses: actions/create-release@v1
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        tag_name: v${{ env.VERSION }}
        release_name: Enjoy Driving!
        draft: false
        prerelease: false

    - name: Zip Releases
      run: zip javpy-win.zip build/javpy-win.exe && zip javpy-linux.zip build/javpy-linux && zip javpy-macos.zip build/javpy-macos
    
    - name: Upload Windows
      uses: actions/upload-release-asset@v1
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        upload_url: ${{ steps.create_release.outputs.upload_url }}
        asset_path: javpy-win.zip
        asset_name: javpy-win.zip
        asset_content_type: application/zip
    
    - name: Upload Linux
      uses: actions/upload-release-asset@v1
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        upload_url: ${{ steps.create_release.outputs.upload_url }}
        asset_path: javpy-linux.zip
        asset_name: javpy-linux.zip
        asset_content_type: application/zip

    - name: Upload MacOS
      uses: actions/upload-release-asset@v1
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        upload_url: ${{ steps.create_release.outputs.upload_url }}
        asset_path: javpy-macos.zip
        asset_name: javpy-macos.zip
        asset_content_type: application/zip
    
    - name: Clear zip files
      run: rm *.zip

    - name: Publish to NPM
      run: npm publish
      env:
        NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
