🐛 修复获取config的地址

This commit is contained in:
Tw93
2023-04-06 10:02:05 +08:00
parent 174f780354
commit b45e9fb4ab
3 changed files with 27 additions and 14 deletions

21
src-tauri/Cargo.lock generated
View File

@@ -42,6 +42,7 @@ checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
name = "app" name = "app"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"dirs",
"home", "home",
"image", "image",
"serde", "serde",
@@ -563,6 +564,15 @@ dependencies = [
"crypto-common", "crypto-common",
] ]
[[package]]
name = "dirs"
version = "5.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dece029acd3353e3a58ac2e3eb3c8d6c35827a892edc6cc4138ef9c33df46ecd"
dependencies = [
"dirs-sys",
]
[[package]] [[package]]
name = "dirs-next" name = "dirs-next"
version = "2.0.0" version = "2.0.0"
@@ -573,6 +583,17 @@ dependencies = [
"dirs-sys-next", "dirs-sys-next",
] ]
[[package]]
name = "dirs-sys"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04414300db88f70d74c5ff54e50f9e1d1737d9a5b90f53fcf2e95ca2a9ab554b"
dependencies = [
"libc",
"redox_users",
"windows-sys 0.45.0",
]
[[package]] [[package]]
name = "dirs-sys-next" name = "dirs-sys-next"
version = "0.1.2" version = "0.1.2"

View File

@@ -20,6 +20,7 @@ serde = { version = "1.0.150", features = ["derive"] }
tauri = { version = "1.2.1", features = ["api-all", "devtools", "system-tray"] } tauri = { version = "1.2.1", features = ["api-all", "devtools", "system-tray"] }
image = "0.24.5" image = "0.24.5"
home = "0.5" home = "0.5"
dirs = "5.0"
tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "dev" } tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "dev" }
[features] [features]

View File

@@ -1,37 +1,28 @@
use crate::app::config::PakeConfig; use crate::app::config::PakeConfig;
use std::path::PathBuf; use std::path::PathBuf;
use tauri::Config; use tauri::Config;
use dirs::config_dir;
pub fn get_pake_config() -> (PakeConfig, Config) { pub fn get_pake_config() -> (PakeConfig, Config) {
let pake_config: PakeConfig = let pake_config: PakeConfig =
serde_json::from_str(include_str!("../pake.json")).expect("failed to parse pake config"); serde_json::from_str(include_str!("../pake.json")).expect("Failed to parse pake config");
let tauri_config: Config = serde_json::from_str(include_str!("../tauri.conf.json")) let tauri_config: Config = serde_json::from_str(include_str!("../tauri.conf.json"))
.expect("failed to parse tauri config"); .expect("Failed to parse tauri config");
(pake_config, tauri_config) (pake_config, tauri_config)
} }
pub fn get_data_dir(_tauri_config: Config) -> PathBuf { pub fn get_data_dir(_tauri_config: Config) -> PathBuf {
#[cfg(any(target_os = "linux", target_os = "windows"))]
{ {
let package_name = _tauri_config.package.product_name.unwrap(); let package_name = _tauri_config.package.product_name.unwrap();
let home_dir = home::home_dir().expect("Error, can't found your home dir!!"); let data_dir = config_dir().expect("Failed to get data dirname").join(package_name);
let data_dir = match cfg!(target_os = "windows") {
true => home_dir.join("AppData").join("Roaming").join(package_name),
false => home_dir.join(".config").join(package_name),
};
if !data_dir.exists() { if !data_dir.exists() {
std::fs::create_dir(&data_dir) std::fs::create_dir(&data_dir)
.unwrap_or_else(|_| panic!("can't create dir {}", data_dir.display())); .unwrap_or_else(|_| panic!("Can't create dir {}", data_dir.display()));
} }
data_dir data_dir
} }
#[cfg(target_os = "macos")]
{
PathBuf::new()
}
} }