diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..2959e3a4 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,126 @@ +name: Continuous Integration + +on: + push: + branches: + - master + pull_request: + + +jobs: + format: + runs-on: ubuntu-22.04 + steps: + - name: Checkout sources + uses: actions/checkout@v3 + - name: Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + profile: minimal + components: rustfmt + default: true + - name: Cargo cache + uses: actions/cache@v3 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + key: ${{ runner.os }}-cargo-rust_stable-${{ hashFiles('**/Cargo.toml') }} + - name: Format + uses: actions-rs/cargo@v1 + with: + command: fmt + args: -- --check + + tests: + needs: + - format + strategy: + fail-fast: false + matrix: + features: + - 'winit_swbuf debug' + - 'winit_swbuf tokio' + - winit_swbuf + - winit_wgpu + - wayland + - applet + runs-on: ubuntu-22.04 + steps: + - name: Checkout sources + uses: actions/checkout@v3 + with: + submodules: recursive + - name: Get date for registry cache + id: date + run: echo "::set-output name=date::$(date +'%Y-%m-%d')" + - name: Cargo registry cache + uses: actions/cache@v3 + with: + path: | + ~/.cargo/registry/index + ~/.cargo/registry/cache + ~/.cargo/git + key: ${{ runner.os }}-cargo-registry-${{ steps.date.outputs.date }} + restore-keys: ${{ runner.os }}-cargo-registry- + - name: System dependencies + run: sudo apt-get update; sudo apt-get install -y libxkbcommon-dev libwayland-dev + - name: Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + default: true + - name: Test features + uses: actions-rs/cargo@v1 + env: + RUST_BACKTRACE: full + with: + command: test + args: --no-default-features --features "${{ matrix.features }}" + + examples: + needs: + - format + strategy: + fail-fast: false + matrix: + examples: + - "cosmic" + - "cosmic_sctk" + runs-on: ubuntu-22.04 + steps: + - name: Checkout sources + uses: actions/checkout@v3 + with: + submodules: recursive + - name: Get date for registry cache + id: date + run: echo "::set-output name=date::$(date +'%Y-%m-%d')" + - name: Cargo registry cache + uses: actions/cache@v3 + with: + path: | + ~/.cargo/registry/index + ~/.cargo/registry/cache + ~/.cargo/git + key: ${{ runner.os }}-cargo-registry-${{ steps.date.outputs.date }} + restore-keys: ${{ runner.os }}-cargo-registry- + - name: System dependencies + run: sudo apt-get update; sudo apt-get install -y libxkbcommon-dev libwayland-dev + - name: Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + default: true + - name: Test example + uses: actions-rs/cargo@v1 + env: + RUST_BACKTRACE: full + with: + command: check + args: -p "${{ matrix.examples }}" + diff --git a/Cargo.toml b/Cargo.toml index 70fc2504..88dff9f0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,11 +10,13 @@ name = "cosmic" default = ["swbuf", "winit", "tokio"] debug = ["iced/debug"] swbuf = ["iced/swbuf", "iced_swbuf"] -wayland = ["iced/wayland", "iced_glow"] +wayland = ["iced/wayland", "iced/glow"] wgpu = ["iced/wgpu", "iced_wgpu"] tokio = ["iced/tokio"] winit = ["iced/winit", "iced_winit"] -applet = ["cosmic-panel-config", "sctk"] +applet = ["cosmic-panel-config", "sctk", "wayland"] +winit_swbuf = ["winit", "swbuf"] +winit_wgpu = ["winit", "wgpu"] [dependencies] freedesktop-icons = "0.2.2" diff --git a/examples/cosmic-sctk/Cargo.toml b/examples/cosmic-sctk/Cargo.toml index 0d2d8d84..c8aeeb78 100644 --- a/examples/cosmic-sctk/Cargo.toml +++ b/examples/cosmic-sctk/Cargo.toml @@ -6,4 +6,4 @@ edition = "2021" publish = false [dependencies] -libcosmic = { path = "../.." } +libcosmic = { path = "../..", default-features = false, features = ["wayland"] } diff --git a/examples/cosmic/Cargo.toml b/examples/cosmic/Cargo.toml index c29e3f1d..ccf2bcce 100644 --- a/examples/cosmic/Cargo.toml +++ b/examples/cosmic/Cargo.toml @@ -7,4 +7,4 @@ publish = false [dependencies] apply = "0.3.0" -libcosmic = { path = "../..", default-features = false, features = ["debug", "wgpu", "winit"] } +libcosmic = { path = "../..", default-features = false, features = ["debug", "winit_wgpu"] }