From 9dfd493bf5627a933030262614a71018a3561530 Mon Sep 17 00:00:00 2001 From: jutty Date: Fri, 26 Dec 2025 16:48:08 -0300 Subject: [PATCH] Cleanup and rework justfile, add some CI-only checks --- .justfile | 206 ++++++++++++++++++++++++++++---------------------- Cargo.lock | 64 +++++++++------- docs/notes.md | 12 --- src/dev.rs | 1 + src/main.rs | 17 +++++ 5 files changed, 167 insertions(+), 133 deletions(-) diff --git a/.justfile b/.justfile index 30bd50d..159f24e 100644 --- a/.justfile +++ b/.justfile @@ -1,55 +1,33 @@ -_default: - @just --list - -watch_cmd := "watchexec -qc -r -e rs,toml,html --color always -- " -cover_cmd := 'cargo llvm-cov --color always --ignore-filename-regex "main\.rs|dev\.rs"' -just_cmd := 'just --unstable --timestamp --explain --command-color green' - # DEVELOP -# Start server +# Update dependencies [group: 'develop'] -run: - cargo run -- --hostname localhost --port 3003 +update: + cargo update --verbose + +alias u := update + +# Build and run server +[group: 'develop'] +run host='::1' port='3003' *args: + {{ debug_vars }} cargo run -- \ + --hostname {{ host }} --port {{ port }} {{ args }} alias r := run -# Build on changes +# Build and run on changes [group: 'develop'] run-watch: {{ watch_cmd }} {{ just_cmd }} run -alias rw := run-watch -alias dev := run-watch -alias d := run-watch +alias w := run-watch -# Run all assessments on changes +# Format all files [group: 'develop'] -verify-watch: - {{ watch_cmd }} {{ just_cmd }} verify +format: + cargo fmt -alias vw := verify-watch - -# Run tests on changes -[group: 'develop'] -test-watch: - {{ watch_cmd }} {{ just_cmd }} test - -alias tw := test-watch - -# Run tests with coverage reports on changes -[group: 'develop'] -cover-watch: - {{ watch_cmd }} {{ just_cmd }} cover-report - -alias ow := cover-watch - -# Run cargo check on changes -[group: 'develop'] -check-watch: - {{ watch_cmd }} {{ just_cmd }} check - -alias cw := check-watch +alias f := format # Lint [group: 'develop'] @@ -65,30 +43,43 @@ lint-watch: alias lw := lint-watch -# Assess formatting on changes +# Run cargo check on changes [group: 'develop'] -format-watch: - {{ watch_cmd }} {{ just_cmd }} format-assess +check-watch: + {{ watch_cmd }} {{ just_cmd }} check -alias fw := format-watch +alias cw := check-watch -# Format all files +# Apply rustc lint fixes [group: 'develop'] -format: - cargo fmt +rustc-fix: + cargo fix --allow-dirty -alias f := format +alias rf := rustc-fix -# Verify before push +# Apply all automatic fixes [group: 'develop'] -push: verify - git push +fix: rustc-fix format -alias p := push +alias x := fix + +# Run tests on changes +[group: 'develop'] +test-watch: + {{ watch_cmd }} {{ just_cmd }} test + +alias tw := test-watch + +# Run tests with coverage report on changes +[group: 'develop'] +cover-watch: + {{ watch_cmd }} {{ just_cmd }} cover-report + +alias ow := cover-watch # Make coverage report [group: 'develop'] -cover-report: cover +cover-report: test-cover {{ cover_cmd }} report --html {{ cover_cmd }} report @@ -96,23 +87,40 @@ alias or := cover-report # Open coverage report [group: 'develop'] -cover-open: cover +cover-open: test-cover {{ cover_cmd }} report --open alias oo := cover-open -# ANALYSIS +# Verify and push +[group: 'develop'] +push: verify + git push -# Run all analysis -[group: 'assess'] -verify: format-assess lint-assess check-assess test-assess cover-assess +alias p := push -alias v := verify +# Generate crate documentation +[group: 'document'] +doc: + cargo doc --document-private-items --no-deps -# Assess coverage -[group: 'assess'] -cover-assess: cover - {{ cover_cmd }} --fail-under-regions 95 report +alias d := doc + +# Generate crate and dependencies documentation +[group: 'document'] +doc-all: + cargo doc --document-private-items + +alias da := doc-all + +# Open documentation +[group: 'document'] +doc-open: doc + xdg-open target/doc/en/index.html + +alias do := doc-open + +# ASSESSMENTS # Assess formatting [group: 'assess'] @@ -121,10 +129,12 @@ format-assess: alias fc := format-assess -# Assess lints +# Assess production lints [group: 'assess'] -lint-assess $RUSTFLAGS="-Dwarnings": - cargo clippy +lint-assess: + cargo clippy -- \ + -D clippy::dbg_macro -D clippy::print_stdout -D clippy::print_stderr \ + -D clippy::todo -D clippy::unimplemented -D clippy::unreachable alias la := lint-assess @@ -135,20 +145,6 @@ check: alias c := check -# Fail on any cargo check warnings -[group: 'assess'] -check-assess $RUSTFLAGS="-Dwarnings": - cargo check --workspace - -alias ca := check - -# Assess warnings in tests -[group: 'assess'] -test-assess $RUSTFLAGS="-Dwarnings": - just test - -alias ta := test-assess - # Run tests [group: 'assess'] test: @@ -159,21 +155,25 @@ alias t := test # Run tests with coverage [group: 'assess'] -cover: +test-cover: {{ cover_cmd }} --no-report -- --skip 'serial_tests::' {{ cover_cmd }} --no-report -- --test 'serial_tests::' --test-threads 1 -alias o := cover +alias o := test-cover + +# Assess coverage +[group: 'assess'] +cover-assess: test-cover + {{ cover_cmd }} --fail-under-regions 95 report + +# Run all assessments +[group: 'assess'] +verify: format-assess lint-assess check test cover-assess + +alias v := verify # BUILD -# Build project with Cargo -[group: 'build'] -build: - cargo build - -alias b := build - # Cleanup build artifacts [group: 'build'] clean: @@ -181,15 +181,37 @@ clean: alias cl := clean -# Clean, run assessments, release build +# Build project with Cargo [group: 'build'] -full-build: clean verify release-build +build: update + cargo build -alias fb := full-build +alias b := build # Release build [group: 'build'] -release-build: verify +release-build: update verify cargo build --release alias rb := release-build + +# Clean, run assessments, release build +[group: 'build'] +full-build: clean update verify release-build + +alias fb := full-build + +## META + +[default] +_default: + @just --list --unsorted --justfile {{justfile()}} + +export RUSTFLAGS := "-Dwarnings" +export RUST_BACKTRACE := "1" +export CARGO_TERM_COLOR := 'always' + +debug_vars := 'DEBUG=${DEBUG:-} DEBUG_FILTER=${DEBUG_FILTER:-}' +watch_cmd := "watchexec -qc -r -e rs,toml,html --color always -- " +cover_cmd := 'cargo llvm-cov --color always --ignore-filename-regex "main\.rs|dev\.rs"' +just_cmd := 'just --timestamp --explain --command-color green' diff --git a/Cargo.lock b/Cargo.lock index 7e88c5b..4ce3186 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -40,9 +40,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "axum" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" +checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" dependencies = [ "axum-core", "bytes", @@ -123,9 +123,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.19.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" [[package]] name = "bytes" @@ -135,9 +135,9 @@ checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" [[package]] name = "cc" -version = "1.2.49" +version = "1.2.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" +checksum = "7a0aeaff4ff1a90589618835a598e545176939b97874f7abc7851caa0618f203" dependencies = [ "find-msvc-tools", "shlex", @@ -279,9 +279,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "find-msvc-tools" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" +checksum = "645cbb3a84e60b7531617d5ae4e57f7e27308f6445f5abf653209ea76dec8dff" [[package]] name = "flate2" @@ -529,9 +529,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "7ee5b5339afb4c41626dde77b7a611bd4f2c202b897852b4bcf5d03eddc61010" [[package]] name = "js-sys" @@ -872,9 +872,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea" [[package]] name = "same-file" @@ -917,15 +917,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.145" +version = "1.0.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +checksum = "6af14725505314343e673e9ecb7cd7e8a36aa9791eb936235a3567cc31447ae4" dependencies = [ "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -941,9 +941,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" dependencies = [ "serde_core", ] @@ -1087,9 +1087,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.8" +version = "0.9.10+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" +checksum = "0825052159284a1a8b4d6c0c86cbc801f2da5afd2b225fa548c72f2e74002f48" dependencies = [ "indexmap", "serde_core", @@ -1102,27 +1102,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.3" +version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.4" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.4" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" +checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" [[package]] name = "tower" @@ -1154,9 +1154,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "log", "pin-project-lite", @@ -1165,9 +1165,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.35" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", ] @@ -1568,3 +1568,9 @@ name = "zeroize" version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zmij" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0095ecd462946aa3927d9297b63ef82fb9a5316d7a37d134eeb36e58228615a" diff --git a/docs/notes.md b/docs/notes.md index c1515e5..35dde5c 100644 --- a/docs/notes.md +++ b/docs/notes.md @@ -1,17 +1,5 @@ # Notes -## CI - -When adding CI jobs, consider the following lints: - -- `clippy::dbg_macro` -- `clippy::print_stderr` -- `clippy::print_stdout` -- `clippy::todo` -- `clippy::unimplemented` -- `clippy::unreachable` -- `clippy::use_debug` - ## BTreeMap Consider replacing HashMap with BTreeMap to stop nodes from shifting position constantly on every page load. diff --git a/src/dev.rs b/src/dev.rs index 743ade7..b510862 100644 --- a/src/dev.rs +++ b/src/dev.rs @@ -1,3 +1,4 @@ +#[allow(clippy::print_stderr)] pub fn elog(function: &str, message: &str) { eprintln!("{:?} [{function}] {message}", crate::ONSET.elapsed()); } diff --git a/src/main.rs b/src/main.rs index 6a7bfba..2f99d16 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,9 +4,12 @@ use en::{prelude::*, ONSET, syntax::serial::populate_graph, syntax}; #[tokio::main] async fn main() -> io::Result<()> { + print_debugging_state(); + let args = syntax::command::Arguments::new().parse(); let address = args.make_address(); + #[allow(clippy::print_stderr)] panic::set_hook(Box::new(|info| { let payload = info .payload_as_str() @@ -49,3 +52,17 @@ async fn main() -> io::Result<()> { Ok(()) } + +fn print_debugging_state() { + let level: u8 = std::env::var("DEBUG") + .unwrap_or("0".to_string()) + .trim() + .parse() + .unwrap_or(0); + + let filter = std::env::var("DEBUG_FILTER").unwrap_or_default(); + + if level > 0 || !filter.is_empty() { + log!("DEBUG = {level}, DEBUG_FILTER = {filter:?}"); + } +}