calvery 0.3.0

Official Rust SDK for Calvery Vault secret manager
Documentation
# Calvery SDK — Rust

Official Rust SDK for [Calvery Vault](https://calvery.xyz) secret manager.

## Install

Add to `Cargo.toml`:

```toml
[dependencies]
calvery = "0.1"
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
```

## Quickstart

```rust
use calvery::Client;

#[tokio::main]
async fn main() -> Result<(), calvery::Error> {
    let client = Client::new(
        std::env::var("CVSM_TOKEN").unwrap(),
        "acme-corp",
    )?;

    // Get single secret
    let db_url = client.get("DATABASE_URL").await?;
    println!("DB URL: {}", db_url);

    // Get all secrets as HashMap
    let all = client.get_all().await?;

    // Inject into process env (skip ones already set)
    let injected = client.inject(false).await?;
    println!("Injected {} vars", injected.len());

    Ok(())
}
```

## Config

```rust
use std::time::Duration;
use calvery::Client;

let client = Client::builder("cvsm_xxx", "acme-corp")
    .base_url("https://vault.your-company.internal")  // self-host
    .environment("staging")
    .cache_ttl(Duration::from_secs(60))
    .max_retries(5)
    .timeout(Duration::from_secs(30))
    .build()?;
```

## Error handling

```rust
match client.get("DATABASE_URL").await {
    Ok(v) => println!("{}", v),
    Err(calvery::Error::NotFound(msg)) => eprintln!("secret missing: {msg}"),
    Err(calvery::Error::Auth(msg)) => eprintln!("token invalid: {msg}"),
    Err(calvery::Error::Network(msg)) => eprintln!("network: {msg}"),
    Err(e) => eprintln!("other: {e}"),
}
```

## License

MIT — see [LICENSE](https://github.com/RenzyArmstrong/Calvery-Vault/blob/master/LICENSE).

Bug reports: [github.com/RenzyArmstrong/Calvery-Vault/issues](https://github.com/RenzyArmstrong/Calvery-Vault/issues)
Support: support@calvery.xyz