+ CLI Tool for clippable

! Not yet tested however there really isn't much code to test at all
This commit is contained in:
shockrah
2021-09-06 21:28:28 -07:00
parent 9f9f61d968
commit 42924e8419
2 changed files with 84 additions and 0 deletions

69
clippable-cli/src/main.rs Normal file
View File

@@ -0,0 +1,69 @@
use clap::{App, Arg, AppSettings};
use dblib::DB;
const DEFAULT_STORAGE: &'static str = "store.json";
fn main() {
let matches = App::new("clippable-cli")
.version("0.1")
.author("shockrah")
.about("CLI Tool for clippable")
.setting(AppSettings::ArgRequiredElseHelp)
.arg(Arg::with_name("generate-key")
.short("g")
.long("generate-key")
.value_name("NAME")
.help("Generates a new API key to allow usage in this server"))
.arg(Arg::with_name("remove-key")
.short("r")
.long("remove-key")
.value_name("NAME")
.help("Removes a key based on the given name"))
.arg(Arg::with_name("update-key")
.short("u")
.long("update-key")
.value_name("NAME")
.help("Generate a new key for that user identified by NAME"))
.get_matches();
if let Some(name) = matches.value_of("generate-key") {
println!("Genating key for {}", name);
generate_key(String::from(name));
}
if let Some(name) = matches.value_of("remove-key") {
println!("Removing key for {}", name);
remove_key(String::from(name));
}
if let Some(name) = matches.value_of("update-key") {
println!("Updating key for {}", name);
update_key(String::from(name));
}
}
fn generate_key(name: String) {
match DB::new_entry(String::from(DEFAULT_STORAGE), name.clone()) {
Ok(key) => println!("Key for {}\t{}", name, key),
Err(e) => eprintln!("Error: {}", e)
}
}
fn remove_key(name: String) {
match DB::remove_entry(String::from(DEFAULT_STORAGE), name.clone()) {
Ok(removed) => {
match removed {
true => println!("Removed key for {}", name),
false => println!("Warning: unable to remove key for {}", name)
};
},
Err(e) => eprintln!("Error removing key: {}", e)
}
}
fn update_key(name: String) {
remove_key(name.clone());
generate_key(name);
}