in src/main.rs [474:540]
fn main() {
let args: Vec<String> = env::args().collect();
let log_path = format!(
"vscode-inno-updater-{:?}.log",
SystemTime::now()
.duration_since(SystemTime::UNIX_EPOCH)
.unwrap()
.as_secs()
);
if args.len() == 3 && args[1] == "--parse" {
let path = PathBuf::from(&args[2]);
parse(&path).unwrap_or_else(|err| {
eprintln!("{}", err);
std::process::exit(1);
});
} else if args.len() == 2 && args[1] == "--gui" {
let (tx, rx) = mpsc::channel();
thread::spawn(move || {
gui::run_progress_window(false, tx);
});
let window = rx.recv().unwrap();
thread::sleep(std::time::Duration::from_secs(5));
window.exit();
} else if args.len() == 2 && args[1] == "--retry-simulation" {
let (tx, rx) = mpsc::channel();
thread::spawn(move || {
gui::run_progress_window(false, tx);
});
let window = rx.recv().unwrap();
let result = util::retry(
"simulating a failed retry operation",
|_| -> Result<u32, Box<dyn error::Error>> {
Err(Box::new(std::io::Error::new(
std::io::ErrorKind::Other,
"[[Simulated error message]]",
)))
},
Some(5),
);
if let Err(_) = result {
handle_error(&log_path);
}
window.exit();
} else if args.len() == 3 && args[1] == "--error" {
handle_error(&log_path);
} else if args.len() == 2 && (args[1] == "--version" || args[1] == "-v") {
eprintln!("Inno Update v{}", VERSION);
} else {
let args: Vec<String> = args.into_iter().filter(|a| !a.starts_with("--")).collect();
if args.len() < 3 {
eprintln!("Inno Update v{}", VERSION);
eprintln!("Error: Bad usage");
std::process::exit(1);
} else {
std::process::exit(__main(&args));
}
}
}