exomind 0.1.15

CLI for Exomind, a personal knowledge management tool
Documentation
name: Push tester

on:
  pull_request:
  push:
    branches:
      - master
      - "v0.*"
      - "v1.*"

env:
  CARGO_TERM_COLOR: always

jobs:
  rust_checks:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - uses: actions-rs/toolchain@v1.0.7
        with:
          toolchain: stable
          profile: minimal
          components: rustfmt, clippy

      - uses: Swatinem/rust-cache@v1

      - name: Install Protoc
        uses: arduino/setup-protoc@v1
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}

      - name: Check formatting
        uses: actions-rs/cargo@v1.0.3
        with:
          command: fmt
          args: --all -- --check

      - name: Clippy & check
        uses: actions-rs/clippy-check@v1.0.7
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          args: --all-features

      - name: Tests
        uses: actions-rs/cargo@v1.0.3
        with:
          command: test
          args: --all --all-features

  rust_tests:
    strategy:
      fail-fast: true
      matrix:
        pair:
          - target: x86_64-unknown-linux-gnu
            os: ubuntu-latest
          - target: x86_64-apple-darwin
            os: macOS-11
          - target: x86_64-pc-windows-msvc
            os: windows-latest

    runs-on: ${{ matrix.pair.os }}

    steps:
      - uses: actions/checkout@v3

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

      - uses: Swatinem/rust-cache@v1
        with:
          key: bust-1

      - name: Install Protoc
        uses: arduino/setup-protoc@v1
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}

      - name: Tests
        uses: actions-rs/cargo@v1.0.3
        with:
          command: test
          args: --all --all-features

  # Make sure that `exm` compiles on some targets that we don't run tests on.
  exm_build_check:
    strategy:
      fail-fast: true
      matrix:
        pair:
          - target: armv7-unknown-linux-gnueabihf
            os: ubuntu-latest
            cross: true
          - target: aarch64-apple-darwin
            os: macOS-11
            cross: false

    runs-on: ${{ matrix.pair.os }}

    steps:
      - uses: actions/checkout@v3

      - uses: actions-rs/toolchain@v1.0.7
        with:
          toolchain: stable
          target: ${{ matrix.pair.target }}
          profile: minimal

      - uses: Swatinem/rust-cache@v1

      - name: Install master version of cross # TODO: Remove me once new cross is released
        run: |
          cargo install cross --git https://github.com/cross-rs/cross

      - name: Install Protoc
        uses: arduino/setup-protoc@v1
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}

      - uses: actions-rs/cargo@v1.0.3
        with:
          use-cross: ${{ matrix.pair.cross }}
          command: check
          args: -p exm --target ${{ matrix.pair.target }}

  web_build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Setup Node
        uses: actions/setup-node@v3.5.1
        with:
          node-version: 14.x

      - name: Build & test
        run: |
          cd web
          yarn install --frozen-lockfile
          yarn build
          yarn test
          yarn lint

  electron_build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Setup Node
        uses: actions/setup-node@v3.5.1
        with:
          node-version: 14.x

      - name: Build
        run: |
          cd web
          yarn install --frozen-lockfile
          yarn electron

  ios_build:
    runs-on: macos-11
    steps:
      - uses: actions/checkout@v3

      - name: Select latest Xcode
        run: |
          sudo xcode-select -s "/Applications/Xcode_13.2.1.app" # select latest xcode

      - name: Install dependencies
        run: |
          HOMEBREW_NO_INSTALL_CLEANUP=1 brew install swift-protobuf

      - uses: actions/cache@v3
        with:
          path: ios/Pods
          key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
          restore-keys: |
            ${{ runner.os }}-pods-

      - name: Build
        run: |
          cd $GITHUB_WORKSPACE/web
          yarn install --frozen-lockfile
          yarn build_ios

          cd $GITHUB_WORKSPACE/ios
          pod install
          xcodebuild -workspace Exomind.xcworkspace -scheme Exomind -destination "generic/platform=iOS" CODE_SIGNING_ALLOWED=NO

  app_package:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - uses: actions-rs/toolchain@v1.0.7
        with:
          toolchain: stable
          profile: minimal
          target: wasm32-wasi

      - uses: Swatinem/rust-cache@v1

      - name: Install Protoc
        uses: arduino/setup-protoc@v1
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}

      - name: Download exo
        run: |
          wget https://github.com/appaquet/exocore/releases/download/v0.1.24/exo.x86_64-unknown-linux-gnu.tar.gz -O - | tar -zx 
          echo `pwd` >> $GITHUB_PATH

      - name: Build & package app
        run: |
          cd $GITHUB_WORKSPACE
          ./app/tools/build.sh

  markdown_links_check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: gaurav-nelson/github-action-markdown-link-check@1.0.14