[package]
name = "ctl-core"
version = "0.6.13"
edition = "2024"
rust-version = "1.99.0"
description = "Shared clap chassis for the *ctl CLIs"
license = "MIT"
repository = "https://github.com/victor-software-house/ctl-core"
keywords = ["clap", "cli", "help", "color"]
categories = ["command-line-interface", "development-tools"]
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[package.metadata.cargo-machete]
ignored = ["usage-lib"]
[lints.rust]
unsafe_code = "forbid"
missing_docs = "deny"
missing_debug_implementations = "deny"
unreachable_pub = "deny"
rust_2018_idioms = { level = "deny", priority = -1 }
[lints.rustdoc]
broken_intra_doc_links = "deny"
private_intra_doc_links = "deny"
invalid_html_tags = "deny"
invalid_codeblock_attributes = "deny"
[lints.clippy]
all = { level = "deny", priority = -1 }
pedantic = { level = "deny", priority = -1 }
cargo = { level = "deny", priority = -1 }
dbg_macro = "deny"
todo = "deny"
unimplemented = "deny"
unwrap_used = "deny"
expect_used = "deny"
disallowed_macros = "deny"
wildcard_enum_match_arm = "deny"
match_wildcard_for_single_variants = "deny"
allow_attributes = "deny"
allow_attributes_without_reason = "deny"
multiple_crate_versions = "allow"
[features]
default = ["app"]
app = ["cli", "view", "help", "dep:anyhow"]
cli = ["dep:clap"]
document = []
json = ["dep:serde", "dep:serde_json"]
render = [
"document",
"dep:anstyle",
"dep:comfy-table",
"dep:unicode-bidi",
"dep:unicode-general-category",
"dep:unicode-width",
]
schema = ["json", "dep:schemars"]
help = ["cli", "render", "dep:anstream"]
view = ["render", "json", "dep:anstream"]
surface-model = ["cli", "usage"]
surface-serde = ["surface-model", "dep:serde"]
surface-templates = ["surface-serde", "dep:minijinja"]
surface = ["surface-templates"]
served = ["surface-templates", "validate", "garde/derive", "minijinja/deserialization"]
baseline = ["served", "input"]
validate = ["dep:garde"]
input = ["validate", "dep:serde", "dep:serde-saphyr", "dep:yamled"]
fixture = ["dep:tempfile"]
usage = ["cli", "dep:usage-lib"]
[dependencies]
anyhow = { version = "1.0.104", optional = true }
anstream = { version = "1.0.0", optional = true }
anstyle = { version = "1.0.14", optional = true }
clap = { version = "4.6.6", optional = true, features = ["derive", "env"] }
garde = { version = "0.23.0", optional = true, default-features = false }
comfy-table = { version = "8.0.0", optional = true, default-features = false, features = ["custom_styling", "tty"] }
document-features = "0.2.12"
indoc = "2.0.7"
minijinja = { version = "2.24.0", optional = true, features = ["serde"] }
schemars = { version = "1.2.2", optional = true }
serde = { version = "1.0.229", optional = true, features = ["derive"] }
serde_json = { version = "1.0.151", optional = true }
serde-saphyr = { version = "1.3.0", optional = true, default-features = false, features = ["deserialize"] }
tempfile = { version = "3.27.0", optional = true }
yamled = { version = "0.0.5", optional = true, default-features = false }
usage-lib = { version = "6.0.0", default-features = false, features = ["clap"], optional = true }
unicode-bidi = { version = "0.3.18", optional = true, default-features = false }
unicode-general-category = { version = "1.1.0", optional = true }
unicode-width = { version = "0.2.2", optional = true }
[dev-dependencies]
garde = { version = "0.23.0", default-features = false, features = ["derive"] }
indoc = "2.0.7"
[[example]]
name = "gallery"
required-features = ["view"]
[profile.dev]
debug = "line-tables-only"
[profile.release]
codegen-units = 1
lto = "thin"
panic = "abort"
strip = "symbols"