diff options
author | Jesse Luehrs <doy@tozt.net> | 2020-04-07 00:15:40 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2020-04-07 00:15:40 -0400 |
commit | 0f13f2c6d11934bbaceca4dac4c3ba428aae72b7 (patch) | |
tree | 167026cd6eec33d2e752edfefa023ecd11072998 /src/bin/rbw.rs | |
parent | 95da8880e311d4932fd50febab6ef093e5915051 (diff) | |
download | rbw-0f13f2c6d11934bbaceca4dac4c3ba428aae72b7.tar.gz rbw-0f13f2c6d11934bbaceca4dac4c3ba428aae72b7.zip |
make the command line tool automatically spawn the agent
Diffstat (limited to 'src/bin/rbw.rs')
-rw-r--r-- | src/bin/rbw.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/bin/rbw.rs b/src/bin/rbw.rs index 910350b..a110176 100644 --- a/src/bin/rbw.rs +++ b/src/bin/rbw.rs @@ -1,5 +1,21 @@ use std::io::Write as _; +fn ensure_agent() { + let agent_path = std::env::var("RBW_AGENT"); + let agent_path = agent_path + .as_ref() + .map(|s| s.as_str()) + .unwrap_or("rbw-agent"); + let status = std::process::Command::new(agent_path).status().unwrap(); + if !status.success() { + if let Some(code) = status.code() { + if code != 23 { + panic!("failed to run agent: {}", status); + } + } + } +} + fn send(msg: &rbw::agent::Message) { let mut sock = std::os::unix::net::UnixStream::connect( rbw::dirs::runtime_dir().join("socket"), @@ -80,6 +96,8 @@ fn main() { .subcommand(clap::SubCommand::with_name("purge")) .get_matches(); + ensure_agent(); + match matches.subcommand() { ("login", Some(_)) => login(), ("unlock", Some(_)) => unlock(), |