[workspace]
members = ["utils", "recipe", "template", "process"]

[workspace.package]
description = "A CLI tool built for creating Containerfile templates for ostree based atomic distros"
edition = "2021"
repository = "https://github.com/blue-build/cli"
license = "Apache-2.0"
categories = ["command-line-utilities"]
version = "0.8.24"

[workspace.dependencies]
bon = "2"
cached = "0.53"
chrono = "0.4"
clap = "4"
colored = "2"
indexmap = { version = "2", features = ["serde"] }
indicatif = { version = "0.17", features = ["improved_unicode"] }
log = "0.4"
oci-distribution = { version = "0.11", default-features = false }
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] }
miette = "7"
rstest = "0.18"
semver = "1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_yaml = { version = "0.0.12", package = "serde_yml" }
syntect = { version = "5", default-features = false, features = ["default-fancy"] }
tempfile = "3"
tokio = { version = "1", features = ["rt", "rt-multi-thread"] }
users = "0.11"
uuid = { version = "1", features = ["v4"] }

[workspace.lints.rust]
unsafe_code = "forbid"

[workspace.lints.clippy]
correctness = "deny"
suspicious = "deny"
perf = "deny"
style = "deny"
nursery = "deny"
pedantic = "deny"
module_name_repetitions = { level = "allow", priority = 1 }
doc_markdown = { level = "allow", priority = 1 }

[package]
name = "blue-build"
build = "build.rs"

version.workspace = true
edition.workspace = true
description.workspace = true
repository.workspace = true
license.workspace = true

[package.metadata.release]
pre-release-hook = ["git", "cliff", "-o", "CHANGELOG.md", "--tag", "{{version}}"]
pre-release-replacements = [
  { file = "install.sh", search = "VERSION=v\\d+\\.\\d+\\.\\d+", replace = "VERSION=v{{version}}" }
]

[dependencies]
blue-build-recipe = { version = "=0.8.24", path = "./recipe" }
blue-build-template = { version = "=0.8.24", path = "./template" }
blue-build-utils = { version = "=0.8.24", path = "./utils" }
blue-build-process-management = { version = "=0.8.24", path = "./process" }
clap-verbosity-flag = "3"
clap_complete = "4"
fuzzy-matcher = "0.3"
jsonschema = { version = "0.26", optional = true }
open = "5"
os_info = "3"
rayon = { version = "1", optional = true }
regex = { version = "1", optional = true }
requestty = { version = "0.5", features = ["macros", "termion"] }
shadow-rs = { version = "0.36", default-features = false }
urlencoding = "2"
yaml-rust2 = { version = "0.9", optional = true }

cached.workspace = true
clap = { workspace = true, features = ["derive", "cargo", "unicode", "env"] }
colored.workspace = true
indexmap.workspace = true
indicatif.workspace = true
log.workspace = true
miette = { workspace = true, features = ["fancy", "syntect-highlighter"] }
oci-distribution.workspace = true
reqwest.workspace = true
semver.workspace = true
serde.workspace = true
serde_json.workspace = true
serde_yaml.workspace = true
syntect = { workspace = true, optional = true }
tempfile.workspace = true
tokio = { workspace = true, optional = true }
bon.workspace = true
users.workspace = true

[features]
# Top level features
default = []
init = []
stages = ["blue-build-recipe/stages"]
copy = ["blue-build-recipe/copy"]
multi-recipe = ["dep:rayon", "indicatif/rayon"]
iso = []
switch = []
sigstore = ["blue-build-process-management/sigstore"]
login = []
validate = [
  "dep:jsonschema",
  "dep:rayon",
  "dep:tokio",
  "dep:yaml-rust2",
  "dep:syntect",
  "dep:regex",
  "cached/async",
  "blue-build-process-management/validate"
]

[dev-dependencies]
rusty-hook = "0.11"

rstest.workspace = true

[build-dependencies]
shadow-rs = { version = "0.36", default-features = false }

[lints]
workspace = true

[profile.release]
lto = true
codegen-units = 1
strip = "none"
debug = false
panic = "abort"
