mirror of
https://github.com/Grasscutters/Cultivation.git
synced 2025-12-13 15:44:35 +01:00
88 lines
2.1 KiB
Rust
88 lines
2.1 KiB
Rust
|
|
use std::thread;
|
|
use std::process::Command;
|
|
use tauri;
|
|
use open;
|
|
|
|
use crate::file_helpers;
|
|
|
|
#[tauri::command]
|
|
pub fn run_program(path: String) {
|
|
// Open the program from the specified path.
|
|
|
|
// Open in new thread to prevent blocking.
|
|
thread::spawn(move || {
|
|
open::that(&path).unwrap();
|
|
});
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub fn run_command(command: String) {
|
|
// Run the specified command.
|
|
if cfg!(target_os = "windows") {
|
|
Command::new("cmd")
|
|
.args(["/C", command.as_str()])
|
|
.output()
|
|
.expect("failed to execute process")
|
|
} else {
|
|
Command::new("sh")
|
|
.arg("-c")
|
|
.arg(command.as_str())
|
|
.output()
|
|
.expect("failed to execute process")
|
|
};
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub fn run_jar(path: String, execute_in: String, java_path: String) {
|
|
let command = if java_path.is_empty() {
|
|
format!("java -jar {}", path)
|
|
} else {
|
|
format!("\"{}\" -jar {}", java_path, path)
|
|
};
|
|
|
|
// Open the program from the specified path.
|
|
match open::with(format!("/k cd /D \"{}\" & {}", &execute_in, &command).to_string(), "C:\\Windows\\System32\\cmd.exe") {
|
|
Ok(_) => (),
|
|
Err(e) => println!("Failed to open jar ({} from {}): {}", &path, &execute_in, e),
|
|
};
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub fn open_in_browser(url: String) {
|
|
// Open the URL in the default browser.
|
|
match open::that(url) {
|
|
Ok(_) => (),
|
|
Err(e) => println!("Failed to open URL: {}", e),
|
|
};
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub fn copy_file(path: String, new_path: String) -> bool {
|
|
let filename = &path.split("/").last().unwrap();
|
|
let mut new_path_buf = std::path::PathBuf::from(&new_path);
|
|
|
|
// If the new path doesn't exist, create it.
|
|
if !file_helpers::dir_exists(new_path_buf.pop().to_string().as_str()) {
|
|
std::fs::create_dir_all(&new_path).unwrap();
|
|
}
|
|
|
|
// Copy old to new
|
|
match std::fs::copy(&path, format!("{}/{}", new_path, filename)) {
|
|
Ok(_) => true,
|
|
Err(e) => {
|
|
println!("Failed to copy file: {}", e);
|
|
false
|
|
}
|
|
}
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub fn install_location() -> String {
|
|
let mut exe_path = std::env::current_exe().unwrap();
|
|
|
|
// Get the path to the executable.
|
|
exe_path.pop();
|
|
|
|
return exe_path.to_str().unwrap().to_string();
|
|
} |