mirror of
https://github.com/imgurbot12/rmenu.git
synced 2025-01-26 12:58:08 +01:00
feat: rustfmt, moved cache to xdg-cache dir
This commit is contained in:
parent
64fdbaafc4
commit
5fb9aa6863
3 changed files with 26 additions and 24 deletions
|
@ -3,15 +3,11 @@ use std::fs;
|
|||
use std::path::PathBuf;
|
||||
use std::time::{Duration, SystemTime};
|
||||
|
||||
use once_cell::sync::Lazy;
|
||||
use rmenu_plugin::Entry;
|
||||
use thiserror::Error;
|
||||
|
||||
use crate::config::{CacheSetting, PluginConfig};
|
||||
use crate::CONFIG_DIR;
|
||||
|
||||
static CONFIG_PATH: Lazy<PathBuf> =
|
||||
Lazy::new(|| PathBuf::from(shellexpand::tilde(CONFIG_DIR).to_string()));
|
||||
use crate::XDG_PREFIX;
|
||||
|
||||
#[derive(Debug, Error)]
|
||||
pub enum CacheError {
|
||||
|
@ -29,7 +25,10 @@ pub enum CacheError {
|
|||
|
||||
#[inline]
|
||||
fn cache_file(name: &str) -> PathBuf {
|
||||
CONFIG_PATH.join(format!("{name}.cache"))
|
||||
xdg::BaseDirectories::with_prefix(XDG_PREFIX)
|
||||
.expect("Failed to read xdg base dirs")
|
||||
.place_cache_file(format!("{name}.cache"))
|
||||
.expect("Failed to write xdg cache dirs")
|
||||
}
|
||||
|
||||
/// Read Entries from Cache (if Valid and Available)
|
||||
|
|
|
@ -181,21 +181,24 @@ pub type Result<T> = std::result::Result<T, RMenuError>;
|
|||
impl Args {
|
||||
/// Find a specifically named file across xdg config paths
|
||||
fn find_xdg_file(&self, name: &str, base: &Option<PathBuf>) -> Option<String> {
|
||||
return base.clone().or_else(|| {
|
||||
xdg::BaseDirectories::with_prefix(XDG_PREFIX)
|
||||
.expect("Failed to read xdg base dirs")
|
||||
.find_config_file(name)
|
||||
}).map(|f| {
|
||||
let f = f.to_string_lossy().to_string();
|
||||
shellexpand::tilde(&f).to_string()
|
||||
});
|
||||
return base
|
||||
.clone()
|
||||
.or_else(|| {
|
||||
xdg::BaseDirectories::with_prefix(XDG_PREFIX)
|
||||
.expect("Failed to read xdg base dirs")
|
||||
.find_config_file(name)
|
||||
})
|
||||
.map(|f| {
|
||||
let f = f.to_string_lossy().to_string();
|
||||
shellexpand::tilde(&f).to_string()
|
||||
});
|
||||
}
|
||||
|
||||
/// Load Configuration File
|
||||
pub fn get_config(&self) -> Result<Config> {
|
||||
let config = self.find_xdg_file(DEFAULT_CONFIG, &self.config);
|
||||
|
||||
if let Some (path) = config {
|
||||
if let Some(path) = config {
|
||||
let config: Config = match read_to_string(path) {
|
||||
Ok(content) => serde_yaml::from_str(&content),
|
||||
Err(err) => {
|
||||
|
@ -251,10 +254,12 @@ impl Args {
|
|||
pub fn get_theme(&self) -> String {
|
||||
self.find_xdg_file(DEFAULT_THEME, &self.theme)
|
||||
.map(read_to_string)
|
||||
.map(|f| f.unwrap_or_else(|err| {
|
||||
log::error!("Failed to load CSS: {err:?}");
|
||||
String::new()
|
||||
}))
|
||||
.map(|f| {
|
||||
f.unwrap_or_else(|err| {
|
||||
log::error!("Failed to load CSS: {err:?}");
|
||||
String::new()
|
||||
})
|
||||
})
|
||||
.unwrap_or_else(String::new)
|
||||
}
|
||||
|
||||
|
@ -263,9 +268,9 @@ impl Args {
|
|||
let css = self
|
||||
.css
|
||||
.clone()
|
||||
.or(c.css.as_ref().map(|s| PathBuf::from(s)));
|
||||
if let Some(css) = css {
|
||||
let path = css.to_string_lossy().to_string();
|
||||
.map(|s| s.to_string_lossy().to_string())
|
||||
.or(c.css.clone());
|
||||
if let Some(path) = css {
|
||||
let path = shellexpand::tilde(&path).to_string();
|
||||
match read_to_string(&path) {
|
||||
Ok(css) => return css,
|
||||
|
|
|
@ -10,7 +10,6 @@ mod state;
|
|||
use clap::Parser;
|
||||
use rmenu_plugin::{self_exe, Entry};
|
||||
|
||||
static CONFIG_DIR: &'static str = "~/.config/rmenu/";
|
||||
static DEFAULT_THEME: &'static str = "style.css";
|
||||
static DEFAULT_CONFIG: &'static str = "config.yaml";
|
||||
static XDG_PREFIX: &'static str = "rmenu";
|
||||
|
@ -55,7 +54,6 @@ fn main() -> cli::Result<()> {
|
|||
.any(|e| e.icon.is_some() || e.icon_alt.is_some());
|
||||
config.use_comments = config.use_comments && entries.iter().any(|e| e.comment.is_some());
|
||||
|
||||
|
||||
let theme = cli.get_theme();
|
||||
let css = cli.get_css(&config);
|
||||
|
||||
|
|
Loading…
Reference in a new issue