on:
  push:
    branches:
      - master
      - release/*
  pull_request:

name: Continuous integration

jobs:
  check:
    name: Check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - name: Dependencies
        run: sudo apt update -y && sudo apt install libgpgme11-dev libgpg-error-dev nettle-dev -y
      - uses: actions-rs/cargo@v1
        with:
          command: check

  ubuntutest:
    name: Test Suite on Ubuntu
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - name: Dependencies
        run: sudo apt update -y && sudo apt install libssl-dev libclang-dev libadwaita-1-dev libgpgme11-dev libgpg-error-dev libgtk-4-dev libxcb-shape0-dev libxcb-xfixes0-dev nettle-dev -y
      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: --all

  macostest:
    name: Test Suite on MacOS
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - name: Install dependencies
        run: |
          brew update || true
          brew install gpgme nettle || true
      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: -p ripasso-cursive

  fmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - run: rustup component add rustfmt
      - name: Dependencies
        run: sudo apt update -y && sudo apt install libgpgme11-dev libgpg-error-dev nettle-dev -y
      - uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check

  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - run: rustup component add clippy
      - name: Dependencies
        run: sudo apt update -y && sudo apt install libgpgme11-dev libgpg-error-dev nettle-dev -y
      - uses: actions-rs/cargo@v1
        with:
          command: clippy
          args: -- -D warnings

  audit:
    name: Audit
    runs-on: ubuntu-latest
    permissions:
      issues: write
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rust-lang/audit@v1
        name: Audit Rust Dependencies
