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),