name: Java CI

on:
  push:
    branches:
      - master

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1

    - name: Restore dependency cache
      uses: actions/cache@v1
      with:
        path: ~/.m2/repository
        key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
        restore-keys: |
            ${{ runner.os }}-maven-

    - name: Set up JDK 1.8
      uses: actions/setup-java@v1
      with:
        java-version: 1.8

    - name: Install genisoimage and jq
      run: sudo apt-get install genisoimage jq

    - name: Build with Maven
      run: ./refine build

    - name: Get the OpenRefine snapshot version
      run: echo ::set-env name=OR_VERSION::$(cat ./main/webapp/WEB-INF/classes/git.properties | jq -r '.["git.commit.id.describe"]')

    - name: Generate dist files
      run: ./refine dist ${{ env.OR_VERSION }}

    - name: Create Release
      if: github.repository == 'OpenRefine/OpenRefine'
      id: create_release
      run: echo ::set-env name=API_RELEASE::$(./.github/workflows/release_manager.sh)
      env:
        OR_VERSION: ${{ env.OR_VERSION }}
        RELEASE_REPO_OWNER: OpenRefine
        RELEASE_REPO_TOKEN: ${{ secrets.RELEASE_REPO_TOKEN }}

    - name: Upload Release Asset Windows
      id: upload-release-asset-win
      if: github.repository == 'OpenRefine/OpenRefine'
      uses: actions/upload-release-asset@v1.0.1
      env:
        GITHUB_TOKEN: ${{ secrets.RELEASE_REPO_TOKEN }}
      with:
        upload_url: ${{ env.API_RELEASE }}
        asset_path: ./packaging/target/openrefine-win-${{ env.OR_VERSION }}.zip
        asset_name: openrefine-win-${{ env.OR_VERSION }}.zip
        asset_content_type: application/zip

    - name: Upload Release Asset Linux
      id: upload-release-asset-linux
      if: github.repository == 'OpenRefine/OpenRefine'
      uses: actions/upload-release-asset@v1.0.1
      env:
        GITHUB_TOKEN: ${{ secrets.RELEASE_REPO_TOKEN }}
      with:
        upload_url: ${{ env.API_RELEASE }}
        asset_path: ./packaging/target/openrefine-linux-${{ env.OR_VERSION }}.tar.gz
        asset_name: openrefine-linux-${{ env.OR_VERSION }}.tar.gz
        asset_content_type: application/tar+gzip

    - name: Upload Release Asset Mac
      id: upload-release-asset-mac
      if: github.repository == 'OpenRefine/OpenRefine'
      uses: actions/upload-release-asset@v1.0.1
      env:
        GITHUB_TOKEN: ${{ secrets.RELEASE_REPO_TOKEN }}
      with:
        upload_url: ${{ env.API_RELEASE }}
        asset_path: ./packaging/target/openrefine-mac-${{ env.OR_VERSION }}.dmg
        asset_name: openrefine-mac-${{ env.OR_VERSION }}.dmg
        asset_content_type: application/x-apple-diskimage