diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2f7896d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +target/ diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..fa989b3 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "parch-tweaks" +version = "0.1.0" diff --git a/ptt b/ptt index 80a2534..4712a90 100755 --- a/ptt +++ b/ptt @@ -1,3 +1,3 @@ #!/bin/bash -python /usr/share/parchlinux/parchtweaks/ptt.py +/usr/share/parchlinux/parchtweaks/ptt diff --git a/ptt.py b/ptt.py deleted file mode 100644 index d382e5c..0000000 --- a/ptt.py +++ /dev/null @@ -1,101 +0,0 @@ -import os - -while True: - os.system("figlet 'Parch Linux tweak tool'") - print("Please select a section:") - print("1) Change Emoji package") - print("2) Libreoffice Installer") - print("3) Change Aur Helper") - print("4) Install Editor configs") - print("5) Exit") - - choice = input("Enter your choice: ") - - if choice == "1": - print("Please choose an action for emoji Packages:") - print("1) ios") - print("2) fluent (microsoft)") - emoji_choice = input("Enter your choice: ") - - if emoji_choice == "1": - os.system("sudo pacman -Rds fluent-emojies --noconfirm") - os.system("sudo pacman -Sy parch-emoji-ios --noconfirm") - elif emoji_choice == "2": - os.system("sudo pacman -Rds parch-emoji-ios --noconfirm") - os.system("sudo pacman -Sy fluent-emojies --noconfirm") - else: - print("Invalid choice.") - elif choice == "2": - os.system("sudo pacman -Sy libreoffice-fresh --noconfirm") - os.system("rm -rf ~/.config/libreoffice") - os.system("git clone https://github.com/parchlinux/libreoffice-config /tmp/libreoffice") - os.system("cp -r /tmp/libreoffice/libreoffice ~/.config") - elif choice == "3": - print("Please choose an action for aur helper:") - print("1) yay") - print("2) paru (default in parchlinux)") - aur = input("Enter your choice: ") - - if aur == "1": - os.system("sudo pacman -Rds paru --noconfirm") - os.system("sudo pacman -Sy yay --noconfirm") - elif aur == "2": - os.system("sudo pacman -Rds yay --noconfirm") - os.system("sudo pacman -Sy paru --noconfirm") - else: - print("Invalid choice.") - elif choice == "4": - print("Please choose an action for your editor configs:") - print("1) neovim") - print("2) emacs") - print("3) vim") - ediconf = input("Enter your choice: ") - - if ediconf == "1": - print("Please choose an action for your neovim config:") - print("1) nvchad") - print("2) nvpak") - print("3) lunarvim") - neoconf = input("Enter your choice: ") - - if neoconf == "1": - os.system("sudo pacman -S neovim git --noconfirm") - os.system("git clone https://github.com/NvChad/NvChad ~/.config/nvim --depth 1") - print("now you can run neovim by typing: nvim") - elif neoconf == "2": - os.system("sudo pacman -S neovim git --noconfirm") - os.system("git clone --depth 1 https://github.com/Pakrohk-DotFiles/NvPak.git ~/.config/nvim") - print("now you can run neovim by typing: nvim") - elif neoconf == "3": - os.system("sudo pacman -S neovim git --noconfirm") - os.system("LV_BRANCH='release-1.3/neovim-0.9' bash <(curl -s https://raw.githubusercontent.com/LunarVim/LunarVim/release-1.3/neovim-0.9/utils/installer/install.sh)") - else: - print("Invalid choice.") - elif ediconf == "2": - print("Please choose an action for your editor configs:") - print("1) Doom emacs") - print("2) Spacemacs") - emacconf = input("Enter your choice: ") - - if emacconf == "1": - os.system("sudo pacman -S emacs git --noconfirm") - os.system("git clone --depth 1 https://github.com/doomemacs/doomemacs ~/.config/emacs") - print("dont forgot to add ~/.config/emacs/bin to your path.") - print("after adding to path, re run your terminal and type doom install.") - elif emacconf == "2": - os.system("sudo pacman -S emacs git --noconfirm") - os.system("git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d") - print("now you can now open emacs for changes to take effect.") - else: - print("Invalid choice.") - elif ediconf == "3": - print("soon.....") - else: - print("Invalid choice.") - elif choice == "5": - exit(0) - else: - print("Invalid choice.") - - print(f"Done with section {choice}.") - diff --git a/src/main.rs b/src/main.rs index f9efc2e..0c802be 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,124 +1,239 @@ -use std::{process::{Command, self}, io}; -fn execute_command(command:&str , args:Vec<&str>){ - Command::new(command) - .args(args) - .output() - .expect("failed to execute the process"); +use std::{ + io, + io::Write, + process::{self, Command}, +}; + +const INVALID_CHOICE: &str = "Invalid choice."; +const PLEASE_CHOOSE: &str = "Please choose an action for"; + +fn execute_command(command: &str, args: Vec<&str>) { + let output = Command::new(command) + .args(args) + .output() + .expect("failed to execute the process"); + + if output.status.success() { + io::stdout().write_all(&output.stdout).unwrap(); + } else { + io::stdout().write_all(&output.stderr).unwrap(); + } } -fn get_inputed(print:&str)->String{ - println!("{}",print); + +fn get_choice() -> String { + println!("Enter your choice: "); + let mut input = String::new(); - io::stdin().read_line(&mut input).unwrap_or_else(|_|{process::exit(1)}); - return input.to_owned() + io::stdin() + .read_line(&mut input) + .unwrap_or_else(|_| process::exit(1)); + + input.trim().to_owned() } + +fn install_emoji_packages() { + println!("{PLEASE_CHOOSE} emoji Packages:\n\ + 1) ios\n\ + 2) fluent (microsoft)"); + + let emoji_choice = get_choice(); + match emoji_choice.as_str() { + "1" => { + execute_command( + "sudo", + vec!["pacman", "-Rds", "fluent-emojies", "--noconfirm"], + ); + execute_command( + "sudo", + vec!["pacman", "-Sy", "parch-emoji-ios", "--noconfirm"], + ); + } + "2" => { + execute_command( + "sudo", + vec!["pacman", "-Rds", "parch-emoji-ios", "--noconfirm"], + ); + execute_command( + "sudo", + vec!["pacman", "-Sy", "fluent-emojies", "--noconfirm"], + ); + } + _ => println!("{INVALID_CHOICE}"), + } +} + +fn install_libreoffice() { + execute_command( + "sudo", + vec!["pacman", "-Sy", "libreoffice-fresh", "--noconfirm"], + ); + execute_command("rm", vec!["-rf", "~/.config/liberoffice"]); + execute_command( + "git", + vec![ + "clone", + "https://github.com/parchlinux/libreoffice-config", + "/tmp/liberoffice", + ], + ); + execute_command( + "cp", + vec!["-r", "/tmp/liberoffice/liberoffice", "~/.config"], + ) +} + +fn change_aur_helper() { + println!("{PLEASE_CHOOSE} aur helper:\n\ + 1) yay\n\ + 2) paru (default in parchlinux"); + + let aur = get_choice(); + match aur.as_str() { + "1" => { + execute_command("sudo", vec!["pacman", "-Rds", "paru", "--noconfirm"]); + execute_command("sudo", vec!["pacman", "-Sy", "yay", "--noconfirm"]); + } + "2" => { + execute_command("sudo", vec!["pacman", "-Rds", "yay", "--noconfirm"]); + execute_command("sudo", vec!["pacman", "-Sy", "paru", "--noconfirm"]); + } + _ => println!("{INVALID_CHOICE}"), + } +} + +mod install_neovim_config { + use super::*; + + pub fn nvchad() { + execute_command("sudo", vec!["pacman", "-S", "neovim", "git", "--noconfirm"]); + execute_command( + "git", + vec![ + "clone", + "https://github.com/NvChad/NvChad", + "~/.config/nvim", + "--depth", + "1", + ], + ); + println!("now you can run neovim by typing: nvim") + } + + pub fn nvpack() { + execute_command("sudo", vec!["pacman", "-S", "neovim", "git", "--noconfirm"]); + execute_command( + "git", + vec![ + "clone", + "--depth", + "1", + "https://github.com/Pakrohk-DotFiles/NvPak.git", + " ~/.config/nvim", + ], + ); + println!("now you can run neovim by typing: nvim"); + } + + pub fn lunarvim() { + execute_command("sudo", vec!["pacman", "-S", "neovim", "git", "--noconfirm"]); + execute_command( + "LV_BRANCH='release-1.3/neovim-0.9'", + vec!["bash", "<(curl", "-s", + "https://raw.githubusercontent.com/LunarVim/LunarVim/release-1.3/neovim-0.9/utils/installer/install.sh)"] + ); + } +} + +mod install_emacs_config { + use super::*; + + pub fn doomemacs() { + execute_command("sudo", vec!["pacman", "-S", "emacs", "git", "--noconfirm"]); + execute_command( + "git", + vec![ + "clone", + "--depth", + "1", + "https://github.com/doomemacs/doomemacs", + "~/.config/emacs", + ], + ); + println!("dont forgot to add ~/.config/emacs/bin to your path."); + println!("after adding to path, re run your terminal and type doom install."); + } + + pub fn spacemacs() { + execute_command("sudo", vec!["pacman", "-S", "emacs", "git", "--noconfirm"]); + execute_command( + "git", + vec![ + "clone", + "https://github.com/syl20bnr/spacemacs", + "~/.emacs.d", + ], + ); + println!("now you can now open emacs for changes to take effect."); + } +} + +fn install_editor_configs() { + println!("{PLEASE_CHOOSE} your editor configs:\n\ + 1) neovim\n\ + 2) emacs\n\ + 3) vim"); + + let ediconf = get_choice(); + match ediconf.as_str() { + "1" => { + println!("{PLEASE_CHOOSE} your neovim config:\n\ + 1) nvchad\n\ + 2) nvpak\n\ + 3) lunarvim"); + + let neoconf = get_choice(); + match neoconf.as_str() { + "1" => install_neovim_config::nvchad(), + "2" => install_neovim_config::nvpack(), + "3" => install_neovim_config::lunarvim(), + _ => println!("{INVALID_CHOICE}"), + } + } + "2" => { + println!("{PLEASE_CHOOSE} your editor configs:\n\ + 1) DoomEmacs\n\ + 2) Spacemacs"); + + let emacconf = get_choice(); + match emacconf.as_str() { + "1" => install_emacs_config::doomemacs(), + "2" => install_emacs_config::spacemacs(), + _ => println!("{INVALID_CHOICE}"), + } + } + "3" => println!("Soon..."), + _ => println!("{INVALID_CHOICE}"), + } +} + fn main() { execute_command("figlet", vec!["Parch Linux tweak tool"]); - println!("Please select a section:"); - println!("1) Change Emoji package"); - println!("2) Libreoffice Installer"); - println!("3) Change Aur Helper"); - println!("4) Install Editor configs"); - println!("5) Exit"); - let choice = get_inputed("Enter your choice: "); - match choice.as_str(){ - "1"=>{ - println!("Please choose an action for emoji Packages:"); - println!("1) ios"); - println!("2) fluent (microsoft)"); - let emoji_choice = get_inputed("Enter your choice:"); - match emoji_choice.as_str() { - "1"=>{execute_command("sudo", vec!["pacman","-Rds","fluent-emojies","--noconfirm"]); - execute_command("sudo", vec!["pacman","-Sy","parch-emoji-ios","--noconfirm"]); - } - "2"=>{execute_command("sudo", vec!["pacman","-Rds","parch-emoji-ios","--noconfirm"]); - execute_command("sudo", vec!["pacman","-Sy","fluent-emojies","--noconfirm"]); - } - &_=>println!("Invalid choice.") - } - }, - "2"=>{ - execute_command("sudo", vec!["pacman","-Sy","libreoffice-fresh","--noconfirm"]); - execute_command("rm", vec!["-rf","~/.config/liberoffice"]); - execute_command("git", vec!["clone","https://github.com/parchlinux/libreoffice-config","/tmp/liberoffice"]); - execute_command("cp", vec!["-r","/tmp/liberoffice/liberoffice","~/.config"]) - } - "3"=>{ - println!("Please choose an action for aur helper:"); - println!("1) yay"); - println!("2) paru (default in parchlinux)"); - let aur = get_inputed("Enter your choice:"); - match aur.as_str() { - "1"=>{ - execute_command("sudo", vec!["pacman","-Rds","paru","--noconfirm"]); - execute_command("sudo", vec!["pacman","-Sy","yay","--noconfirm"]); - }, - "2"=>{ - execute_command("sudo", vec!["pacman","-Rds","yay","--noconfirm"]); - execute_command("sudo", vec!["pacman","-Sy","paru","--noconfirm"]); - } - &_=>println!("Invalid choice.") - } - }, - "4"=>{ - println!("Please choose an action for your editor configs:"); - println!("1) neovim"); - println!("2) emacs"); - println!("3) vim"); - let ediconf = get_inputed("Enter your choice: "); - match ediconf.as_str(){ - "1"=>{ - println!("Please choose an action for your neovim config:"); - println!("1) nvchad"); - println!("2) nvpak"); - println!("3) lunarvim"); - let neoconf = get_inputed("Enter your choice:"); - match neoconf.as_str(){ - "1"=>{ - execute_command("sudo", vec!["pacman","-S","neovim","git","--noconfirm"]); - execute_command("git", vec!["clone","https://github.com/NvChad/NvChad","~/.config/nvim","--depth","1"]); - println!("now you can run neovim by typing: nvim") - } - "2"=>{ - execute_command("sudo", vec!["pacman","-S","neovim","git","--noconfirm"]); - execute_command("git", vec!["clone", "--depth", "1", "https://github.com/Pakrohk-DotFiles/NvPak.git"," ~/.config/nvim"]); - println!("now you can run neovim by typing: nvim"); - } - "3"=>{ - execute_command("sudo", vec!["pacman","-S","neovim","git","--noconfirm"]); - execute_command("LV_BRANCH='release-1.3/neovim-0.9'", vec!["bash","<(curl","-s","https://raw.githubusercontent.com/LunarVim/LunarVim/release-1.3/neovim-0.9/utils/installer/install.sh)"]); - } - &_=>println!("Invalid choice.") - } - } - "2"=>{ - println!("Please choose an action for your editor configs:"); - println!("1) Dooedm emacs"); - println!("2) Spaedcemacs"); - let emacconf = get_inputed("Enter your choice: "); - match emacconf.as_str(){ - "1"=>{ - execute_command("sudo",vec!["pacman","-S","emacs","git","--noconfirm"]); - execute_command("git",vec!["clone","--depth","1","https://github.com/doomemacs/doomemacs","~/.config/emacs"]); - println!("dont forgot to add ~/.config/emacs/bin to your path."); - println!("after adding to path, re run your terminal and type doom install."); - }, - "2"=>{ - execute_command("sudo",vec!["pacman","-S","emacs","git","--noconfirm"]); - execute_command("git",vec!["clone","https://github.com/syl20bnr/spacemacs","~/.emacs.d"]); - println!("now you can now open emacs for changes to take effect."); - } - "3"=>{ - println!("soon..."); - } - &_=>println!("Invalid choice.") - } - } - &_=>println!("Invalid choice.") - } - } - "5"=>process::exit(0), - &_=>{println!("invalid choice")} + println!("Please select a section:\n\ + 1) Change Emoji package\n\ + 2) Install Libreoffice\n\ + 3) Change Aur Helper\n\ + 4) Install Editor configs\n\ + 5) Exit"); + + let choice = get_choice(); + match choice.as_str() { + "1" => install_emoji_packages(), + "2" => install_libreoffice(), + "3" => change_aur_helper(), + "4" => install_editor_configs(), + "5" => process::exit(0), + _ => println!("{INVALID_CHOICE}"), } - println!("done with section {}.",choice); + println!("done with section {}.", choice); }