diff --git a/src/installer/desktops.rs b/src/installer/desktops.rs new file mode 100755 index 0000000..caf8028 --- /dev/null +++ b/src/installer/desktops.rs @@ -0,0 +1,45 @@ +pub fn choose_pkgs(desktop_setup: &str, de: &str, dm: &str) { + if desktop_setup == "custom" { + install_desktop(de, dm); + } else { + println!("Installing {}", desktop_setup); + match desktop_setup { + "onyx" => { + install_desktop("onyx", "lightdm"); + } + "gnome" => { + install_desktop("gnome", "gdm"); + }, + "kde" => { + install_desktop("kde", "sddm"); + }, + "budgie" => { + install_desktop("budgie", "lightdm"); + }, + "cinnamon" => { + install_desktop("cinnamon", "lightdm"); + }, + "mate" => { + install_desktop("mate", "lightdm"); + }, + "xfce" => { + install_desktop("xfce", "lightdm"); + }, + "pantheon" => { + install_desktop("pantheon", "lightdm"); + }, + "enlightenment" => { + install_desktop("enlightenment", "lightdm"); + }, + + _ => { + println!("Unknown desktop setup"); + } + } + } +} + +fn install_desktop(de: &str, dm: &str) { + println!("Installing {}", de); + println!("Installing {}", dm); +} \ No newline at end of file diff --git a/src/installer/mod.rs b/src/installer/mod.rs new file mode 100755 index 0000000..e613d09 --- /dev/null +++ b/src/installer/mod.rs @@ -0,0 +1,4 @@ +pub mod partition; +pub mod network; +pub mod users; +pub mod desktops; \ No newline at end of file diff --git a/src/installer/network.rs b/src/installer/network.rs new file mode 100755 index 0000000..8c471b9 --- /dev/null +++ b/src/installer/network.rs @@ -0,0 +1,11 @@ +pub fn set_hostname(hostname: &str) { + println!("Setting hostname to {}", hostname); +} + +pub fn enable_ipv6(ipv6: bool) { + if ipv6 { + println!("enabling ipv6"); + } else { + println!("disabling ipv6"); + } +} \ No newline at end of file diff --git a/src/installer/partition.rs b/src/installer/partition.rs index 986e25f..451c2e2 100755 --- a/src/installer/partition.rs +++ b/src/installer/partition.rs @@ -1,8 +1,6 @@ -pub fn partition(root: &str, boot: &str, swap: &str, mode: &str, device: &str) { +pub fn partition(device: &str, mode: &str) { if mode == "manual" { - println!("Using {} as root partition", root); - println!("Using {} as boot partition", boot); - println!("Using {} as swap partition", swap); + println!("Manual partitioning"); } else { println!("automatically partitioning {}", device); } diff --git a/src/installer/users.rs b/src/installer/users.rs new file mode 100755 index 0000000..ed0f48a --- /dev/null +++ b/src/installer/users.rs @@ -0,0 +1,13 @@ +pub fn new_user(username: &str, hasroot: bool, password: &str) { + println!("Creating new user '{}'", username); + if hasroot { + println!("User '{}' will have root privileges", username); + } else { + println!("User '{}' will not have root privileges", username); + } + println!("Setting password for user '{}' to '{}'", username, password); +} + +pub fn root_pass(root_pass: &str) { + println!("Setting root password to '{}'", root_pass); +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 4fcc3c7..d2df6a3 100755 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,6 @@ +mod installer; + +use crate::installer::*; use clap::{App, Arg, SubCommand}; fn main() { @@ -10,20 +13,13 @@ fn main() { .arg( Arg::with_name("mode") .help("If jade should automatically partition (mode = auto) or the user manually partitioned it (mode = manual)") + .possible_values(&["auto", "manual"]) .required(true), ) .arg( - Arg::with_name("root") - .help("The root partition(mode = manual) or device to partition(mode = manual)") - .required(true), - ) - .arg( - Arg::with_name("boot") - .help("The boot partition to use (only read if mode is manual)") - ) - .arg( - Arg::with_name("swap") - .help("The swap partition to use (only read if mode is manual)") + Arg::with_name("device") + .help("The device to partition") + .required_if("mode", "auto"), ) ) .subcommand( @@ -55,11 +51,6 @@ fn main() { .help("The hostname to use") .required(true), ) - .arg( - Arg::with_name("wifi") - .help("If wifi is used (will launch nmtui if set to true)") - .required(true), - ) .arg( Arg::with_name("ipv6") .help("Wether ipv6 should be enabled") @@ -87,6 +78,7 @@ fn main() { .help("The password to set") .required(true), ) + ) .subcommand( SubCommand::with_name("rootPass") .about("Set the root password") @@ -96,7 +88,6 @@ fn main() { .required(true), ), ) - ), ) .subcommand( SubCommand::with_name("desktops") @@ -120,20 +111,7 @@ fn main() { if let Some(app) = app.subcommand_matches("partition") { - let mode = app.value_of("mode").unwrap(); - let root = app.value_of("root").unwrap_or("none"); - let boot = app.value_of("boot").unwrap_or(root); - let swap = app.value_of("swap").unwrap_or("none"); - let device = if app.value_of("mode").unwrap() == "auto" { - root - } else { - "none" - }; - println!("mode: {}", mode); - println!("root: {}", root); - println!("boot: {}", boot); - println!("swap: {}", swap); - println!("device: {}", device); + partition::partition(app.value_of("device").unwrap(), app.value_of("mode").unwrap()); } else if let Some(app) = app.subcommand_matches("locale") { let kbrlayout = app.value_of("keyboard").unwrap(); let timezn = app.value_of("timezone").unwrap(); @@ -142,31 +120,18 @@ fn main() { println!("timezone: {}", timezn); println!("locales: {:?}", locale); } else if let Some(app) = app.subcommand_matches("networking") { - let hostname = app.value_of("hostname").unwrap(); - let wifi = app.value_of("wifi").unwrap(); - let ipv6 = app.value_of("ipv6").unwrap(); - println!("hostname: {}", hostname); - println!("wifi: {}", wifi); - println!("ipv6: {}", ipv6); + network::enable_ipv6(app.value_of("ipv6").unwrap().parse::().unwrap()); + network::set_hostname(app.value_of("hostname").unwrap()) } else if let Some(app) = app.subcommand_matches("users") { if let Some(app) = app.subcommand_matches("newUser") { - let username = app.value_of("username").unwrap(); - let hasroot = app.value_of("hasroot").unwrap(); - let password = app.value_of("password").unwrap(); - println!("username: {}", username); - println!("hasroot: {}", hasroot); - println!("password: {}", password); + users::new_user(app.value_of("username").unwrap(), app.value_of("hasroot").unwrap().parse::().unwrap(), app.value_of("password").unwrap()); } else if let Some(app) = app.subcommand_matches("rootPass") { let rootpass = app.value_of("rootPass").unwrap(); println!("{}", rootpass); + users::root_pass(app.value_of("rootPass").unwrap()); } } else if let Some(app) = app.subcommand_matches("desktops") { - let desktopsetup = app.value_of("desktopsetup").unwrap(); - let de = app.value_of("de").unwrap_or("none"); - let dm = app.value_of("dm").unwrap_or("none"); - println!("desktopsetup: {}", desktopsetup); - println!("de: {}", de); - println!("dm: {}", dm); + desktops::choose_pkgs(app.value_of("desktopsetup").unwrap(), app.value_of("de").unwrap_or("none"), app.value_of("dm").unwrap_or("none")); } else { println!("Running TUI installer"); }