@@ -3,6 +3,7 @@ use log::{error, info, warn};
33use std:: collections:: HashMap ;
44use std:: fs;
55use std:: io:: { BufRead , BufReader } ;
6+ use std:: path:: PathBuf ;
67use std:: process:: { Command , Stdio } ;
78use std:: sync:: { Arc , OnceLock , mpsc} ;
89use std:: thread;
@@ -34,6 +35,21 @@ fn init_task_manager() -> TaskManager {
3435 . clone ( )
3536}
3637
38+ // 获取 .codeforge 缓存目录
39+ fn get_codeforge_cache_dir ( language : & str ) -> Result < PathBuf , String > {
40+ let home_dir = dirs:: home_dir ( ) . ok_or ( "无法获取用户主目录" ) ?;
41+ let cache_dir = home_dir
42+ . join ( ".codeforge" )
43+ . join ( "cache" )
44+ . join ( "plugins" )
45+ . join ( language) ;
46+
47+ // 确保目录存在
48+ fs:: create_dir_all ( & cache_dir) . map_err ( |e| format ! ( "创建缓存目录失败: {}" , e) ) ?;
49+
50+ Ok ( cache_dir)
51+ }
52+
3753// 停止执行命令
3854#[ tauri:: command]
3955pub async fn stop_execution ( language : String ) -> Result < bool , String > {
@@ -80,10 +96,16 @@ pub async fn execute_code(
8096 . get_plugin ( & request. language )
8197 . ok_or_else ( || format ! ( "Unsupported language: {}" , request. language) ) ?;
8298
83- let temp_dir = std:: env:: temp_dir ( ) ;
99+ // 使用 .codeforge/cache/plugin/<language> 目录
100+ let temp_dir = get_codeforge_cache_dir ( & request. language ) ?;
101+ let timestamp = SystemTime :: now ( )
102+ . duration_since ( UNIX_EPOCH )
103+ . unwrap ( )
104+ . as_secs ( ) ;
84105 let file_name = format ! (
85- "Codeforge_{}.{}" ,
106+ "Codeforge_{}_{} .{}" ,
86107 request. language,
108+ timestamp,
87109 plugin. get_file_extension( )
88110 ) ;
89111 let file_path = temp_dir. join ( file_name. clone ( ) ) ;
0 commit comments