summaryrefslogtreecommitdiff
path: root/src/birka-cli.rs
diff options
context:
space:
mode:
authorJakob L. Kreuze <zerodaysfordays@sdf.org>2020-06-19 18:54:38 -0400
committerJakob L. Kreuze <zerodaysfordays@sdf.org>2020-06-19 18:54:38 -0400
commit14994e26df072a6d154c053d7c8c3c80273a4d7b (patch)
tree29bb248ba6930c05194bed69df3eb6b29206f88d /src/birka-cli.rs
parente8020d1ec67c3f6e2e645ba80039d30db45950a9 (diff)
Change how birka-cli finds the tag database.
There are now two options for specifying a path, in order of precedence: * `-o`, or `--output` command-line arguments. * The `TB_PATH` environment variable.
Diffstat (limited to 'src/birka-cli.rs')
-rw-r--r--src/birka-cli.rs22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/birka-cli.rs b/src/birka-cli.rs
index 484d2ed..8396ef4 100644
--- a/src/birka-cli.rs
+++ b/src/birka-cli.rs
@@ -28,9 +28,12 @@ use std::env;
use std::path::Path;
fn main() {
- let args: Vec<String> = env::args().collect();
+ let mut args: Vec<String> = env::args().collect();
if args.len() < 2 || args.iter().any(|arg| arg == "-h" || arg == "--help") {
println!("usage: {} ACTION [ARGS ...]", args[0]);
+ println!();
+ println!("\t-o, --output [PATH]: Path to the tag database.");
+ println!();
println!("\tACTION: add [PATH] [TAGS ...]: index an image, optionally tagged.");
println!("\tACTION: add_tags [PATH] [TAGS ...]: add tags to an indexed image.");
println!("\tACTION: remove_tags [PATH] [TAGS ...]: remove tags from an indexed image.");
@@ -38,12 +41,19 @@ fn main() {
std::process::exit(1);
}
- let tb = if let Ok(val) = env::var("TB_PATH") {
- TagDatabase::new(&val)
- } else if let Some(dir) = dirs::config_dir() {
- TagDatabase::new(&dir.join("birka.db"))
+ let tb = if let Some(i) = args.iter().position(|x| x == "-o" || x == "--output") {
+ // Ensure that a path follows the "-o" argument.
+ if i + 1 >= args.len() {
+ eprintln!("{} requires an argument", args[i]);
+ std::process::exit(1);
+ }
+
+ args.remove(i);
+ TagDatabase::new(args.remove(i + 1))
+ } else if let Ok(path) = std::env::var("TB_PATH") {
+ TagDatabase::new(path)
} else {
- TagDatabase::new(&Path::new("/tmp").join("birka.db"))
+ TagDatabase::new("./birka.db")
}
.unwrap();