name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
jobs:
format:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 with:
components: rustfmt
- run: cargo fmt --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 with:
components: clippy
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 - run: cargo clippy --all-targets --all-features --locked -- -D warnings
test:
name: Test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 - run: cargo test --all-features --locked
macos-app:
name: macOS menu bar
runs-on: macos-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 - uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 - run: >
swift format lint --strict
--configuration apps/macos/.swift-format
--recursive apps/macos/Sources apps/macos/Tests apps/macos/Package.swift
- run: swift test --package-path apps/macos
- run: apps/macos/scripts/build-app.sh
- run: test -x dist/DevCleaner.app/Contents/Helpers/devclean
- run: test -f dist/DevCleaner.app/Contents/Resources/AppIcon.icns
- run: dist/DevCleaner.app/Contents/Helpers/devclean --version | grep 'devclean 0.5.0'
- run: codesign --verify --deep --strict --verbose=2 dist/DevCleaner.app
vscode-extension:
name: VS Code extension
runs-on: ubuntu-latest
defaults:
run:
working-directory: editors/vscode
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 with:
node-version: 22
cache: npm
cache-dependency-path: editors/vscode/package-lock.json
- run: npm ci
- run: npm test
- run: npm run check
msrv:
name: MSRV (1.85)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 with:
toolchain: 1.85.0
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 - run: cargo check --all-targets --all-features --locked
skill:
name: Skill validation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 - name: Validate skill package
shell: bash
run: |
test -f skills/dev-disk-cleaner/SKILL.md
test -f skills/dev-disk-cleaner/agents/openai.yaml
test -x skills/dev-disk-cleaner/scripts/devclean
grep -q '^name: dev-disk-cleaner$' skills/dev-disk-cleaner/SKILL.md
grep -q '^description:' skills/dev-disk-cleaner/SKILL.md
sh -n skills/dev-disk-cleaner/scripts/devclean
package:
name: Cargo package
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 - run: cargo package --locked