feat(library): Add function for finding plugin configs
This commit is contained in:
parent
ebb3e83b73
commit
2c14701898
2 changed files with 35 additions and 13 deletions
19
src/config.rs
Normal file
19
src/config.rs
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
use std::path::PathBuf;
|
||||
|
||||
pub fn find<'a>(name: &'a str) -> impl Iterator<Item = PathBuf> + 'a {
|
||||
crate::plugin_paths()
|
||||
.filter_map(|path| path.read_dir().ok())
|
||||
.flat_map(move |dir| {
|
||||
dir.filter_map(Result::ok).filter_map(move |entry| {
|
||||
if entry.file_name() == name {
|
||||
let path = entry.path();
|
||||
let config_path = path.join("config.ron");
|
||||
if config_path.exists() {
|
||||
return Some(config_path);
|
||||
}
|
||||
}
|
||||
|
||||
None
|
||||
})
|
||||
})
|
||||
}
|
||||
29
src/lib.rs
29
src/lib.rs
|
|
@ -1,10 +1,14 @@
|
|||
mod codec;
|
||||
pub mod config;
|
||||
|
||||
pub use self::codec::*;
|
||||
|
||||
use const_format::concatcp;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::{borrow::Cow, path::{Path, PathBuf}};
|
||||
use std::{
|
||||
borrow::Cow,
|
||||
path::{Path, PathBuf},
|
||||
};
|
||||
|
||||
pub const LOCAL: &str = "~/.local/share/pop-launcher";
|
||||
pub const LOCAL_PLUGINS: &str = concatcp!(LOCAL, "/plugins");
|
||||
|
|
@ -18,18 +22,17 @@ pub const DISTRIBUTION_PLUGINS: &str = concatcp!(DISTRIBUTION, "/plugins");
|
|||
pub const PLUGIN_PATHS: &[&str] = &[LOCAL_PLUGINS, SYSTEM_PLUGINS, DISTRIBUTION_PLUGINS];
|
||||
|
||||
pub fn plugin_paths() -> impl Iterator<Item = Cow<'static, Path>> {
|
||||
PLUGIN_PATHS.iter()
|
||||
.map(|path| {
|
||||
#[allow(deprecated)]
|
||||
if let Some(path) = path.strip_prefix("~/") {
|
||||
let path = std::env::home_dir()
|
||||
.expect("user does not have home dir")
|
||||
.join(path);
|
||||
Cow::Owned(path)
|
||||
} else {
|
||||
Cow::Borrowed(Path::new(path))
|
||||
}
|
||||
})
|
||||
PLUGIN_PATHS.iter().map(|path| {
|
||||
#[allow(deprecated)]
|
||||
if let Some(path) = path.strip_prefix("~/") {
|
||||
let path = std::env::home_dir()
|
||||
.expect("user does not have home dir")
|
||||
.join(path);
|
||||
Cow::Owned(path)
|
||||
} else {
|
||||
Cow::Borrowed(Path::new(path))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/// u32 value defining the generation of an indice.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue