Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions crates/vmate-cli/src/commands/all.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,17 @@ use vmate_core::settings::UserSettings;
use vmate_core::system::{ProcessKiller, RealProcessKiller, require_root_for};

pub async fn run(settings: &Settings, args: &AllArgs, verbose: &Verbosity) -> Result<()> {
// --save-defaults is a pure settings operation: persist and exit without
// scanning or connecting (no root, no OpenVPN, no DB needed).
// Elevate like a real run: the config dir may need sudo (e.g. left over
// from a previous elevated run), so --save-defaults must not skip it.
require_root_for("run OpenVPN tests and connections", settings.no_elevate)?;

// --save-defaults persists and exits without scanning or connecting.
if settings.save_defaults {
crate::commands::scan::persist_scan_defaults(&args.scan)?;
persist_connect_defaults(&args.connect)?;
return Ok(());
}

require_root_for("run OpenVPN tests and connections", settings.no_elevate)?;

let us = UserSettings::load();
let connect = resolve_connect(&us, &args.connect);

Expand Down
9 changes: 5 additions & 4 deletions crates/vmate-cli/src/commands/connect.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,15 +53,16 @@ pub(crate) fn persist_connect_defaults(args: &ConnectArgs) -> Result<()> {
}

pub async fn run(settings: &Settings, args: &ConnectArgs, verbose: &Verbosity) -> Result<()> {
// --save-defaults is a pure settings operation: persist and exit without
// connecting (no root, no OpenVPN, no DB needed).
// Elevate like a real run: the config dir may need sudo (e.g. left over
// from a previous elevated run), so --save-defaults must not skip it.
require_root_for("run OpenVPN connections", settings.no_elevate)?;

// --save-defaults persists and exits without connecting (no OpenVPN, no DB).
if settings.save_defaults {
persist_connect_defaults(args)?;
return Ok(());
}

require_root_for("run OpenVPN connections", settings.no_elevate)?;

let us = UserSettings::load();
let resolved = resolve_connect(&us, args);

Expand Down
9 changes: 5 additions & 4 deletions crates/vmate-cli/src/commands/scan.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,16 @@ use vmate_core::system::{
};

pub async fn run(settings: &Settings, args: &ScanArgs, verbose: &Verbosity) -> Result<()> {
// --save-defaults is a pure settings operation: persist and exit without
// scanning (no root, no OpenVPN, no DB needed).
// Elevate like a real run: the config dir may need sudo (e.g. left over
// from a previous elevated run), so --save-defaults must not skip it.
require_root_for("run OpenVPN tests", settings.no_elevate)?;

// --save-defaults persists and exits without scanning (no OpenVPN, no DB).
if settings.save_defaults {
persist_scan_defaults(args)?;
return Ok(());
}

require_root_for("run OpenVPN tests", settings.no_elevate)?;

scan_pipeline(settings, args, verbose).await?;
Ok(())
}
Expand Down
Loading