monosecret 0.4.4

Declarative secrets, every environment, any provider
Documentation
use monosecret::Profile;
use monosecret::Secret;
use monosecret::Secrets;
use monosecret::Spec;

fn main() -> monosecret::Result<()> {
	let spec = Spec::builder("checkout")
		.provider("env", "env://")
		.secret(
			"DATABASE_URL",
			Secret::required("PostgreSQL connection URL").providers(["env"]),
		)
		.secret(
			"SENTRY_DSN",
			Secret::optional("Sentry error-reporting endpoint"),
		)
		.profile(
			"production",
			Profile::new().secret("SENTRY_DSN", Secret::required("Production Sentry endpoint")),
		)
		.scope("web", ["DATABASE_URL", "SENTRY_DSN"])
		.build()?;

	let mut secrets = Secrets::from_spec(spec)?;
	secrets.set_profile("production");
	secrets.set_scope("web");

	let resolved = secrets.resolve()?;
	println!("resolved profile: {}", resolved.profile);
	Ok(())
}