name: CI on: push: branches: [main, master] pull_request: branches: [main, master] jobs: typescript: name: TypeScript Lint + Typecheck + Test runs-on: ubuntu-latest defaults: run: working-directory: MosaicIQ steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v2 - name: Install dependencies run: bun install --frozen-lockfile - name: Lint run: bun run lint - name: Typecheck run: bun run tsc --noEmit - name: Test run: bun test rust: name: Rust Format + Clippy + Test runs-on: ubuntu-latest defaults: run: working-directory: MosaicIQ/src-tauri steps: - uses: actions/checkout@v4 - name: Install Tauri system dependencies run: | sudo apt-get update sudo apt-get install -y \ libwebkit2gtk-4.1-dev \ build-essential \ curl \ wget \ file \ libxdo-dev \ libssl-dev \ libayatana-appindicator3-dev \ librsvg2-dev - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable with: components: rustfmt, clippy - name: Cache Cargo artifacts uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git MosaicIQ/src-tauri/target key: rust-${{ runner.os }}-${{ hashFiles('MosaicIQ/src-tauri/Cargo.lock') }} restore-keys: rust-${{ runner.os }}- - name: Check formatting run: cargo fmt --all -- --check - name: Clippy run: cargo clippy --all-targets --all-features -- -D warnings - name: Run tests run: cargo test --all-features