mirror of https://github.com/mtshiba/pylyzer
fix: exit 1 when providing invalid file or patterns
This commit is contained in:
parent
5fe1487716
commit
f1e0e6c185
|
|
@ -214,24 +214,43 @@ For more information try `pylyzer --help`"
|
||||||
cfg
|
cfg
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn files_to_be_checked() -> Vec<PathBuf> {
|
pub(crate) fn files_to_be_checked() -> (Vec<PathBuf>, Vec<String>) {
|
||||||
let file_or_patterns = env::args()
|
let file_or_patterns = env::args()
|
||||||
.skip(1)
|
.skip(1)
|
||||||
.rev()
|
.rev()
|
||||||
.take_while(|arg| !arg.starts_with("-"));
|
.take_while(|arg| !arg.starts_with("-"));
|
||||||
let mut files = HashSet::new();
|
let mut files = HashSet::new();
|
||||||
|
let mut invalid_files = HashSet::new();
|
||||||
for file_or_pattern in file_or_patterns {
|
for file_or_pattern in file_or_patterns {
|
||||||
if PathBuf::from(&file_or_pattern).is_file() {
|
if PathBuf::from(&file_or_pattern).is_file() {
|
||||||
files.insert(PathBuf::from(&file_or_pattern));
|
files.insert(PathBuf::from(&file_or_pattern));
|
||||||
} else {
|
} else {
|
||||||
for entry in glob::glob(&file_or_pattern).expect("Failed to read glob pattern") {
|
let entries = glob::glob(&file_or_pattern);
|
||||||
match entry {
|
match entries {
|
||||||
Err(e) => eprintln!("err: {e}"),
|
Err(_) => {
|
||||||
Ok(path) if path.is_file() => {files.insert(path);},
|
invalid_files.insert(file_or_pattern.clone());
|
||||||
_ => {}
|
continue;
|
||||||
|
}
|
||||||
|
Ok(entries) => {
|
||||||
|
let mut entries = entries.into_iter().peekable();
|
||||||
|
if entries.peek().is_none() {
|
||||||
|
invalid_files.insert(file_or_pattern.clone());
|
||||||
|
}
|
||||||
|
for entry in entries {
|
||||||
|
match entry {
|
||||||
|
Err(e) => eprintln!("err: {e}"),
|
||||||
|
Ok(path) if path.is_file() => {
|
||||||
|
files.insert(path);
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
files.into_iter().collect()
|
(
|
||||||
|
files.into_iter().collect(),
|
||||||
|
invalid_files.into_iter().collect(),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
10
src/main.rs
10
src/main.rs
|
|
@ -4,6 +4,8 @@ mod copy;
|
||||||
use els::Server;
|
use els::Server;
|
||||||
use erg_common::config::ErgMode;
|
use erg_common::config::ErgMode;
|
||||||
use erg_common::spawn::exec_new_thread;
|
use erg_common::spawn::exec_new_thread;
|
||||||
|
use erg_common::style::colors::RED;
|
||||||
|
use erg_common::style::RESET;
|
||||||
use pylyzer_core::{PythonAnalyzer, SimplePythonParser};
|
use pylyzer_core::{PythonAnalyzer, SimplePythonParser};
|
||||||
|
|
||||||
use crate::config::files_to_be_checked;
|
use crate::config::files_to_be_checked;
|
||||||
|
|
@ -17,7 +19,13 @@ fn run() {
|
||||||
lang_server.run();
|
lang_server.run();
|
||||||
} else {
|
} else {
|
||||||
let mut code = 0;
|
let mut code = 0;
|
||||||
let files = files_to_be_checked();
|
let (files, invalid_files) = files_to_be_checked();
|
||||||
|
for invalid_file in invalid_files {
|
||||||
|
if code == 0 {
|
||||||
|
code = 1;
|
||||||
|
}
|
||||||
|
println!("{RED}Invalid file or pattern{RESET}: {invalid_file}");
|
||||||
|
}
|
||||||
if files.is_empty() {
|
if files.is_empty() {
|
||||||
let mut analyzer = PythonAnalyzer::new(cfg);
|
let mut analyzer = PythonAnalyzer::new(cfg);
|
||||||
code = analyzer.run();
|
code = analyzer.run();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue