From c32994741c15ee49cc277a7d464a2697f264f031 Mon Sep 17 00:00:00 2001 From: amy Date: Sun, 30 Jan 2022 16:21:04 +0100 Subject: [PATCH] set everything according to config ( #7 ) --- src/internal/config.rs | 101 +++++++++++++++++++++++++++++++++++------ src/main.rs | 4 +- 2 files changed, 90 insertions(+), 15 deletions(-) diff --git a/src/internal/config.rs b/src/internal/config.rs index a84eea4..c2e3506 100755 --- a/src/internal/config.rs +++ b/src/internal/config.rs @@ -1,3 +1,5 @@ +use crate::functions::*; +use crate::internal::*; use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize)] @@ -46,38 +48,111 @@ struct Users { hasroot: bool, } -pub fn read_config() { - let data = - std::fs::read_to_string("example_config.json").expect("Unable to read example_config.json"); - let config: Config = serde_json::from_str(&data).expect("Unable to parse example_config.json"); - println!("---------Partition---------"); +pub fn read_config(configpath: &str) { + let data = std::fs::read_to_string(configpath); + match &data { + Ok(_) => { + log(format!( + "[ \x1b[2;1;32mOK\x1b[0m ] {}", + format!("Read config file {}", configpath).as_str() + )); + } + Err(e) => { + crash( + format!( + "{} ERROR: {}", + format!("Read config file {}", configpath).as_str(), + e + ), + e.raw_os_error().unwrap(), + ); + } + } + let config: std::result::Result = + serde_json::from_str(&data.unwrap()); + match &config { + Ok(_) => { + log(format!( + "[ \x1b[2;1;32mOK\x1b[0m ] {}", + format!("Parse config file {}", configpath).as_str() + )); + } + Err(e) => { + crash( + format!( + "{} ERROR: {}", + format!("Parse config file {}", configpath).as_str(), + e + ), + 1, + ); + } + } + let config: Config = config.unwrap(); + + println!("---------Setup Partitions---------"); println!("{}", config.partition.device); println!("{}", config.partition.mode); println!("{}", config.partition.efi); - println!("---------Bootloader---------"); + partition::partition( + config.partition.device.as_str(), + config.partition.mode.as_str(), + config.partition.efi, + ); + base::install_base_packages(); + base::genfstab(); + println!("---------Install Bootloader---------"); println!("{}", config.bootloader.r#type); println!("{}", config.bootloader.location); - println!("---------Locale---------"); + if config.bootloader.r#type == "grub-efi" { + base::install_bootloader_efi(config.bootloader.location.as_str()); + } else if config.bootloader.r#type == "grub-legacy" { + base::install_bootloader_legacy(config.bootloader.location.as_str()); + } + println!("---------Set Locale---------"); println!("{:?}", config.locale.locale); println!("{}", config.locale.keymap); println!("{}", config.locale.timezone); - println!("---------Networking---------"); + locale::set_locale(config.locale.locale.join(" ")); + locale::set_keyboard(config.locale.keymap.as_str()); + locale::set_timezone(config.locale.timezone.as_str()); + println!("---------Set Networking---------"); println!("{}", config.networking.hostname); println!("{}", config.networking.ipv6); - println!("---------Users---------"); + network::set_hostname(config.networking.hostname.as_str()); + network::create_hosts(); + if config.networking.ipv6 { + network::enable_ipv6(); + } + println!("---------Create Users---------"); println!("---------"); for i in 0..config.users.len() { println!("{}", config.users[i].name); println!("{}", config.users[i].password); println!("{}", config.users[i].hasroot); + users::new_user( + config.users[i].name.as_str(), + config.users[i].hasroot, + config.users[i].password.as_str(), + ); println!("---------"); } - println!("---------Rootpass---------"); + println!("---------Set Rootpass---------"); println!("{}", config.rootpass); - println!("---------Desktop---------"); + users::root_pass(config.rootpass.as_str()); + println!("---------Install Desktop---------"); println!("{}", config.desktop); - println!("---------Timeshift---------"); + desktops::choose_pkgs(config.desktop.as_str()); + println!("---------Setup Timeshift---------"); println!("{}", config.timeshift); - println!("---------Extra packages---------"); + if config.timeshift { + base::setup_timeshift(); + } + println!("---------Install Extra packages---------"); println!("{:?}", config.extra_packages); + let mut extra_packages: Vec<&str> = Vec::new(); + for i in 0..config.extra_packages.len() { + extra_packages.push(config.extra_packages[i].as_str()); + } + install(extra_packages); } diff --git a/src/main.rs b/src/main.rs index ea8083a..e98cc35 100755 --- a/src/main.rs +++ b/src/main.rs @@ -199,8 +199,8 @@ fn main() { base::genfstab(); } else if app.subcommand_matches("setup-timeshift").is_some() { base::setup_timeshift(); - } else if app.subcommand_matches("config").is_some() { - crate::internal::config::read_config(); + } else if let Some(app) = app.subcommand_matches("config") { + crate::internal::config::read_config(app.value_of("config").unwrap()); } else { println!("Running TUI installer"); }