name: Rust on: push: branches: [ "main" ] tags: [ "v*" ] pull_request: branches: [ "main" ] env: CARGO_TERM_COLOR: always jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install system dependencies run: | sudo apt-get update sudo apt-get install -y \ libwebkit2gtk-4.1-dev \ libjavascriptcoregtk-4.1-dev \ libsoup-3.0-dev \ libgtk-3-dev \ libappindicator3-dev \ librsvg2-dev \ patchelf \ libssl-dev \ libdbus-1-dev - uses: dtolnay/rust-toolchain@stable with: components: clippy, rustfmt - uses: Swatinem/rust-cache@v2 - name: Check formatting run: cargo fmt --check - name: Lint with clippy run: cargo clippy -- -D warnings build: runs-on: ubuntu-latest needs: [lint] steps: - uses: actions/checkout@v4 - name: Install system dependencies run: | sudo apt-get update sudo apt-get install -y \ libwebkit2gtk-4.1-dev \ libjavascriptcoregtk-4.1-dev \ libsoup-3.0-dev \ libgtk-3-dev \ libappindicator3-dev \ librsvg2-dev \ patchelf \ libssl-dev \ libdbus-1-dev - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - name: Build (release) run: cargo build --release - uses: actions/upload-artifact@v4 with: name: wherry-x86_64 path: target/release/wherry test: runs-on: ubuntu-latest needs: [build] steps: - uses: actions/checkout@v4 - name: Install system dependencies run: | sudo apt-get update sudo apt-get install -y \ libwebkit2gtk-4.1-dev \ libjavascriptcoregtk-4.1-dev \ libsoup-3.0-dev \ libgtk-3-dev \ libappindicator3-dev \ librsvg2-dev \ patchelf \ libssl-dev \ libdbus-1-dev - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - name: Run tests run: cargo test release: if: startsWith(github.ref, 'refs/tags/v') runs-on: ubuntu-latest needs: [build, test] steps: - uses: actions/checkout@v4 - uses: actions/download-artifact@v4 with: name: wherry-x86_64 - name: Package binary run: | mkdir -p pkg/usr/bin pkg/usr/share/licenses/wherry pkg/usr/share/pixmaps pkg/usr/share/applications install -Dm755 wherry pkg/usr/bin/wherry install -Dm644 LICENSE pkg/usr/share/licenses/wherry/LICENSE install -Dm644 src/icons/128x128.png pkg/usr/share/pixmaps/wherry.png install -Dm644 dist/wherry.desktop pkg/usr/share/applications/wherry.desktop tar czf wherry-v${{ github.ref_name }}-x86_64-linux.tar.gz -C pkg . - uses: softprops/action-gh-release@v2 with: files: wherry-v${{ github.ref_name }}-x86_64-linux.tar.gz generate_release_notes: true