Cleanup and rework justfile, add some CI-only checks

This commit is contained in:
Juno Takano 2025-12-26 16:48:08 -03:00
commit 9dfd493bf5
5 changed files with 163 additions and 129 deletions

206
.justfile
View file

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

64
Cargo.lock generated
View file

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

View file

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

View file

@ -1,3 +1,4 @@
#[allow(clippy::print_stderr)]
pub fn elog(function: &str, message: &str) {
eprintln!("{:?} [{function}] {message}", crate::ONSET.elapsed());
}

View file

@ -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:?}");
}
}