Reduced hacky code
This commit is contained in:
parent
faad2908a2
commit
9a43c907ba
@ -11,7 +11,7 @@ impl Config {
|
||||
/// and loads the appropriate data from the passed `PackageManager`.
|
||||
/// Finally calls the program and passes the appropriate arguments
|
||||
pub fn run(&self, pac: PackageManager) {
|
||||
let vec = match self.action {
|
||||
let get = match self.action {
|
||||
Management::Search => pac.search,
|
||||
Management::Install => pac.install,
|
||||
Management::Uninstall => pac.uninstall,
|
||||
@ -23,34 +23,42 @@ impl Config {
|
||||
Management::CompleteClear => pac.complete_cache_clear,
|
||||
};
|
||||
|
||||
let mut prog = match vec {
|
||||
let mut prog = match get {
|
||||
None => {
|
||||
println!("Sorry, your package manager does not support this action");
|
||||
std::process::exit(0);
|
||||
},
|
||||
Some(x) => x,
|
||||
Some(vec) => vec,
|
||||
};
|
||||
|
||||
let command = prog.remove(0);
|
||||
|
||||
let term = match &self.term {
|
||||
&None => "",
|
||||
&Some(ref val) => val,
|
||||
};
|
||||
|
||||
if prog.first().is_none() {
|
||||
let mut child = Command::new(&command).spawn().expect("Broken?");
|
||||
child.wait().expect("Failed to wait on child");
|
||||
}else if self.term.is_none() {
|
||||
while prog.first().is_some() {
|
||||
let mut child = Command::new(&command).arg(prog.remove(0)).spawn().expect("Broken2?");
|
||||
match (prog.first(), &self.term) {
|
||||
(None, _) => {
|
||||
let mut child = Command::new(&command).spawn().expect(
|
||||
"Failed to open package manager"
|
||||
);
|
||||
child.wait().expect("Failed to wait on package manager");
|
||||
},
|
||||
(_, &None) => {
|
||||
for arg in prog.iter() {
|
||||
let mut child =Command::new(&command)
|
||||
.arg(arg)
|
||||
.spawn()
|
||||
.expect("Failed to open package manager");
|
||||
child.wait().expect("Failed to wait on child");
|
||||
}
|
||||
}else {
|
||||
while prog.first().is_some() {
|
||||
let mut child = Command::new(&command).arg(prog.remove(0)).arg(term).spawn().expect("Broken3?");
|
||||
},
|
||||
(Some(_), &Some(ref term)) => {
|
||||
for arg in prog.iter() {
|
||||
let mut child = Command::new(&command)
|
||||
.arg(arg)
|
||||
.arg(term)
|
||||
.spawn()
|
||||
.expect("Failed to open package manager");
|
||||
child.wait().expect("Failed to wait on child");
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
/// Creates a `Config` from passed arguments, parses the `Management` enum
|
||||
|
Loading…
x
Reference in New Issue
Block a user