ci: check and build with features

This commit is contained in:
Ryan 2025-03-15 15:59:35 -04:00
parent dfac6e0413
commit f33eca7eab
Signed by: ErrorNoInternet
GPG Key ID: 2486BFB7B1E6A4A3
5 changed files with 39 additions and 12 deletions

View File

@ -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

View File

@ -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()

View File

@ -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<SocketAddr> = 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::<String>("MatrixHomeserverUrl")
&& let Ok(username) = globals.get::<String>("MatrixUsername")

View File

@ -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;

View File

@ -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::{