88 lines
2.6 KiB
Rust
88 lines
2.6 KiB
Rust
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"))
|
|
.arg(Arg::with_name("new-store")
|
|
.short("s")
|
|
.long("new-store")
|
|
.value_name("filename")
|
|
.help("Creates a new file store with the appropriatte structures"))
|
|
.get_matches();
|
|
|
|
if let Some(filename) = matches.value_of("new-store") {
|
|
println!("Creating new store {}", filename);
|
|
create_new_store(filename.to_string());
|
|
}
|
|
|
|
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 create_new_store(filename: String) {
|
|
match DB::new_store(filename) {
|
|
Ok(_) => println!("Store created"),
|
|
Err(e) => eprintln!("Error: {}", e)
|
|
}
|
|
}
|
|
|
|
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);
|
|
}
|
|
|