name: build-release
on:
  push:
    tags:
      - 'v*'
env:
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

jobs:
  update-release:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@v3
    - name: Delete Release
      run: |
        gh release delete ${{ github.ref_name }} -y || true
    - name: Create Release
      run: |
        gh release create ${{ github.ref_name }} --title "Release ${{ github.ref_name }}" --notes "The version is ready. You can see the changed log: https://github.com/qsaker/QtSwissArmyKnife/blob/master/resources/files/History.txt"
  release-for-windows:
    runs-on: windows-2019
    needs: update-release
    steps:
    - name: Checkout
      uses: actions/checkout@v3
    - name: Install Qt
      uses: jurplel/install-qt-action@v3
      with:
        version: '6.5.3'
        target: 'desktop'
        arch: 'win64_msvc2019_64'
        dir: ${{ github.workspace }}
        modules: 'qtcharts qtserialbus qtserialport qtwebsockets'
    - name: Build for Windows
      shell: cmd
      run: |
        mkdir build
        cd build
        call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
        cmake -DCMAKE_PREFIX_PATH='${{ github.workspace }}/Qt/6.5.3/win64_msvc2019_64/lib/cmake/Qt6' -DCMAKE_BUILD_TYPE=Release -G "NMake Makefiles" ../
        cmake --build . --target QtSwissArmyKnife
        dir && dir .\sak && dir .\sak\QtSwissArmyKnife
    - name: Upload Release Asset for Windnows
      run: |
        dir && gh release upload ${{ github.ref_name }} 'build\sak\qtswissarmyknife-windows-amd64.zip'
  release-for-linux:
    runs-on: ubuntu-20.04
    needs: update-release
    steps:
    - name: Checkout
      uses: actions/checkout@v3
    - name: Install Qt
      uses: jurplel/install-qt-action@v3
      with:
        version: '6.5.3'
        target: 'desktop'
        arch: 'gcc_64'
        dir: ${{ github.workspace }}
        modules: 'qtcharts qtserialbus qtserialport qtwebsockets'
    - name: install-dependencies
      run: |
        sudo apt-get install -y libxcb-xinerama0 libxcb-cursor-dev
    - name: Build for Linux
      run: |
        mkdir build
        cd build
        cmake ../ -DCMAKE_PREFIX_PATH='${{ github.workspace }}/Qt/6.5.3/gcc_64/lib/cmake/Qt6' -DCMAKE_BUILD_TYPE:STRING=Release -DSAK_ENABLE_LINUXDEPLOYQT:BOOL=TRUE -DSAK_ENABLE_LINUXDEPLOYQT_DOWNLOAD:BOOL=TRUE -G "Unix Makefiles"
        cmake --build . --target QtSwissArmyKnife
        dir && dir ./sak && dir ./sak/QtSwissArmyKnife
    - name: Upload Release Asset for Linux
      run: |
        dir && gh release upload ${{ github.ref_name }} 'build/qtswissarmyknife-linux-x86_64.AppImage'
  release-for-macos:
    runs-on: macos-11
    needs: update-release
    steps:
    - name: Checkout
      uses: actions/checkout@v3
    - name: Install Qt
      uses: jurplel/install-qt-action@v3
      with:
        version: '6.5.3'
        target: 'desktop'
        arch: 'clang_64'
        dir: ${{ github.workspace }}
        modules: 'qtcharts qtserialbus qtserialport qtwebsockets'
    - name: Build for macOS
      # 278ERROR: no file at "/usr/local/opt/libiodbc/lib/libiodbc.2.dylib" 
      # brew unlink unixodbc
      # brew install libiodbc
      # ERROR: no file at "/Applications/Postgres.app/Contents/Versions/14/lib/libpq.5.dylib"
      # ln -s /usr/local/Cellar/postgresql@14/14.10/lib/postgresql@14/libpq.5.14.dylib /Applications/Postgres.app/Contents/Versions/14/lib/libpq.5.dylib
      run: |
        brew unlink unixodbc
        brew install libiodbc
        mkdir -p /Applications/Postgres.app/Contents/Versions/14/lib
        ln -s /usr/local/Cellar/postgresql@14/14.10/lib/postgresql@14/libpq.5.14.dylib /Applications/Postgres.app/Contents/Versions/14/lib/libpq.5.dylib
        mkdir build
        cd build
        cmake ../ -DCMAKE_PREFIX_PATH='${{ github.workspace }}/Qt/6.5.3/clang_64/lib/cmake/Qt6' -DCMAKE_BUILD_TYPE:STRING=Release -G "Unix Makefiles"
        cmake --build . --target QtSwissArmyKnife
        ls && ls ./sak && ls ./sak/QtSwissArmyKnife
    - name: Upload Release Asset for macOS
      run: |
        ls && gh release upload ${{ github.ref_name }} 'build/sak/QtSwissArmyKnife/qtswissarmyknife-macos-11.dmg'