Skip to content

Commit 00ba2e4

Browse files
committed
feat: 优化插件安装目录&缓冲目录
1 parent 91ec62b commit 00ba2e4

5 files changed

Lines changed: 30 additions & 8 deletions

File tree

src-tauri/src/env_providers/clojure.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ impl ClojureEnvironmentProvider {
5151

5252
fn get_default_install_dir() -> PathBuf {
5353
let home_dir = dirs::home_dir().unwrap_or_else(|| PathBuf::from("."));
54-
home_dir.join(".codeforge").join("clojure")
54+
home_dir.join(".codeforge").join("plugins").join("clojure")
5555
}
5656

5757
fn read_cache(&self) -> Option<Vec<GithubRelease>> {

src-tauri/src/env_providers/metadata.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ pub async fn fetch_metadata_from_cdn(language: &str) -> Result<Metadata, String>
6666
.and_then(|m| m.base_url.as_ref())
6767
.ok_or("CDN 地址未配置")?;
6868

69-
let metadata_url = format!("{}/{}/metadata.json", base_url, language);
69+
let metadata_url = format!("{}/global/plugins/{}/metadata.json", base_url, language);
7070
info!("从 CDN 获取 {} metadata: {}", language, metadata_url);
7171

7272
let client = reqwest::Client::builder()

src-tauri/src/env_providers/scala.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ impl ScalaEnvironmentProvider {
5555

5656
fn get_default_install_dir() -> PathBuf {
5757
let home_dir = dirs::home_dir().unwrap_or_else(|| PathBuf::from("."));
58-
home_dir.join(".codeforge").join("scala")
58+
home_dir.join(".codeforge").join("plugins").join("scala")
5959
}
6060

6161
// 从缓存读取版本列表

src-tauri/src/execution.rs

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use log::{error, info, warn};
33
use std::collections::HashMap;
44
use std::fs;
55
use std::io::{BufRead, BufReader};
6+
use std::path::PathBuf;
67
use std::process::{Command, Stdio};
78
use std::sync::{Arc, OnceLock, mpsc};
89
use 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]
3955
pub 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());

src/components/setting/Network.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,9 @@
7575
<p class="font-medium mb-2">CDN 镜像说明</p>
7676
<ul class="space-y-1 list-disc list-inside">
7777
<li>CDN 镜像用于加速环境安装包的下载</li>
78-
<li>URL 格式:<code class="bg-blue-100 dark:bg-blue-800 px-1 py-0.5 rounded">{base_url}/{language}/{version}/{filename}</code></li>
79-
<li>例如:<code class="bg-blue-100 dark:bg-blue-800 px-1 py-0.5 rounded">http://cdn.global.devlive.top/clojure/1.12.4.1582/clojure-tools-1.12.4.1582.tar.gz</code>
80-
</li>
78+
<!-- <li>URL 格式:<code class="bg-blue-100 dark:bg-blue-800 px-1 py-0.5 rounded">{base_url}/{language}/{version}/{filename}</code></li>-->
79+
<!-- <li>例如:<code class="bg-blue-100 dark:bg-blue-800 px-1 py-0.5 rounded">http://cdn.global.devlive.top/clojure/1.12.4.1582/clojure-tools-1.12.4.1582.tar.gz</code>-->
80+
<!-- </li>-->
8181
<li>启用自动回退后,CDN 下载失败会自动使用 GitHub 官方源</li>
8282
<li>关闭自动回退后,CDN 下载失败将直接报错,不会尝试其他源</li>
8383
</ul>

0 commit comments

Comments
 (0)