diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index ab10a52..bff3312 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -10,12 +10,17 @@ on: jobs: errornowatcher: - name: errornowatcher (${{ matrix.os }}) + name: errornowatcher (${{ matrix.os }}, ${{ matrix.feature.name }}) runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-24.04, ubuntu-24.04-arm] + feature: + - name: default + + - name: mimalloc + flags: "-F mimalloc" steps: - name: Clone repository @@ -33,16 +38,15 @@ jobs: ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ - key: build-${{ matrix.os }}-${{ hashFiles('**.toml', 'Cargo.*') }} + key: build-${{ matrix.os }}-${{ matrix.feature.name }}-${{ hashFiles('**.toml', 'Cargo.*') }} - name: Switch to nightly toolchain run: rustup default nightly - - name: Build in release mode - run: cargo build --release + - run: cargo build --release ${{ matrix.feature.flags }} - name: Upload build artifacts uses: actions/upload-artifact@v4 with: - name: errornowatcher_${{ matrix.os }} + name: errornowatcher_${{ matrix.feature.name }}_${{ matrix.os }} path: target/release/errornowatcher diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 366882b..fae5335 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -28,9 +28,23 @@ jobs: run: taplo fmt --check Cargo.toml rust: - name: Rust + name: Rust (${{ matrix.feature.name }}) runs-on: ubuntu-24.04 + strategy: + matrix: + feature: + - name: default + + - name: minimal-mimalloc + flags: "--no-default-features -F mimalloc" + + - name: minimal + flags: "--no-default-features" + + - name: mimalloc + flags: "-F mimalloc" + steps: - name: Clone repository uses: actions/checkout@v4 @@ -47,7 +61,7 @@ jobs: ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ - key: build-${{ matrix.os }}-${{ hashFiles('**.toml', 'Cargo.*') }} + key: build-${{ matrix.os }}-${{ matrix.feature.name }}-${{ hashFiles('**.toml', 'Cargo.*') }} - name: Switch to nightly toolchain run: rustup default nightly @@ -55,8 +69,7 @@ jobs: - name: Install components run: rustup component add clippy rustfmt - - name: cargo clippy - run: cargo clippy -- -D clippy::pedantic + - run: cargo clippy ${{ matrix.feature.flags }} -- -D warnings -D clippy::pedantic - name: cargo fmt if: always() diff --git a/src/events.rs b/src/events.rs index 9257424..9f02cbb 100644 --- a/src/events.rs +++ b/src/events.rs @@ -3,7 +3,7 @@ use crate::{ commands::CommandSource, http::serve, lua::{client, direction::Direction, player::Player, vec3::Vec3}, - matrix, particle, + particle, replay::recorder::Recorder, }; use anyhow::{Context, Result}; @@ -19,6 +19,9 @@ use ncr::utils::trim_header; use std::{net::SocketAddr, process::exit}; use tokio::net::TcpListener; +#[cfg(feature = "matrix")] +use crate::matrix; + #[allow(clippy::too_many_lines)] pub async fn handle_event(client: Client, event: Event, state: State) -> Result<()> { match event { @@ -209,6 +212,8 @@ pub async fn handle_event(client: Client, event: Event, state: State) -> Result< let globals = state.lua.globals(); lua_init(client, &state, &globals).await?; + + #[cfg(feature = "matrix")] matrix_init(state.clone(), &globals); let Some(address): Option = globals @@ -270,6 +275,7 @@ async fn lua_init(client: Client, state: &State, globals: &Table) -> Result<()> call_listeners(state, "init", || Ok(())).await } +#[cfg(feature = "matrix")] fn matrix_init(state: State, globals: &Table) { if let Ok(homeserver_url) = globals.get::("MatrixHomeserverUrl") && let Ok(username) = globals.get::("MatrixUsername") diff --git a/src/lua/mod.rs b/src/lua/mod.rs index 07039db..bf95bfc 100644 --- a/src/lua/mod.rs +++ b/src/lua/mod.rs @@ -4,13 +4,15 @@ pub mod container; pub mod direction; pub mod events; pub mod logging; -pub mod matrix; pub mod nochatreports; pub mod player; pub mod system; pub mod thread; pub mod vec3; +#[cfg(feature = "matrix")] +pub mod matrix; + use crate::{ListenerMap, build_info::built}; use mlua::{Lua, Table}; use std::io; diff --git a/src/main.rs b/src/main.rs index 361c7e6..9d69321 100644 --- a/src/main.rs +++ b/src/main.rs @@ -6,10 +6,12 @@ mod commands; mod events; mod http; mod lua; -mod matrix; mod particle; mod replay; +#[cfg(feature = "matrix")] +mod matrix; + use anyhow::Context; use arguments::Arguments; use azalea::{