mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-02 14:52:01 +00:00
Dedicated cache directory per ruff version (#8333)
This commit is contained in:
parent
951c59c6ad
commit
8cc97f70b4
3 changed files with 7 additions and 11 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -2081,7 +2081,6 @@ dependencies = [
|
||||||
"insta-cmd",
|
"insta-cmd",
|
||||||
"is-macro",
|
"is-macro",
|
||||||
"itertools 0.11.0",
|
"itertools 0.11.0",
|
||||||
"itoa",
|
|
||||||
"log",
|
"log",
|
||||||
"mimalloc",
|
"mimalloc",
|
||||||
"notify",
|
"notify",
|
||||||
|
|
|
@ -44,7 +44,6 @@ glob = { workspace = true }
|
||||||
ignore = { workspace = true }
|
ignore = { workspace = true }
|
||||||
is-macro = { workspace = true }
|
is-macro = { workspace = true }
|
||||||
itertools = { workspace = true }
|
itertools = { workspace = true }
|
||||||
itoa = { version = "1.0.6" }
|
|
||||||
log = { workspace = true }
|
log = { workspace = true }
|
||||||
notify = { version = "6.1.1" }
|
notify = { version = "6.1.1" }
|
||||||
path-absolutize = { workspace = true, features = ["once_cell_cache"] }
|
path-absolutize = { workspace = true, features = ["once_cell_cache"] }
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
use std::fs::{self, File};
|
use std::fs::{self, File};
|
||||||
use std::hash::Hasher;
|
use std::hash::Hasher;
|
||||||
|
@ -20,7 +19,7 @@ use serde::{Deserialize, Serialize};
|
||||||
use ruff_cache::{CacheKey, CacheKeyHasher};
|
use ruff_cache::{CacheKey, CacheKeyHasher};
|
||||||
use ruff_diagnostics::{DiagnosticKind, Fix};
|
use ruff_diagnostics::{DiagnosticKind, Fix};
|
||||||
use ruff_linter::message::Message;
|
use ruff_linter::message::Message;
|
||||||
use ruff_linter::warn_user;
|
use ruff_linter::{warn_user, VERSION};
|
||||||
use ruff_macros::CacheKey;
|
use ruff_macros::CacheKey;
|
||||||
use ruff_notebook::NotebookIndex;
|
use ruff_notebook::NotebookIndex;
|
||||||
use ruff_python_ast::imports::ImportMap;
|
use ruff_python_ast::imports::ImportMap;
|
||||||
|
@ -102,9 +101,8 @@ impl Cache {
|
||||||
pub(crate) fn open(package_root: PathBuf, settings: &Settings) -> Self {
|
pub(crate) fn open(package_root: PathBuf, settings: &Settings) -> Self {
|
||||||
debug_assert!(package_root.is_absolute(), "package root not canonicalized");
|
debug_assert!(package_root.is_absolute(), "package root not canonicalized");
|
||||||
|
|
||||||
let mut buf = itoa::Buffer::new();
|
let key = format!("{}", cache_key(&package_root, settings));
|
||||||
let key = Path::new(buf.format(cache_key(&package_root, settings)));
|
let path = PathBuf::from_iter([&settings.cache_dir, Path::new(VERSION), Path::new(&key)]);
|
||||||
let path = PathBuf::from_iter([&settings.cache_dir, Path::new("content"), key]);
|
|
||||||
|
|
||||||
let file = match File::open(&path) {
|
let file = match File::open(&path) {
|
||||||
Ok(file) => file,
|
Ok(file) => file,
|
||||||
|
@ -142,7 +140,7 @@ impl Cache {
|
||||||
fn empty(path: PathBuf, package_root: PathBuf) -> Self {
|
fn empty(path: PathBuf, package_root: PathBuf) -> Self {
|
||||||
let package = PackageCache {
|
let package = PackageCache {
|
||||||
package_root,
|
package_root,
|
||||||
files: HashMap::new(),
|
files: FxHashMap::default(),
|
||||||
};
|
};
|
||||||
Cache::new(path, package)
|
Cache::new(path, package)
|
||||||
}
|
}
|
||||||
|
@ -294,7 +292,7 @@ struct PackageCache {
|
||||||
/// single file "packages", e.g. scripts.
|
/// single file "packages", e.g. scripts.
|
||||||
package_root: PathBuf,
|
package_root: PathBuf,
|
||||||
/// Mapping of source file path to it's cached data.
|
/// Mapping of source file path to it's cached data.
|
||||||
files: HashMap<RelativePathBuf, FileCache>,
|
files: FxHashMap<RelativePathBuf, FileCache>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// On disk representation of the cache per source file.
|
/// On disk representation of the cache per source file.
|
||||||
|
@ -350,16 +348,16 @@ struct FileCacheData {
|
||||||
/// version.
|
/// version.
|
||||||
fn cache_key(package_root: &Path, settings: &Settings) -> u64 {
|
fn cache_key(package_root: &Path, settings: &Settings) -> u64 {
|
||||||
let mut hasher = CacheKeyHasher::new();
|
let mut hasher = CacheKeyHasher::new();
|
||||||
env!("CARGO_PKG_VERSION").cache_key(&mut hasher);
|
|
||||||
package_root.cache_key(&mut hasher);
|
package_root.cache_key(&mut hasher);
|
||||||
settings.cache_key(&mut hasher);
|
settings.cache_key(&mut hasher);
|
||||||
|
|
||||||
hasher.finish()
|
hasher.finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Initialize the cache at the specified `Path`.
|
/// Initialize the cache at the specified `Path`.
|
||||||
pub(crate) fn init(path: &Path) -> Result<()> {
|
pub(crate) fn init(path: &Path) -> Result<()> {
|
||||||
// Create the cache directories.
|
// Create the cache directories.
|
||||||
fs::create_dir_all(path.join("content"))?;
|
fs::create_dir_all(path.join(VERSION))?;
|
||||||
|
|
||||||
// Add the CACHEDIR.TAG.
|
// Add the CACHEDIR.TAG.
|
||||||
if !cachedir::is_tagged(path)? {
|
if !cachedir::is_tagged(path)? {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue