From 2c83afa4fe366eda37c99e9e1e23ba651ea20e1e Mon Sep 17 00:00:00 2001 From: usernameswift Date: Wed, 3 Aug 2022 17:53:30 -0400 Subject: [PATCH] Reworked the shell choosing --- src/functions/users.rs | 68 +++++++++++++----------------------------- 1 file changed, 21 insertions(+), 47 deletions(-) diff --git a/src/functions/users.rs b/src/functions/users.rs index 4d3b194..cf8c325 100755 --- a/src/functions/users.rs +++ b/src/functions/users.rs @@ -3,7 +3,7 @@ use crate::internal::*; use std::process::Command; pub fn new_user(username: &str, hasroot: bool, password: &str, do_hash_pass: bool, shell: &str) { - let mut shell: &str = shell; + let shell: &str = shell; if do_hash_pass { let hashed_pass = &*hash_pass(password).stdout; let _password = match std::str::from_utf8(hashed_pass) { @@ -11,51 +11,25 @@ pub fn new_user(username: &str, hasroot: bool, password: &str, do_hash_pass: boo Err(e) => panic!("Failed to hash password, invalid UTF-8 sequence {}", e), }; } - if shell == "fish" { - exec_eval( - exec_chroot( - "bash", - vec![ - String::from("pacman -S fish --noconfirm"), - ], - ), - "installed fish", - ); - } - if shell == "zsh" { - exec_eval( - exec_chroot( - "bash", - vec![ - String::from("pacman -S zsh --noconfirm"), - ], - ), - "installed zsh", - ); - } - else if shell == "tcsh" || shell == "csh" { - exec_eval( - exec_chroot( - "bash", - vec![ - String::from("pacman -S tcsh --noconfirm"), - ], - ), - "installed tcsh and csh", - ); - } - else { - exec_eval( - exec_chroot( - "bash", - vec![ - String::from("pacman -S fish --noconfirm"), - ], - ), - "no shell or unknown shell specified, installed fish", - ); - shell = "fish"; - } + let shell_to_install = match shell { + "bash" => "bash", + "csh" => "tcsh", + "fish" => "fish", + "tcsh" => "tcsh", + "zsh" => "zsh", + &_ => "bash", + }; + exec_eval( + exec_chroot( + "bash", + vec![ + String::from("pacman -S "), + String::from(shell_to_install), + String::from("--noconfirm"), + ], + ), + format!("installed {shell:?}").as_str(), + ); let shell_path = match shell { "bash" => "/bin/bash", "csh" => "/usr/bin/csh", @@ -103,7 +77,7 @@ pub fn new_user(username: &str, hasroot: bool, password: &str, do_hash_pass: boo pub fn hash_pass(password: &str) -> std::process::Output { let output = Command::new("openssl") - .args(["passwd", "-6", password]) + .args(["passwd", "-1", password]) .output() .expect("Failed to hash password"); output