diff --git a/Cargo.lock b/Cargo.lock index d9d81dd..b2f1d99 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -54,7 +54,7 @@ dependencies = [ [[package]] name = "breadcrumbs" -version = "2.1.3" +version = "2.1.4" dependencies = [ "clap", "serde", diff --git a/Cargo.toml b/Cargo.toml index 9f2dc65..e2333f2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "breadcrumbs" -version = "2.1.3" +version = "2.1.4" edition = "2021" description = "Profile-aware Wi-Fi state machine with Tailscale handling and self-healing watch daemon" license = "MIT" diff --git a/src/main.rs b/src/main.rs index 3e178c0..558ec96 100644 --- a/src/main.rs +++ b/src/main.rs @@ -330,10 +330,10 @@ fn cmd_status( (Some(h), req) => { let ok = h.is_ok(); println!( - " tailscale {} {} {C_DIM}(exit: {}{}){C_RESET}", + " tailscale {} {} {C_DIM}(exit node: {}{}){C_RESET}", dot(ok || !req), h.describe(), - s.exit_node, + if s.exit_node.is_empty() { "none" } else { &s.exit_node }, if req { "" } else { ", optional" } ); } @@ -715,11 +715,13 @@ fn cmd_list(cfg: &Config, show_pw: bool) -> Result { println!(" bootstrap {b}"); } if p.tailscale { + let exit_node = p + .exit_node + .clone() + .unwrap_or_else(|| cfg.settings.exit_node.clone()); println!( - " tailscale required (exit: {})", - p.exit_node - .clone() - .unwrap_or_else(|| cfg.settings.exit_node.clone()) + " tailscale required (exit node: {})", + if exit_node.is_empty() { "none".to_string() } else { exit_node } ); } let mut order: Vec = p.networks.clone(); @@ -804,7 +806,11 @@ fn cmd_doctor( ); println!(" internet {}", if s.internet { "ok" } else { "DOWN" }); if let Some(h) = &s.tailscale { - println!(" tailscale {} (exit {})", h.describe(), s.exit_node); + println!( + " tailscale {} (exit node: {})", + h.describe(), + if s.exit_node.is_empty() { "none" } else { &s.exit_node } + ); } if let Some(iface) = &s.iface {