2024-01-16 02:44:48 +00:00
|
|
|
//!
|
|
|
|
|
2023-08-25 06:32:21 +00:00
|
|
|
use keyfork_mnemonic_util::Mnemonic;
|
|
|
|
|
|
|
|
use tokio::io::{self, AsyncBufReadExt, BufReader};
|
|
|
|
|
|
|
|
#[cfg(feature = "tracing")]
|
|
|
|
use tracing::debug;
|
|
|
|
|
|
|
|
type Result<T, E = Box<dyn std::error::Error>> = std::result::Result<T, E>;
|
|
|
|
|
|
|
|
async fn load_mnemonic() -> Result<Mnemonic> {
|
|
|
|
let mut stdin = BufReader::new(io::stdin());
|
|
|
|
let mut line = String::new();
|
|
|
|
stdin.read_line(&mut line).await?;
|
|
|
|
Ok(line.parse()?)
|
|
|
|
}
|
|
|
|
|
|
|
|
#[cfg_attr(feature = "multithread", tokio::main)]
|
|
|
|
#[cfg_attr(not(feature = "multithread"), tokio::main(flavor = "current_thread"))]
|
|
|
|
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
|
|
#[cfg(feature = "tracing")]
|
2024-01-07 05:36:23 +00:00
|
|
|
keyforkd::setup_registry();
|
2023-08-25 06:32:21 +00:00
|
|
|
|
|
|
|
#[cfg(feature = "tracing")]
|
|
|
|
debug!("reading mnemonic from standard input");
|
|
|
|
let mnemonic = load_mnemonic().await?;
|
|
|
|
|
2023-09-07 13:36:14 +00:00
|
|
|
keyforkd::start_and_run_server(mnemonic).await
|
2023-08-25 06:32:21 +00:00
|
|
|
}
|