secretspec 0.18.0

A declarative interface for every secret provider.
Documentation
[package]
name = "secretspec"
version.workspace = true
edition.workspace = true
repository = "https://github.com/cachix/secretspec"
description = "A declarative interface for every secret provider."
license = "Apache-2.0"

[lib]
name = "secretspec"
path = "src/lib.rs"

[[bin]]
name = "secretspec"
path = "src/bin/secretspec.rs"
required-features = ["cli"]

[dependencies]
clap.workspace = true
keyring = { workspace = true, optional = true }
keepass = { workspace = true, optional = true }
keeper-secrets-manager-core = { workspace = true, optional = true }
serde.workspace = true
toml.workspace = true
toml_edit = { workspace = true, optional = true }
thiserror.workspace = true
etcetera.workspace = true
colored.workspace = true
dotenvy.workspace = true
inquire.workspace = true
miette.workspace = true
serde_json.workspace = true
tempfile.workspace = true
same-file.workspace = true
url.workspace = true
percent-encoding.workspace = true
whoami = { workspace = true, optional = true }
linkme.workspace = true
jiff.workspace = true
secrecy.workspace = true
base64 = { workspace = true, optional = true }
google-cloud-secretmanager-v1 = { workspace = true, optional = true }
aws-config = { workspace = true, optional = true }
aws-sdk-secretsmanager = { workspace = true, optional = true }
aws-sdk-ssm = { workspace = true, optional = true }
azure_core = { workspace = true, optional = true }
azure_identity = { workspace = true, optional = true }
azure_security_keyvault_secrets = { workspace = true, optional = true }
tokio.workspace = true
reqwest = { workspace = true, optional = true }
rand.workspace = true
rsa.workspace = true
uuid.workspace = true
data-encoding.workspace = true
detect-coding-agent.workspace = true
age = { workspace = true, optional = true }

[features]
default = ["cli", "keyring", "kdbx", "keeper", "gcsm", "awssm", "awsps", "vault", "openbao", "bws", "akv", "infisical", "bw", "age", "scaleway", "sops"]
cli = ["dep:toml_edit"]
keyring = ["dep:keyring", "dep:whoami"]
kdbx = ["dep:keepass"]
keeper = ["dep:keeper-secrets-manager-core"]
gcsm = ["dep:google-cloud-secretmanager-v1"]
awssm = ["dep:aws-config", "dep:aws-sdk-secretsmanager", "aws-config/credentials-login"]
awsps = ["dep:aws-config", "dep:aws-sdk-ssm"]
vault = ["dep:reqwest", "tokio/sync"]
# Scaleway Secret Manager talks to the v1beta1 REST API directly; base64
# payloads use data-encoding, which is already a non-optional dependency.
scaleway = ["dep:reqwest"]
openbao = ["dep:reqwest", "tokio/sync"]
# `tokio/sync` for the async `OnceCell` that serializes the Universal Auth
# exchange. It is already on transitively via reqwest, but a provider should
# name the features it uses rather than inherit them from a sibling.
infisical = ["dep:reqwest", "tokio/sync"]
bws = []
bw = ["dep:base64"]
akv = ["dep:azure_core", "dep:azure_identity", "dep:azure_security_keyvault_secrets"]
age = ["dep:age"]
sops = []

[dev-dependencies]
# Validates serialized resolution reports against the committed JSON Schema.
jsonschema = { version = "0.48.5", default-features = false }
proptest.workspace = true