diff --git a/overlays/pkgs/sway-helper/src/commands/run.rs b/overlays/pkgs/sway-helper/src/commands/run.rs index e3b9e69..44866e1 100644 --- a/overlays/pkgs/sway-helper/src/commands/run.rs +++ b/overlays/pkgs/sway-helper/src/commands/run.rs @@ -1,5 +1,5 @@ use super::CliRun; -use std::{os::linux::fs::MetadataExt, path::Path}; +use crate::helpers::programs::list_programs_from_path; pub(crate) struct Run {} @@ -15,30 +15,3 @@ impl CliRun for Run { sway.run_command(format!("exec \"{program}\"")).unwrap(); } } - -fn is_executable(path: &Path) -> bool { - match std::fs::metadata(path) { - Ok(meta) => (meta.st_mode() & 0o111) != 0, - Err(_) => false, - } -} - -fn list_programs_from_path() -> Vec { - std::env::var("PATH") - .expect("PATH environment variable should be set") - .split(':') - .flat_map(|path| match std::fs::read_dir(path) { - Ok(entries) => Some(entries.into_iter().flat_map(|e| e.ok()).collect::>()), - Err(_) => None, - }) - .flatten() - .flat_map(|entry| { - let path = entry.path(); - if path.is_file() && is_executable(&path) { - Some(path.file_name().unwrap().to_str().unwrap().to_owned()) - } else { - None - } - }) - .collect() -} diff --git a/overlays/pkgs/sway-helper/src/helpers/programs.rs b/overlays/pkgs/sway-helper/src/helpers/programs.rs index 8b13789..868207d 100644 --- a/overlays/pkgs/sway-helper/src/helpers/programs.rs +++ b/overlays/pkgs/sway-helper/src/helpers/programs.rs @@ -1 +1,28 @@ +use std::{os::linux::fs::MetadataExt, path::Path}; +pub(crate) fn list_programs_from_path() -> Vec { + std::env::var("PATH") + .expect("PATH environment variable should be set") + .split(':') + .flat_map(|path| match std::fs::read_dir(path) { + Ok(entries) => Some(entries.into_iter().flat_map(|e| e.ok()).collect::>()), + Err(_) => None, + }) + .flatten() + .flat_map(|entry| { + let path = entry.path(); + if path.is_file() && is_executable(&path) { + Some(path.file_name().unwrap().to_str().unwrap().to_owned()) + } else { + None + } + }) + .collect() +} + +fn is_executable(path: &Path) -> bool { + match std::fs::metadata(path) { + Ok(meta) => (meta.st_mode() & 0o111) != 0, + Err(_) => false, + } +}