[feat] enable replay analysis workflow but json file is not parsed
This commit is contained in:
@@ -4,6 +4,12 @@ use crate::vdf::preset;
|
||||
use crate::vdf::preset::VideoConfig;
|
||||
use crate::wrap_err;
|
||||
use anyhow::Result;
|
||||
use std::fs::File;
|
||||
use std::fs;
|
||||
use tauri::path::BaseDirectory;
|
||||
use tauri::Manager;
|
||||
|
||||
// use tauri_plugin_shell::ShellExt;
|
||||
|
||||
// pub type Result<T, String = ()> = Result<T, String>;
|
||||
|
||||
@@ -16,14 +22,17 @@ pub fn greet(name: &str) -> Result<String, String> {
|
||||
|
||||
#[tauri::command]
|
||||
pub fn launch_game(steam_path: &str, launch_option: &str, server: &str) -> Result<String, String> {
|
||||
println!("{}: launching game on server: {}, with launch Option {}", steam_path, server, launch_option);
|
||||
println!(
|
||||
"{}: launching game on server: {}, with launch Option {}",
|
||||
steam_path, server, launch_option
|
||||
);
|
||||
// wrap_err!(steam::launch_game(steam_path, launch_option, server));
|
||||
// 如果有错误,打印出来
|
||||
if let Err(e) = steam::launch_game(steam_path, launch_option, server) {
|
||||
println!("Error: {}", e);
|
||||
return Err(e.to_string());
|
||||
}
|
||||
// steam::launch_game(steam_path, launch_option, server);
|
||||
// 如果有错误,打印出来
|
||||
if let Err(e) = steam::launch_game(steam_path, launch_option, server) {
|
||||
println!("Error: {}", e);
|
||||
return Err(e.to_string());
|
||||
}
|
||||
// steam::launch_game(steam_path, launch_option, server);
|
||||
|
||||
Ok(format!(
|
||||
"Launching game on server: {}, with launch Option {}",
|
||||
@@ -118,3 +127,64 @@ pub fn set_cs2_video_config(
|
||||
pub fn check_path(path: &str) -> Result<bool, String> {
|
||||
Ok(std::path::Path::new(&path).exists())
|
||||
}
|
||||
|
||||
///// 录像
|
||||
#[tauri::command]
|
||||
pub async fn analyze_replay(app: tauri::AppHandle, path: &str) -> Result<String, String> {
|
||||
// 检测文件是否存在
|
||||
if !std::path::Path::new(&path).exists() {
|
||||
return Err("文件不存在".to_string());
|
||||
}
|
||||
|
||||
// 获取应用配置目录
|
||||
let config_dir = app
|
||||
.path()
|
||||
.resolve("metadata", BaseDirectory::AppConfig)
|
||||
.expect("无法获取配置目录");
|
||||
|
||||
// 确保 metadata 文件夹存在
|
||||
if !config_dir.exists() {
|
||||
fs::create_dir_all(&config_dir).expect("无法创建 metadata 文件夹");
|
||||
}
|
||||
|
||||
// 提取文件名部分
|
||||
let file_name = std::path::Path::new(path)
|
||||
.file_name()
|
||||
.and_then(|name| name.to_str())
|
||||
.unwrap_or("default_filename");
|
||||
|
||||
// 拼接输出文件路径
|
||||
let output_path = config_dir.join(format!("{}.json", file_name));
|
||||
|
||||
// 确保输出文件存在,如果不存在则创建空文件
|
||||
if !output_path.exists() {
|
||||
File::create(&output_path).expect("无法创建输出文件");
|
||||
}
|
||||
|
||||
// 调用项目绑定cli程序
|
||||
let cli_path = app
|
||||
.path()
|
||||
.resolve("resources/csda", BaseDirectory::Resource)
|
||||
.expect("analyzer not found");
|
||||
println!("cli path: {}", cli_path.display());
|
||||
|
||||
let output = std::process::Command::new(cli_path)
|
||||
.arg("-demo-path")
|
||||
.arg(path)
|
||||
.arg("-format")
|
||||
.arg("json")
|
||||
.arg("-minify")
|
||||
.arg("-output")
|
||||
.arg(output_path.to_str().expect("路径转换失败"))
|
||||
.output()
|
||||
.expect("Failed to execute command");
|
||||
|
||||
// 获取输出
|
||||
let output_str = String::from_utf8_lossy(&output.stdout);
|
||||
|
||||
// 打印输出
|
||||
println!("{}", output_str);
|
||||
|
||||
// 返回结果
|
||||
Ok(output_str.to_string())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user