-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathlaunch_arguments.rs
40 lines (35 loc) · 1.41 KB
/
launch_arguments.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#[tauri::command]
/// This method loads arguments from the ns_startup_args.txt Northstar launch
/// arguments files, filtering out eventual argument duplicates.
/// If this file does not exist, this will return an empty array.
pub fn get_launch_arguments(game_path: &str) -> Result<Vec<String>, ()> {
let launch_args_path = format!("{}/ns_startup_args.txt", game_path);
if !std::path::Path::new(&launch_args_path).exists() {
return Ok(vec![]);
}
let data = match std::fs::read_to_string(launch_args_path.clone()) {
Ok(content) => content,
Err(_) => {
return Ok(vec![]);
}
};
let mut arguments = data.split_whitespace()
.map(|arg| arg.to_string())
.collect::<Vec<_>>();
arguments.sort_unstable();
arguments.dedup();
Ok(arguments)
}
#[tauri::command]
/// This method puts an array of arguments into the ns_startup_args.txt Northstar
/// launch arguments files.
/// If the ns_startup_args.txt file does not exist, this will create it.
pub fn set_launch_arguments(game_path: &str, arguments: Vec<String>) -> Result<(), String> {
let launch_args_path = format!("{}/ns_startup_args.txt", game_path);
match std::fs::write(launch_args_path.clone(), arguments.join(" ")) {
Ok(..) => (),
Err(_) => return Err("Failed to save launch arguments.".to_string()),
}
log::info!("Launch arguments updated.");
Ok(())
}