Cleanup and rework justfile, add some CI-only checks
This commit is contained in:
parent
e3d0343314
commit
9dfd493bf5
5 changed files with 163 additions and 129 deletions
206
.justfile
206
.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'
|
||||
|
|
|
|||
64
Cargo.lock
generated
64
Cargo.lock
generated
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
#[allow(clippy::print_stderr)]
|
||||
pub fn elog(function: &str, message: &str) {
|
||||
eprintln!("{:?} [{function}] {message}", crate::ONSET.elapsed());
|
||||
}
|
||||
|
|
|
|||
17
src/main.rs
17
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:?}");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue