mirror of
https://github.com/TECHNOFAB11/pay-respects.git
synced 2025-12-12 14:30:10 +01:00
feat: running modules in another thread
This commit is contained in:
parent
46c1aa62ce
commit
c93f5b5cf5
2 changed files with 37 additions and 18 deletions
|
|
@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Running standard modules in a separated thread
|
||||||
|
|
||||||
## [0.6.8] - 2025-01-02
|
## [0.6.8] - 2025-01-02
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
@ -127,7 +131,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||||
History start.
|
History start.
|
||||||
|
|
||||||
[unreleased]: https://github.com/iffse/pay-respects/compare/v0.6.8..HEAD
|
[unreleased]: https://github.com/iffse/pay-respects/compare/v0.6.8..HEAD
|
||||||
[0.6.8]: https://github.com/iffse/pay-respects/compare/v0.6.8..HEAD
|
[0.6.8]: https://github.com/iffse/pay-respects/compare/v0.6.7..HEAD
|
||||||
[0.6.7]: https://github.com/iffse/pay-respects/compare/v0.6.6..v0.6.7
|
[0.6.7]: https://github.com/iffse/pay-respects/compare/v0.6.6..v0.6.7
|
||||||
[0.6.6]: https://github.com/iffse/pay-respects/compare/v0.6.5..v0.6.6
|
[0.6.6]: https://github.com/iffse/pay-respects/compare/v0.6.5..v0.6.6
|
||||||
[0.6.5]: https://github.com/iffse/pay-respects/compare/v0.6.4..v0.6.5
|
[0.6.5]: https://github.com/iffse/pay-respects/compare/v0.6.4..v0.6.5
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
use std::io::stderr;
|
use std::io::stderr;
|
||||||
use std::process::{exit, Stdio};
|
use std::process::{exit, Stdio};
|
||||||
|
use std::thread;
|
||||||
use std::time::{Duration, Instant};
|
use std::time::{Duration, Instant};
|
||||||
|
|
||||||
use colored::Colorize;
|
use colored::Colorize;
|
||||||
|
|
@ -17,6 +18,8 @@ pub fn suggest_candidates(data: &mut Data) {
|
||||||
let command = &data.command;
|
let command = &data.command;
|
||||||
let privilege = &data.privilege;
|
let privilege = &data.privilege;
|
||||||
let mut suggest_candidates = vec![];
|
let mut suggest_candidates = vec![];
|
||||||
|
let mut module_candidates = vec![];
|
||||||
|
let mut final_candidates = vec![];
|
||||||
|
|
||||||
let modules = &data.modules;
|
let modules = &data.modules;
|
||||||
let fallbacks = &data.fallbacks;
|
let fallbacks = &data.fallbacks;
|
||||||
|
|
@ -27,35 +30,47 @@ pub fn suggest_candidates(data: &mut Data) {
|
||||||
eprintln!("fallbacks: {fallbacks:?}");
|
eprintln!("fallbacks: {fallbacks:?}");
|
||||||
}
|
}
|
||||||
|
|
||||||
for module in modules {
|
thread::scope(|s| {
|
||||||
let new_candidates = module_output(data, module);
|
s.spawn(|| {
|
||||||
|
let command = &data.command;
|
||||||
|
for module in modules {
|
||||||
|
let new_candidates = module_output(&data, module);
|
||||||
|
|
||||||
if let Some(candidates) = new_candidates {
|
if let Some(candidates) = new_candidates {
|
||||||
|
add_candidates_no_dup(command, &mut module_candidates, &candidates);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if privilege.is_none() {
|
||||||
|
if let Some(candidates) = match_pattern("_PR_privilege", data) {
|
||||||
|
add_candidates_no_dup(command, &mut suggest_candidates, &candidates);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if let Some(candidates) = match_pattern(executable, data) {
|
||||||
add_candidates_no_dup(command, &mut suggest_candidates, &candidates);
|
add_candidates_no_dup(command, &mut suggest_candidates, &candidates);
|
||||||
}
|
}
|
||||||
}
|
if let Some(candidates) = match_pattern("_PR_general", data) {
|
||||||
|
|
||||||
if privilege.is_none() {
|
|
||||||
if let Some(candidates) = match_pattern("_PR_privilege", data) {
|
|
||||||
add_candidates_no_dup(command, &mut suggest_candidates, &candidates);
|
add_candidates_no_dup(command, &mut suggest_candidates, &candidates);
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
if let Some(candidates) = match_pattern(executable, data) {
|
|
||||||
add_candidates_no_dup(command, &mut suggest_candidates, &candidates);
|
|
||||||
}
|
|
||||||
if let Some(candidates) = match_pattern("_PR_general", data) {
|
|
||||||
add_candidates_no_dup(command, &mut suggest_candidates, &candidates);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if !module_candidates.is_empty() {
|
||||||
|
add_candidates_no_dup(command, &mut final_candidates, &module_candidates);
|
||||||
|
}
|
||||||
if !suggest_candidates.is_empty() {
|
if !suggest_candidates.is_empty() {
|
||||||
data.candidates = suggest_candidates;
|
add_candidates_no_dup(command, &mut final_candidates, &suggest_candidates);
|
||||||
|
}
|
||||||
|
|
||||||
|
if !final_candidates.is_empty() {
|
||||||
|
data.candidates = final_candidates;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for fallback in fallbacks {
|
for fallback in fallbacks {
|
||||||
let candidates = module_output(data, fallback);
|
let candidates = module_output(data, fallback);
|
||||||
if candidates.is_some() {
|
if candidates.is_some() {
|
||||||
add_candidates_no_dup(command, &mut suggest_candidates, &candidates.unwrap());
|
add_candidates_no_dup(command, &mut final_candidates, &candidates.unwrap());
|
||||||
data.candidates = suggest_candidates;
|
data.candidates = final_candidates;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue