works now, but doesnt like when i use "table." syntax
This commit is contained in:
parent
a8a1284ae1
commit
f4f972c5d6
45
src/main.rs
45
src/main.rs
@ -17,27 +17,54 @@
|
|||||||
|
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
|
use std::io;
|
||||||
use std::io::Read;
|
use std::io::Read;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
use std::process;
|
||||||
|
|
||||||
use toml::Value;
|
use toml::Value;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let arguments: Vec<String> = env::args().collect();
|
let mut arguments: Vec<String> = env::args().collect();
|
||||||
let argv0 = &arguments[0];
|
let argv0 = arguments.remove(0);
|
||||||
let input = &arguments[2];
|
let input = &arguments[1];
|
||||||
let mut content = String::new();
|
let mut content = String::new();
|
||||||
|
|
||||||
let file = Path::new(&input);
|
let mut file = Path::new(&input);
|
||||||
if file.is_file() {
|
if file.is_file() {
|
||||||
File::open(file).expect("").read_to_string(&mut content).unwrap();
|
File::open(file).unwrap().read_to_string(&mut content).unwrap();
|
||||||
} else { content = input.to_string(); }
|
} else { content = input.to_string(); }
|
||||||
|
|
||||||
let keyval: Vec<&str> = arguments[1].split(".").collect();
|
let keyval: Vec<&str> = arguments[0].split(".").collect();
|
||||||
let toml = content.parse::<Value>().unwrap();
|
let toml = content.parse::<Value>().unwrap();
|
||||||
|
|
||||||
match toml.get(keyval[1]) {
|
let mut table = &toml;
|
||||||
Some(value) => println!("{}", value),
|
if ! keyval[0].is_empty() {
|
||||||
None => println!("{}: {}: No such table or key.", argv0, arguments[1]),
|
match toml.get(keyval[0]) {
|
||||||
|
Some(table) => {
|
||||||
|
if keyval[1].is_empty() {
|
||||||
|
println!("{}", table.as_str().unwrap());
|
||||||
|
} else {
|
||||||
|
match table.get(keyval[1]) {
|
||||||
|
Some(value) => {
|
||||||
|
let out = value
|
||||||
|
.as_str()
|
||||||
|
.unwrap()
|
||||||
|
.trim_start_matches('"')
|
||||||
|
.trim_end_matches('"');
|
||||||
|
println!("{}", out);
|
||||||
|
},
|
||||||
|
None => {
|
||||||
|
eprintln!("{}: {}: No such key.", argv0, keyval[1]);
|
||||||
|
process::exit(1);
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
},
|
||||||
|
None => {
|
||||||
|
eprintln!("{}: {}: No such table.", argv0, keyval[0]);
|
||||||
|
process::exit(1);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user