use std::time::Duration;
use signet_client::admin::v1::GetSopsPublicKeyRequest;
use signet_client::{dial_workload, gitops_client};
struct Args {
addr: String,
socket: String,
trust_domain: String,
}
fn parse_args() -> Args {
let mut args = Args {
addr: "localhost:8443".to_string(),
socket: "unix:///run/spire/sockets/agent.sock".to_string(),
trust_domain: "example.org".to_string(),
};
let mut it = std::env::args().skip(1);
while let Some(flag) = it.next() {
let mut value = || it.next().expect("missing value for flag");
match flag.as_str() {
"--addr" => args.addr = value(),
"--socket" => args.socket = value(),
"--trust-domain" => args.trust_domain = value(),
other => panic!("unknown flag {other}"),
}
}
args
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let args = parse_args();
let channel = tokio::time::timeout(
Duration::from_secs(10),
dial_workload(&args.addr, &args.socket, &args.trust_domain),
)
.await??;
let mut client = gitops_client(channel);
let resp = client
.get_sops_public_key(GetSopsPublicKeyRequest {})
.await?
.into_inner();
println!(
"public_key={} fingerprint={} environment={:?}",
resp.public_key, resp.fingerprint, resp.environment
);
Ok(())
}