comand is passed as arg
This commit is contained in:
20
src/main.rs
20
src/main.rs
@@ -5,6 +5,8 @@ use egui::{FontData, FontDefinitions, FontFamily};
|
|||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
use winit::event_loop::{ControlFlow, EventLoop};
|
use winit::event_loop::{ControlFlow, EventLoop};
|
||||||
use eframe::UserEvent;
|
use eframe::UserEvent;
|
||||||
|
use std::env;
|
||||||
|
use std::process::Command;
|
||||||
|
|
||||||
const MAX_KEYS: usize = 6;
|
const MAX_KEYS: usize = 6;
|
||||||
const SECRET_COMBO: [Key; MAX_KEYS] = [
|
const SECRET_COMBO: [Key; MAX_KEYS] = [
|
||||||
@@ -149,6 +151,19 @@ fn setup_custom_fonts(ctx: &egui::Context) {
|
|||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
|
||||||
|
let mut args = env::args().skip(1); // Skip program name
|
||||||
|
|
||||||
|
let admin_command = match args.next() {
|
||||||
|
Some(cmd) => cmd,
|
||||||
|
None => {
|
||||||
|
eprintln!("❌ Usage: sm-admingate <command> [args...]");
|
||||||
|
std::process::exit(1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let admin_args: Vec<String> = args.collect();
|
||||||
|
|
||||||
|
|
||||||
let should_run_admin_command = Arc::new(Mutex::new(false));
|
let should_run_admin_command = Arc::new(Mutex::new(false));
|
||||||
let shared_flag = should_run_admin_command.clone();
|
let shared_flag = should_run_admin_command.clone();
|
||||||
|
|
||||||
@@ -178,9 +193,8 @@ fn main() {
|
|||||||
if *should_run_admin_command.lock().unwrap() {
|
if *should_run_admin_command.lock().unwrap() {
|
||||||
println!("✅ Running admin command...");
|
println!("✅ Running admin command...");
|
||||||
|
|
||||||
match std::process::Command::new("sh")
|
match std::process::Command::new(admin_command)
|
||||||
.arg("-c")
|
.args(admin_args)
|
||||||
.arg("kitty")
|
|
||||||
.status() // ← wait until it finishes
|
.status() // ← wait until it finishes
|
||||||
{
|
{
|
||||||
Ok(status) => {
|
Ok(status) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user