deserializing envvar and stuff
This commit is contained in:
64
src/main.rs
64
src/main.rs
@@ -1,3 +1,65 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::Value;
|
||||
use std::{env, fs, path::Path, process};
|
||||
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
let mut args = env::args();
|
||||
let _binary = args.next();
|
||||
|
||||
while let Some(arg) = args.next() {
|
||||
match arg.as_str() {
|
||||
"add" => add(&mut args),
|
||||
_other => println!("needs parameters"),
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
fn deserialize_var() -> Library {
|
||||
let key = "HOME";
|
||||
let content: Library = match env::var(key) {
|
||||
Ok(val) => match serde_json::from_str(&val) {
|
||||
Ok(library) => library,
|
||||
Err(..) => initialize_library(),
|
||||
},
|
||||
Err(..) => initialize_library(),
|
||||
};
|
||||
return content;
|
||||
}
|
||||
|
||||
fn initialize_library() -> Library {
|
||||
let default_shelf: Shelf = Shelf {
|
||||
id: 0,
|
||||
name: "default".to_string(),
|
||||
content: Vec::new(),
|
||||
};
|
||||
|
||||
let mut shelf_vec: Vec<Shelf> = Vec::new();
|
||||
shelf_vec.push(default_shelf);
|
||||
let default_library: Library = Library {
|
||||
current_shelf: 0,
|
||||
shelves: shelf_vec,
|
||||
};
|
||||
return default_library;
|
||||
}
|
||||
|
||||
fn add(args: &mut env::Args) {
|
||||
for file in args {
|
||||
println!("Adding {}", &file);
|
||||
let file_path = Path::new(&file);
|
||||
}
|
||||
process::exit(0)
|
||||
}
|
||||
|
||||
#[derive(Default, Deserialize, Serialize)]
|
||||
struct Library {
|
||||
current_shelf: u16,
|
||||
shelves: Vec<Shelf>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Serialize)]
|
||||
struct Shelf {
|
||||
id: u64,
|
||||
name: String,
|
||||
content: Vec<String>,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user