fn main()

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));
		}
	}
}