summaryrefslogtreecommitdiffstats
path: root/src/modules/python.rs
diff options
context:
space:
mode:
authorTim Mulqueen <Multimo@users.noreply.github.com>2019-05-12 13:37:23 -0400
committerMatan Kushner <hello@matchai.me>2019-05-12 13:37:23 -0400
commit5fd715e7c30420ced129a41a1765919b31528cc6 (patch)
treef7284f4797f30757826d3487631444f0bf005a4d /src/modules/python.rs
parentd3ce00c5163b1c6a2b3bc510f8900d51f5320d54 (diff)
Implement directory scanner (#34)
Diffstat (limited to 'src/modules/python.rs')
-rw-r--r--src/modules/python.rs32
1 files changed, 11 insertions, 21 deletions
diff --git a/src/modules/python.rs b/src/modules/python.rs
index 70625a47c..fdab440e3 100644
--- a/src/modules/python.rs
+++ b/src/modules/python.rs
@@ -1,5 +1,4 @@
use ansi_term::Color;
-use std::path::PathBuf;
use std::process::Command;
use super::{Context, Module};
@@ -12,7 +11,17 @@ use super::{Context, Module};
/// - Current directory contains a `requirements.txt` file
/// - Current directory contains a `pyproject.toml` file
pub fn segment(context: &Context) -> Option<Module> {
- let is_py_project = context.dir_files.iter().any(has_py_files);
+ let is_py_project = context
+ .new_scan_dir()
+ .set_files(&[
+ "requirements.txt",
+ ".python-version",
+ "pyproject.toml",
+ "pyproject.toml",
+ ])
+ .set_extensions(&["py"])
+ .scan();
+
if !is_py_project {
return None;
}
@@ -35,25 +44,6 @@ pub fn segment(context: &Context) -> Option<Module> {
}
}
-fn has_py_files(dir_entry: &PathBuf) -> bool {
- let is_py_file =
- |d: &PathBuf| -> bool { d.is_file() && d.extension().unwrap_or_default() == "py" };
- let is_python_version = |d: &PathBuf| -> bool {
- d.is_file() && d.file_name().unwrap_or_default() == ".python-version"
- };
- let is_requirements_txt = |d: &PathBuf| -> bool {
- d.is_file() && d.file_name().unwrap_or_default() == "requirements.txt"
- };
- let is_py_project = |d: &PathBuf| -> bool {
- d.is_file() && d.file_name().unwrap_or_default() == "pyproject.toml"
- };
-
- is_py_file(&dir_entry)
- || is_python_version(&dir_entry)
- || is_requirements_txt(&dir_entry)
- || is_py_project(&dir_entry)
-}
-
fn get_python_version() -> Option<String> {
match Command::new("python").arg("--version").output() {
Ok(output) => Some(String::from_utf8(output.stdout).unwrap()),