mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-24 12:44:18 +08:00
1c0ee0c58a
* feat(grokbuild): add backend integration * feat(grokbuild): add provider and management UI * test(grokbuild): cover configuration and integrations * fix(grokbuild): address backend review feedback * fix(grokbuild): complete UI review feedback * feat(grokbuild): add CLI lifecycle management * fix(grokbuild): align provider icon fallback * test(grokbuild): cover provider icon persistence
59 lines
2.1 KiB
Rust
59 lines
2.1 KiB
Rust
use std::path::PathBuf;
|
|
|
|
use crate::app_config::AppType;
|
|
use crate::codex_config::get_codex_auth_path;
|
|
use crate::config::get_claude_settings_path;
|
|
use crate::error::AppError;
|
|
use crate::gemini_config::get_gemini_dir;
|
|
use crate::openclaw_config::get_openclaw_dir;
|
|
use crate::opencode_config::get_opencode_dir;
|
|
|
|
/// 返回指定应用所使用的提示词文件路径。
|
|
pub fn prompt_file_path(app: &AppType) -> Result<PathBuf, AppError> {
|
|
if matches!(app, AppType::ClaudeDesktop) {
|
|
return Err(AppError::localized(
|
|
"app.prompts_unsupported",
|
|
"当前应用暂不支持 Prompts",
|
|
"This app does not support Prompts",
|
|
));
|
|
}
|
|
|
|
let base_dir: PathBuf = match app {
|
|
AppType::Claude => get_base_dir_with_fallback(get_claude_settings_path(), ".claude")?,
|
|
AppType::Codex => get_base_dir_with_fallback(get_codex_auth_path(), ".codex")?,
|
|
AppType::Gemini => get_gemini_dir(),
|
|
AppType::GrokBuild => crate::grok_config::get_grok_config_dir(),
|
|
AppType::OpenCode => get_opencode_dir(),
|
|
AppType::OpenClaw => get_openclaw_dir(),
|
|
AppType::Hermes => crate::hermes_config::get_hermes_dir(),
|
|
AppType::ClaudeDesktop => unreachable!("handled above"),
|
|
};
|
|
|
|
let filename = match app {
|
|
AppType::Claude => "CLAUDE.md",
|
|
AppType::Codex => "AGENTS.md",
|
|
AppType::Gemini => "GEMINI.md",
|
|
AppType::GrokBuild | AppType::OpenCode | AppType::OpenClaw | AppType::Hermes => "AGENTS.md",
|
|
AppType::ClaudeDesktop => unreachable!("handled above"),
|
|
};
|
|
|
|
Ok(base_dir.join(filename))
|
|
}
|
|
|
|
fn get_base_dir_with_fallback(
|
|
primary_path: PathBuf,
|
|
fallback_dir: &str,
|
|
) -> Result<PathBuf, AppError> {
|
|
primary_path
|
|
.parent()
|
|
.map(|p| p.to_path_buf())
|
|
.or_else(|| dirs::home_dir().map(|h| h.join(fallback_dir)))
|
|
.ok_or_else(|| {
|
|
AppError::localized(
|
|
"home_dir_not_found",
|
|
format!("无法确定 {fallback_dir} 配置目录:用户主目录不存在"),
|
|
format!("Cannot determine {fallback_dir} config directory: user home not found"),
|
|
)
|
|
})
|
|
}
|