diff --git a/README.md b/README.md index fce4c72..2e01087 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,12 @@ Package Manager with a Built in CLI Tool Server Accepts Package Management such as: Uploading, Updating, Deleting -Client Commands: + - "read_all_packages" - "read_package" - "install_package" - "delete_package" - "list_installed_packages" - "update_package" - "update_all_packages" + + +> rust-package-manager --help + + + + diff --git a/assets/examples.png b/assets/examples.png new file mode 100644 index 0000000..53e81d9 Binary files /dev/null and b/assets/examples.png differ diff --git a/assets/help.png b/assets/help.png new file mode 100644 index 0000000..72ecc0d Binary files /dev/null and b/assets/help.png differ diff --git a/client/src/user.rs b/client/src/user.rs index 26d58fb..fb636ba 100644 --- a/client/src/user.rs +++ b/client/src/user.rs @@ -1,4 +1,4 @@ -use std::env; +use std::{env, process::exit}; use crate::file::calculate_hash; @@ -9,79 +9,105 @@ fn env_collector() -> Vec { } pub async fn user_interaction() { + println!("\n\n----------------------------------"); let env_values = env_collector(); - for (i, env_value) in env_values.iter().enumerate() { - match env_value.as_str() { - "read_all_packages" => { - read_all_packages().await; - return; - } - "read_package" => { - let package_name = match env_values.get(i + 1) { - Some(package_name) => package_name, - None => { - eprintln!("Length is not enough"); - return; - } - }; - read_package(package_name).await; - return; - } - "install_package" => { - let package_name = match env_values.get(i + 1) { - Some(package_name) => package_name, - None => { - eprintln!("Length is not enough"); - return; - } - }; - install_package_with_dependencies(package_name).await; - return; - } - "delete_package" => { - let package_name = match env_values.get(i + 1) { - Some(package_name) => package_name, - None => { - eprintln!("Length is not enough"); - return; - } - }; - delete_package(package_name).await; - return; - } - "list_installed_packages" => { - list_installed_packages().await; - return; - } - "update_package" => { - let package_name = match env_values.get(i + 1) { - Some(package_name) => package_name, - None => { - eprintln!("Length is not enough"); - return; - } - }; - update_package(package_name).await; - return; - } - "update_all_packages" => { - update_all_packages().await; - return; - } - _ => { - eprintln!("Need an Argument"); - return; - } + + match env_values.get(0).unwrap_or_else(|| exit(0)).as_str() { + "read_all_packages" => { + read_all_packages().await; + return; + } + "read_package" => { + let package_name = match env_values.get(1) { + Some(package_name) => package_name, + None => { + eprintln!("Length is not enough"); + return; + } + }; + read_package(package_name).await; + return; + } + "install_package" => { + let package_name = match env_values.get(1) { + Some(package_name) => package_name, + None => { + eprintln!("Length is not enough"); + return; + } + }; + install_package_with_dependencies(package_name).await; + return; + } + "delete_package" => { + let package_name = match env_values.get(1) { + Some(package_name) => package_name, + None => { + eprintln!("Length is not enough"); + return; + } + }; + delete_package(package_name).await; + return; + } + "list_installed_packages" => { + list_installed_packages().await; + return; + } + "update_package" => { + let package_name = match env_values.get(1) { + Some(package_name) => package_name, + None => { + eprintln!("Length is not enough"); + return; + } + }; + update_package(package_name).await; + return; + } + "update_all_packages" => { + update_all_packages().await; + return; + } + "help" => { + help().await; + return; + } + "--help" => { + help().await; + return; + } + _ => { + eprintln!("Need an Argument"); + return; } } } +async fn help() { + println!("\n\n\n"); + println!(" Arguments | Details"); + println!("---------------------------------------------------------------------------------------------"); + println!(" read_all_packages | Shows Details of All Packages from Server"); + println!(" read_package package_name | Shows Details of a Package in from Server "); + println!( + " install_package package_name | Installs a Package from Server with Dependencies " + ); + println!(" delete_package package_name | Deletes an Installed Package from System"); + println!(" list_installed_packages | Shows All Installed Packages"); + println!(" update_package package_name | Updates an Installed Package"); + println!(" update_all_packages | Updates All Installed Packages "); + println!(" help | Shows Help"); + println!(" --help | Shows Help"); + println!("\n\n\n"); +} + async fn read_all_packages() { let packages = crate::request::read_all_packages().await; match packages { Ok(packages) => { for package in packages { - println!("{}", package.get_name()); + println!("{}", package.get_name(),); } } Err(err_val) => eprintln!("Error: Read All Packages | {}", err_val),