tracing-subscriber-init 0.2.7

A trait and some functions to make tracing subscriber initialization a bit easier
Documentation
# =============================================================================
# Rakefile.toml — tracing-subscriber-init build pipeline
#
# Quick reference:
#
#   cargo rake                           default (most: fmt→clippy→build→test→coverage)
#   cargo rake most ^test ^coverage      skip tests and coverage
#   cargo rake most clean                add cargo clean
#   cargo rake all                       everything (puc + most + audit + clean)
#   cargo rake daily                     alias for all (morning full-pipeline run)
#   cargo rake audit                     cargo-audit against .cargo/audit.toml's ignore list
#   cargo rake release                   run scripts/release/release.fish: push the current vX.Y.Z
#                                         tag, wait for .repomon/release.toml + audit.toml to verify
#                                         it, then publish to crates.io (skipped for a
#                                         vX.Y.Z-rc.N tag)
# =============================================================================

# ---------------------------------------------------------------------------
# tools
# ---------------------------------------------------------------------------

[tool.cargo.matrix]
crate = "cargo-matrix"
check = ["cargo", "matrix", "--version"]
install = ["cargo", "install", "cargo-matrix", "--force", "--locked"]
update = true

[tool.cargo.nextest]
crate = "cargo-nextest"
check = ["cargo", "nextest", "--version"]
install = ["cargo", "install", "cargo-nextest", "--force", "--locked"]
update = true

[tool.cargo.llvm-cov]
crate = "cargo-llvm-cov"
check = ["cargo", "llvm-cov", "--version"]
install = ["cargo", "install", "cargo-llvm-cov", "--force", "--locked"]
update = true

[tool.cargo.audit]
crate = "cargo-audit"
check = ["cargo", "audit", "--version"]
install = ["cargo", "install", "cargo-audit", "--force", "--locked"]
update = true

[tool.fish.puc]
hint = "The 'puc' fish function is required to run this target"

# ---------------------------------------------------------------------------
# update
# ---------------------------------------------------------------------------

[target.puc]
tools = ["puc"]
time_tracking = false

[[target.puc.command]]
name = "puc"
platform = ["linux"]
fish = "puc"

# ---------------------------------------------------------------------------
# fmt
# ---------------------------------------------------------------------------

[[target.fmt.command]]
name = "fmt"
cmd = ["cargo", "fmt"]

[[target.fmt.command]]
name = "fmt check"
cmd = ["cargo", "fmt", "--all", "--", "--check"]

# ---------------------------------------------------------------------------
# clippy
# ---------------------------------------------------------------------------

[target.clippy]
tools = ["matrix"]

[[target.clippy.command]]
name = "clippy"
cmd = ["cargo", "matrix", "clippy", "--all-targets", "--", "-Dwarnings"]

# ---------------------------------------------------------------------------
# build
# ---------------------------------------------------------------------------

[target.build]
tools = ["matrix"]

[[target.build.command]]
name = "build"
cmd = ["cargo", "matrix", "build"]

# ---------------------------------------------------------------------------
# test
# ---------------------------------------------------------------------------

[target.test]
depends_on = ["build"]
tools = ["matrix", "nextest"]

[[target.test.command]]
name = "nextest"
cmd = ["cargo", "matrix", "nextest", "run"]

# ---------------------------------------------------------------------------
# coverage
# ---------------------------------------------------------------------------

[target.coverage]
depends_on = ["test"]
tools = ["matrix", "llvm-cov", "nextest"]

[[target.coverage.command]]
name = "coverage"
cmd = [
    "cargo",
    "matrix",
    "-F",
    "unstable",
    "llvm-cov",
    "nextest",
    "--no-report",
]

[[target.coverage.command]]
name = "lcov.info"
cmd = ["cargo", "llvm-cov", "report", "--lcov", "--output-path", "lcov.info"]

[[target.coverage.command]]
name = "html"
cmd = ["cargo", "llvm-cov", "report", "--html"]

# ---------------------------------------------------------------------------
# audit
# ---------------------------------------------------------------------------

[target.audit]
tools = ["audit"]

[[target.audit.command]]
name = "audit"
cmd = ["cargo", "audit", "--deny", "warnings"]

# ---------------------------------------------------------------------------
# release — publishes the current tag to crates.io. See scripts/release/
# release.fish for the full pipeline (push tag → wait for
# .repomon/release.toml's linux-rake/macos-rake/windows-rake jobs and
# .repomon/audit.toml's audit job to hand back success markers → cargo
# publish, skipped for a -rc tag). platform = ["linux"] because that's
# where this machine's crates.io login lives — repomon has no
# secrets-injection mechanism, so publishing is a local step, never a
# repomon one.
# ---------------------------------------------------------------------------

[target.release]

[[target.release.command]]
name = "release"
platform = ["linux"]
fish = "fish scripts/release/release.fish"

# ---------------------------------------------------------------------------
# clean
# ---------------------------------------------------------------------------

[[target.clean.command]]
name = "clean"
cmd = ["cargo", "clean"]

[[target.clean.command]]
name = "rm lcov.info"
sh = "rm -f lcov.info"
fish = "rm -f lcov.info"
ps = "Remove-Item -Force lcov.info -ErrorAction Ignore"

# ---------------------------------------------------------------------------
# aggregates
# ---------------------------------------------------------------------------

[target.most]
depends_on = ["fmt", "clippy", "build", "test", "coverage"]

# audit is deliberately left out of `most`/default -- it now runs
# continuously via the dedicated .repomon/audit.toml workflow on every
# release-tag push, so re-running it as part of every `most` invocation
# would be redundant. Still included in `all`/`daily` for a full local
# pipeline run.
[target.all]
depends_on = ["puc", "fmt", "clippy", "audit", "build", "test", "coverage", "clean"]

[target.daily]
depends_on = ["all"]

[target.default]
depends_on = ["most"]