mod auth;
mod cli;
mod errors;
mod gpg;
mod keygen;
mod logging;
mod operations;
mod outcome;
mod output;
mod registry;
mod resources;
mod secrets;
mod sessions;
mod skills;
mod ssh;
mod wallets;
mod wire;
use crate::cli::Cli;
use std::env;
use std::io::{self, Write};
use std::process::ExitCode;
use tracing::debug;
#[tokio::main]
async fn main() -> ExitCode {
logging::init();
debug!(version = env!("CARGO_PKG_VERSION"), "starting tk");
let raw_args = env::args().skip(1).collect::<Vec<_>>();
if raw_args.first().is_some_and(|arg| arg == "-Y") {
let invocation = match ssh::shim::Invocation::parse(raw_args) {
Ok(invocation) => invocation,
Err(error) => {
let _ = writeln!(io::stderr(), "error: {error:#}");
return ExitCode::FAILURE;
}
};
return ssh::shim::run(invocation).await;
}
if let Some(invocation) = gpg::shim::Invocation::parse(raw_args) {
return gpg::shim::run(invocation).await;
}
Cli::run().await
}