# .github/workflows/build.yml name: Build on: [push, pull_request] jobs: check: name: Check runs-on: ubuntu-latest defaults: run: working-directory: qml_plugin steps: - name: Setup | Checkout uses: actions/checkout@v4 - name: Setup | Qt run: | sudo apt-get update sudo apt-get install -y qt6-base-dev qt6-declarative-dev - name: Setup | Rust uses: dtolnay/rust-toolchain@nightly - name: Check run: cargo check lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup | Qt run: | sudo apt-get update sudo apt-get install -y qt6-base-dev qt6-declarative-dev - name: Setup | Rust uses: dtolnay/rust-toolchain@nightly - uses: giraffate/clippy-action@v1 with: reporter: "github-pr-check" github_token: ${{ secrets.GITHUB_TOKEN }} clippy_flags: --all --lib --bins --examples workdir: qml_plugin fmt: name: Rustfmt runs-on: ubuntu-latest defaults: run: working-directory: qml_plugin steps: - name: Setup | Checkout uses: actions/checkout@v4 - name: Setup | Rust uses: dtolnay/rust-toolchain@nightly - name: Install rustfmt run: rustup component add rustfmt - name: Format run: cargo fmt --all -- --check semver: name: Semver Check runs-on: ubuntu-latest defaults: run: working-directory: qml_plugin steps: - name: Setup | Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup | Qt run: | sudo apt-get update sudo apt-get install -y qt6-base-dev qt6-declarative-dev - name: Setup | Rust uses: dtolnay/rust-toolchain@nightly - name: Install cargo-semver-checks from git run: cargo install --git https://github.com/obi1kenobi/cargo-semver-checks cargo-semver-checks - name: Check semver run: cargo semver-checks --baseline-rev origin/main test: name: Test runs-on: ubuntu-latest defaults: run: working-directory: qml_plugin steps: - name: Setup | Checkout uses: actions/checkout@v4 - name: Setup | Qt run: | sudo apt-get update sudo apt-get install -y qt6-base-dev qt6-declarative-dev - name: Setup | Rust uses: dtolnay/rust-toolchain@nightly - name: Setup | Toolchain uses: taiki-e/install-action@v2 with: tool: cargo-nextest - name: Test run: cargo nextest run --no-tests=pass audit: name: Dependency Audit runs-on: ubuntu-latest defaults: run: working-directory: qml_plugin steps: - name: Setup | Checkout uses: actions/checkout@v4 - name: Setup | Rust uses: dtolnay/rust-toolchain@nightly - name: Setup | Toolchain | Install cargo-audit run: cargo install cargo-audit - name: Audit run: cargo audit dep: name: Unused Dependencies runs-on: ubuntu-latest defaults: run: working-directory: qml_plugin steps: - name: Setup | Checkout uses: actions/checkout@v4 - name: Setup | Rust uses: dtolnay/rust-toolchain@nightly - name: Check Unused Dependencies uses: bnjbvr/cargo-machete@main ui: name: UI (QML/JS/Shell) Linting runs-on: ubuntu-latest steps: - name: Setup | Checkout uses: actions/checkout@v4 - name: Setup | Qt & ShellCheck run: | sudo apt-get update sudo apt-get install -y qt6-declarative-dev-tools shellcheck - name: Setup | Node.js uses: actions/setup-node@v4 with: node-version: 20 - name: Install Prettier run: npm install -g prettier - name: Format JS run: | cat < .prettierignore utils/fuzzysort.js utils/fzf.js utils/levendist.js EOF prettier --check "utils/**/*.js" # not working rn # - name: Check QML Format # env: # QT_LOGGING_RULES: qt.qmldom*=false # run: find . -name "*.qml" -exec /usr/lib/qt6/bin/qmlformat {} + - name: Lint Shell run: shellcheck utils/*.sh