docs: add Claude rules for winget PR and release workflow #30
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [master, main] | |
| paths-ignore: | |
| - "*.md" | |
| - "docs/**" | |
| - "LICENSE" | |
| - ".gitignore" | |
| - "packages/**" | |
| pull_request: | |
| branches: [master, main] | |
| paths-ignore: | |
| - "*.md" | |
| - "docs/**" | |
| - "LICENSE" | |
| - ".gitignore" | |
| - "packages/**" | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| test: | |
| name: Test on ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@4be9e76fd7c4901c61fb841f559994984270fce7 # stable | |
| - name: Cache cargo registry | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| - name: Install ffmpeg (Ubuntu) | |
| if: runner.os == 'Linux' | |
| run: sudo apt-get update && sudo apt-get install -y ffmpeg | |
| - name: Install ffmpeg (macOS) | |
| if: runner.os == 'macOS' | |
| run: brew install ffmpeg | |
| - name: Install ffmpeg (Windows) | |
| if: runner.os == 'Windows' | |
| run: choco install ffmpeg | |
| - name: Generate test fixtures | |
| run: | | |
| mkdir -p tests/fixtures | |
| ffmpeg -y -f lavfi -i "sine=frequency=440:duration=1" -ac 2 -ar 44100 -b:a 128k -f mp3 tests/fixtures/test_stereo.mp3 | |
| ffmpeg -y -f lavfi -i "sine=frequency=440:duration=1" -ac 1 -ar 44100 -b:a 64k -f mp3 tests/fixtures/test_mono.mp3 | |
| ffmpeg -y -f lavfi -i "sine=frequency=440:duration=1" -ac 2 -ar 44100 -b:a 128k -joint_stereo 1 -f mp3 tests/fixtures/test_joint_stereo.mp3 | |
| ffmpeg -y -f lavfi -i "sine=frequency=440:duration=1" -ac 2 -ar 44100 -q:a 2 -f mp3 tests/fixtures/test_vbr.mp3 | |
| - name: Build | |
| run: cargo build --verbose | |
| - name: Run unit tests | |
| run: cargo test --lib --verbose | |
| - name: Run integration tests | |
| run: cargo test --test integration_tests --verbose | |
| - name: Build with replaygain feature | |
| run: cargo build --features replaygain --verbose | |
| clippy: | |
| name: Clippy | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@4be9e76fd7c4901c61fb841f559994984270fce7 # stable | |
| with: | |
| components: clippy | |
| - name: Run clippy | |
| run: cargo clippy -- -D warnings | |
| fmt: | |
| name: Format | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@4be9e76fd7c4901c61fb841f559994984270fce7 # stable | |
| with: | |
| components: rustfmt | |
| - name: Check formatting | |
| run: cargo fmt -- --check | |
| compatibility: | |
| name: Compatibility Test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust | |
| uses: dtolnay/rust-toolchain@4be9e76fd7c4901c61fb841f559994984270fce7 # stable | |
| - name: Cache cargo registry | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| target | |
| key: ${{ runner.os }}-cargo-compat-${{ hashFiles('**/Cargo.lock') }} | |
| - name: Install mp3gain | |
| run: sudo apt-get update && sudo apt-get install -y mp3gain ffmpeg | |
| - name: Generate test fixtures | |
| run: | | |
| mkdir -p tests/fixtures | |
| ffmpeg -y -f lavfi -i "sine=frequency=440:duration=1" -ac 2 -ar 44100 -b:a 128k -f mp3 tests/fixtures/test_stereo.mp3 | |
| ffmpeg -y -f lavfi -i "sine=frequency=440:duration=1" -ac 1 -ar 44100 -b:a 64k -f mp3 tests/fixtures/test_mono.mp3 | |
| ffmpeg -y -f lavfi -i "sine=frequency=440:duration=1" -ac 2 -ar 44100 -b:a 128k -joint_stereo 1 -f mp3 tests/fixtures/test_joint_stereo.mp3 | |
| ffmpeg -y -f lavfi -i "sine=frequency=440:duration=1" -ac 2 -ar 44100 -q:a 2 -f mp3 tests/fixtures/test_vbr.mp3 | |
| - name: Build mp3rgain | |
| run: cargo build --release | |
| - name: Show mp3gain version | |
| run: mp3gain -v || true | |
| - name: Run compatibility tests | |
| run: | | |
| chmod +x ./scripts/compatibility-test.sh | |
| MP3GAIN_BIN=mp3gain MP3RGAIN_BIN=./target/release/mp3rgain ./scripts/compatibility-test.sh | |
| - name: Upload test artifacts | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: compatibility-test-results | |
| path: | | |
| tests/fixtures/*.mp3 | |
| retention-days: 7 |