aboutsummaryrefslogtreecommitdiffstats
path: root/src/bin/rbw.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/rbw.rs')
-rw-r--r--src/bin/rbw.rs18
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(),