Initial Commit

This commit is contained in:
Beefki
2017-10-13 11:53:50 -05:00
commit d1fbeea1df
5 changed files with 303 additions and 0 deletions

67
src/main.rs Normal file
View File

@ -0,0 +1,67 @@
mod packagemanager;
use packagemanager::*;
mod management;
use management::Management;
mod config;
use config::Config;
use std::process::{Command, Child};
use std::io;
use std::path::Path;
fn input() -> Result<String, io::Error> {
let mut val = String::new();
io::stdin().read_line(&mut val)?;
Ok(val)
}
fn main() {
let config = Config::new();
if Path::new("default.conf").is_file() {
let pac = read_default();
let mut child = config.run(pac);
child.wait().expect("Failed to wait on child");
std::process::exit(0);
}
let pacmatic = PackageManager::pacmatic();
let pacman = PackageManager::pacman();
let aptget = PackageManager::apt();
let xbps = PackageManager::xbps();
let managers: Vec<PackageManager> = vec![pacmatic, pacman, aptget, xbps];
let mut found: bool = false;
for prog in managers {
if found { break }
if prog.exe.is_file() {
println!("Found {}, is this the manager you want to use? [Y/n]", prog.name);
if input().unwrap().trim().to_lowercase() == "n" {
continue
}else {
found = true;
println!("Would you like to set {} as default? [y/N]", prog.name);
if input().unwrap().trim().to_lowercase() == "y" {
let check = prog.set_default();
match check {
Ok(_) => println!("Default set"),
Err(err) => println!("An error occured while setting default:\
{}", err)
}
}
//let mut child = call(prog, &config.action, &config.term.clone().unwrap_or_else(|| "".to_string()));
let mut child = config.run(prog);
child.wait().expect("Failed to wait on child");
}
}
}
if !found {
println!("Sorry, your desired package manager is not supported at this time");
std::process::exit(0);
}
}