Skip to content

Commit 1b40e07

Browse files
committed
fix: support windows
1 parent 5e9fc22 commit 1b40e07

File tree

3 files changed

+18
-19
lines changed

3 files changed

+18
-19
lines changed

Cargo.lock

+1-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ categories = ["command-line-utilities"]
1414
[dependencies]
1515
anyhow = "1.0.69"
1616
clap = { version = "4.1.8", features = ["derive", "cargo"] }
17+
dirs = "4.0.0"
1718
octocrab = "0.18.1"
1819
regex = "1.7.1"
1920
reqwest = { version = "0.11.14", features = ["json"] }
@@ -22,4 +23,3 @@ serde = { version = "1.0.154", features = ["derive"] }
2223
serde_json = "1.0.94"
2324
thiserror = "1.0.39"
2425
tokio = { version = "1.26.0", features = ["rt", "macros", "rt-multi-thread"] }
25-
xdg = "2.4.1"

src/cache.rs

+16-8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use std::{collections::BTreeMap, fs::File, io, path::PathBuf};
22

33
use thiserror::Error;
4-
use xdg::{BaseDirectories, BaseDirectoriesError};
54

65
use crate::package_json::PackageJson;
76

@@ -29,15 +28,22 @@ pub type ReleaseTags = BTreeMap<ReleaseTag, PackageJson>;
2928
impl Cache {
3029
pub const CACHE_FILE: &str = "cache.json";
3130

32-
pub fn cache_file() -> Result<PathBuf, Error> {
33-
let xdg_dirs = BaseDirectories::with_prefix(env!("CARGO_PKG_NAME"))?;
34-
let cache_file = xdg_dirs.place_cache_file(Self::CACHE_FILE)?;
31+
pub fn cache_dir() -> Result<PathBuf, Error> {
32+
let cache_dir = dirs::cache_dir()
33+
.ok_or(Error::CacheDir)?
34+
.join(env!("CARGO_PKG_NAME"));
35+
36+
Ok(cache_dir)
37+
}
38+
39+
pub fn cache_file_path() -> Result<PathBuf, Error> {
40+
let cache_file = Self::cache_dir()?.join(Self::CACHE_FILE);
3541

3642
Ok(cache_file)
3743
}
3844

3945
pub fn read() -> Result<Self, Error> {
40-
let cache_file = match File::open(Self::cache_file()?) {
46+
let cache_file = match File::open(Self::cache_file_path()?) {
4147
Ok(f) => f,
4248
Err(_) => return Ok(Default::default()),
4349
};
@@ -47,7 +53,9 @@ impl Cache {
4753
}
4854

4955
pub fn save(&self) -> Result<(), Error> {
50-
let cache_file = File::create(Self::cache_file()?)?;
56+
std::fs::create_dir_all(Self::cache_dir()?)?;
57+
58+
let cache_file = File::create(Self::cache_file_path()?)?;
5159
serde_json::to_writer(cache_file, &self.0)?;
5260

5361
Ok(())
@@ -59,8 +67,8 @@ impl Cache {
5967
pub enum Error {
6068
#[error("io error")]
6169
IO(#[from] io::Error),
62-
#[error("xdg base directories error")]
63-
BaseDirectories(#[from] BaseDirectoriesError),
70+
#[error("cache dir error")]
71+
CacheDir,
6472
#[error("serde error")]
6573
SerdeJson(#[from] serde_json::Error),
6674
}

0 commit comments

Comments
 (0)