Added docs for cache
This commit is contained in:
parent
56e39a33f9
commit
949490b350
13
src/cache.rs
13
src/cache.rs
|
@ -1,13 +1,21 @@
|
||||||
|
//! This module contains the cache manager.
|
||||||
|
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::{Write, BufRead, BufReader};
|
use std::io::{Write, BufRead, BufReader};
|
||||||
use walkdir::WalkDir;
|
use walkdir::WalkDir;
|
||||||
use crate::{Result, GIT_DIR};
|
use crate::{Result, GIT_DIR};
|
||||||
|
|
||||||
|
/// The cache of gclone.
|
||||||
|
///
|
||||||
|
/// When running the command `cdg`, if the computer just booted, finding all the directories can be
|
||||||
|
/// quite slow. The cache contains the list of entries in the git directory to avoid re-finding
|
||||||
|
/// them every time.
|
||||||
pub struct Cache(Vec<String>);
|
pub struct Cache(Vec<String>);
|
||||||
|
|
||||||
impl Cache {
|
impl Cache {
|
||||||
|
|
||||||
|
/// Generates the cache by traversing the files in the git directory.
|
||||||
pub fn generate() -> Cache {
|
pub fn generate() -> Cache {
|
||||||
Cache(WalkDir::new(&*GIT_DIR)
|
Cache(WalkDir::new(&*GIT_DIR)
|
||||||
.max_depth(3)
|
.max_depth(3)
|
||||||
|
@ -17,6 +25,7 @@ impl Cache {
|
||||||
.collect())
|
.collect())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Reads the cache file.
|
||||||
pub fn read() -> Result<Cache> {
|
pub fn read() -> Result<Cache> {
|
||||||
|
|
||||||
let mut path = PathBuf::from(&*GIT_DIR);
|
let mut path = PathBuf::from(&*GIT_DIR);
|
||||||
|
@ -36,6 +45,7 @@ impl Cache {
|
||||||
Ok(Cache(values))
|
Ok(Cache(values))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Reads the cache file, and if it failed, generate a new cache.
|
||||||
pub fn read_or_generate() -> Cache {
|
pub fn read_or_generate() -> Cache {
|
||||||
match Cache::read() {
|
match Cache::read() {
|
||||||
Ok(c) => c,
|
Ok(c) => c,
|
||||||
|
@ -43,6 +53,7 @@ impl Cache {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Writes the current content of the cache to the cache file.
|
||||||
pub fn write(&self) -> Result<()> {
|
pub fn write(&self) -> Result<()> {
|
||||||
let mut path = PathBuf::from(&*GIT_DIR);
|
let mut path = PathBuf::from(&*GIT_DIR);
|
||||||
path.push(".cdgcache");
|
path.push(".cdgcache");
|
||||||
|
@ -55,6 +66,7 @@ impl Cache {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Search a directory in the cache, and returns all matching directories.
|
||||||
pub fn find(&self, dirname: &str) -> Vec<String> {
|
pub fn find(&self, dirname: &str) -> Vec<String> {
|
||||||
let dirname = &format!("/{}", dirname);
|
let dirname = &format!("/{}", dirname);
|
||||||
let mut matches = vec![];
|
let mut matches = vec![];
|
||||||
|
@ -67,6 +79,7 @@ impl Cache {
|
||||||
matches
|
matches
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Appends a value to the cache.
|
||||||
pub fn append(&mut self, value: String) {
|
pub fn append(&mut self, value: String) {
|
||||||
self.0.push(value);
|
self.0.push(value);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue