name: macos
concurrency: 
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
on: 
  # workflow_run:
  #   workflows: [AutoTag]
  #   types: [completed]
  workflow_dispatch:
  push:
    branches:
      - dev
      - master
      # - staged
    paths-ignore:
      - 'docs/**'
      - ".github/**"
      - "howto/**"
      - "*.md"
      - ".clang-format"

jobs:
  build:
    name: Build
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [macos-10.15,macos-11.0]
        qt_ver: [5.15.2]
        qt_arch: [clang_64]
    env:
      targetName: GoldenDict
      version: 22.6.22
      version-suffix: alpha
      prerelease: true

    steps:
      # macos 11.0 默认环境变了,要指定
      - name: prepare env
        if: ${{ matrix.os == 'macos-11.0' }}
        run: |
          softwareupdate --all --install --force
          sudo xcode-select --print-path
          sudo xcode-select --switch /Library/Developer/CommandLineTools    
          # brew install qt@6   
      - uses: actions/setup-python@v3
        with:
          python-version: '3.9'          
      - name: Install Qt
        uses: jurplel/install-qt-action@v3
        # if: ${{ matrix.qt_ver == '5.15.2' }}
        with:
          version: ${{ matrix.qt_ver }}
          cached: 'false'
          modules: qtwebengine
          setup-python: 'false'
          py7zrversion: '==0.18.1'
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - name: build macos
        run: |
          brew uninstall opencc hunspell ffmpeg@5 ffmpeg@4 libtiff xz lzo libogg libvorbis zstd || true
          brew install create-dmg
          qmake CONFIG+=release   CONFIG+=zim_support   CONFIG+=chinese_conversion_support
          make -j$(nproc)
      # 打包
      - name: package
        run: |
          macdeployqt ${targetName}.app -qmldir=. -verbose=1
          codesign --force --deep -s - GoldenDict.app
          otool -L GoldenDict.app/Contents/MacOS/GoldenDict
          otool -L GoldenDict.app/Contents/Frameworks/lib*
          mkdir tmp
          mv ${targetName}.app ./tmp
          # --background "installer_background.png"
          create-dmg --volname "${targetName} Installer" --volicon "icons/macicon.icns" --window-pos 200 120 --window-size 800 400 --icon-size 100 --icon "${targetName}.app" 200 190 --hide-extension "${targetName}.app" --app-drop-link 600 185 --skip-jenkins "${targetName}.dmg" tmp/
      - name: Generate changelog
        if: ${{!env.prerelease}}
        id: changelog1
        uses: metcalfc/changelog-generator@v3.0.0
        with:
          myToken: ${{ secrets.GITHUB_TOKEN }}

      - name: Set outputs
        id: vars
        run: |
          echo "::set-output name=sha_short::$(git rev-parse --short=8 HEAD)"    
          echo "::set-output name=release_date::$(date +'%Y%m%d')"    
          echo "::set-output name=release_time::$(date +'%H%M%S')"  
          echo "::set-output name=release_time_clock::$(date +'%H:%M:%S')"   
          echo "::set-output name=release_hm::$(date +'%y%m%d')"  

      - name: changelog
        if: $${{env.prerelease}}
        id: changelog2
        run: |   
          previousTag=$(git tag --sort=-creatordate | sed -n 2p)
          echo "previousTag : $previousTag"
          
          CHANGELOG="$(git log --oneline --no-decorate $previousTag..HEAD)"
          CHANGELOG="${CHANGELOG//'%'/'%25'}"
          CHANGELOG="${CHANGELOG//$'\n'/'%0A'}"
          CHANGELOG="${CHANGELOG//$'\r'/'%0D'}"
          CHANGELOG="${CHANGELOG//'\"'/'%22'}"
          CHANGELOG="${CHANGELOG//"'"/ }"
          echo "::set-output name=COMMIT_SUMMARY::$(echo "$CHANGELOG")"           
      # tag 上传Release
      - name: uploadRelease
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: ${{ env.targetName }}.dmg
          asset_name: ${{ matrix.qt_ver }}-${{ env.targetName }}_${{ matrix.os }}_${{ steps.vars.outputs.sha_short }}.dmg
          tag: v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
          overwrite: true 
          release_name: GoldenDict-v${{env.version}}-${{env.version-suffix}}.${{ steps.vars.outputs.release_hm }}.${{ steps.vars.outputs.sha_short }}
          prerelease: ${{env.prerelease}}
          body: |
            release on date:      ${{steps.vars.outputs.release_date}} time: ${{steps.vars.outputs.release_time_clock}}  
            branch:               ${{ github.ref_name }}
            commit:               ${{ steps.vars.outputs.sha_short }} 
            Qt version:           Qt5.15.2, Qt6.X  
            Windows built with:   msvc64,  Visual studio 2019
            ## goldendict.exe can not be used alone 
            if you have a previous version. replace this maybe ok. if not ,download the whole bundle.

            AppImage built with:  Ubuntu-20.04 ,latest gcc
            macos built with:     macos-10.15,macos-11.0,clang_64 x86_64
                                  Qt6.X(Universal Build)
                                  Qt5.15.2(Intel Kind)
            auto built by github action. use on your on risk:-)   

            CHANGES:
            ${{ steps.changelog1.outputs.changelog }}  
            ${{ steps.changelog2.outputs.COMMIT_SUMMARY }}