quake 0.5.0

Simple knowledge management tool for geek.
name: Publish

on:
  push:
    tags:
      - '*'

jobs:
  publish:
    name: Publish for ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        include:
          - os: ubuntu-latest
            artifact_name: quake
            asset_name: quake-linux
          - os: windows-latest
            artifact_name: quake.exe
            asset_name: quake-windows.exe
          - os: macos-latest
            artifact_name: quake
            asset_name: quake-macos

    steps:
      - uses: actions/checkout@v1

      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable

      - name: Build
        run: cargo build --release

      - name: Upload binaries to release
        uses: svenstaro/upload-release-action@v1-release
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: target/release/${{ matrix.artifact_name }}
          asset_name: ${{ matrix.asset_name }}
          tag: ${{ github.ref }}

      # frontend sections
      - name: install pnpm
        if: runner.os == 'macOS'
        run: npm install -g pnpm

      - name: pnpm install
        if: runner.os == 'macOS'
        working-directory: ./quake_webapp
        run: pnpm recursive install

      - name: pnpm build
        if: runner.os == 'macOS'
        working-directory: ./quake_webapp
        run: yarn dist

      - name: zip macos artifact
        if: runner.os == 'macOS'
        run: |
          cd quake_webapp && mv dist web && zip -qq -r ../web.zip web

      - name: Upload binaries to release
        if: runner.os == 'macOS'
        uses: svenstaro/upload-release-action@v1-release
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: web.zip
          asset_name: web.zip
          tag: ${{ github.ref }}