[package]
name = "pinner"
version = "0.0.6"
edition = "2021"
description = "Secure CI/CD workflows by pinning mutable tags to immutable SHA-1 hashes. A high-performance Rust CLI that preserves YAML formatting and comments. Supports GitHub, GitLab, Bitbucket, Forgejo, and Docker image pinning."
authors = ["Fabio Falcinelli"]
license = "MIT"
repository = "https://github.com/ffalcinelli/pinner"
documentation = "https://docs.rs/pinner"
readme = "README.md"
keywords = ["github-actions", "security", "pinning", "hash", "workflow"]
categories = ["command-line-utilities", "development-tools"]

[dependencies]
clap = { version = "4.4", features = ["derive", "env"] }
tokio = { version = "1", features = ["full"] }
reqwest = { version = "0.13", features = ["json"] }
serde = { version = "1.0", features = ["derive"] }
serde_yaml = "0.9"
serde_json = "1.0"
moka = { version = "0.12", features = ["future"] }
figment = { version = "0.10", features = ["toml", "env"] }
indicatif = "0.17"
toml = "0.8"
dirs = "5.0"
regex = "1.10"
async-trait = "0.1"
mockall = "0.12"
colored = "2.1"
chrono = "0.4"
thiserror = "1.0"
anyhow = "1.0"
tree-sitter = "0.20"
tree-sitter-yaml = "0.0.1"
reqwest-middleware = "0.5"
reqwest-retry = "0.9"
futures = "0.3"
rayon = "1.10"
similar = "2.4"
ignore = "0.4"
semver = "1.0.28"
tracing = "0.1.44"
tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }
dialoguer = "0.12.0"
clap_complete = "4.6.5"
base64 = "0.22"

[dev-dependencies]
http = "1.0"
cargo-husky = { version = "1", default-features = false, features = ["precommit-hook", "prepush-hook", "run-cargo-fmt", "user-hooks"] }
tempfile = "3.10"
mockito = "1.2"
criterion = "0.8.2"
serial_test = "3.5.0"

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tarpaulin)'] }

[[bench]]
name = "pinner_bench"
harness = false
