Merge branch 'imag-bookmark-cli' into master

This commit is contained in:
Matthias Beyer 2019-05-18 12:36:08 +02:00
commit 55a7c268d7
3 changed files with 18 additions and 14 deletions

View file

@ -30,6 +30,7 @@ failure = "0.1"
libimagrt = { version = "0.10.0", path = "../../../lib/core/libimagrt" } libimagrt = { version = "0.10.0", path = "../../../lib/core/libimagrt" }
libimagerror = { version = "0.10.0", path = "../../../lib/core/libimagerror" } libimagerror = { version = "0.10.0", path = "../../../lib/core/libimagerror" }
libimagbookmark = { version = "0.10.0", path = "../../../lib/domain/libimagbookmark" } libimagbookmark = { version = "0.10.0", path = "../../../lib/domain/libimagbookmark" }
libimagentrylink = { version = "0.10.0", path = "../../../lib/entry/libimagentrylink" }
libimagutil = { version = "0.10.0", path = "../../../lib/etc/libimagutil" } libimagutil = { version = "0.10.0", path = "../../../lib/etc/libimagutil" }
[dependencies.clap] [dependencies.clap]

View file

@ -44,6 +44,7 @@ extern crate libimagbookmark;
#[macro_use] extern crate libimagrt; #[macro_use] extern crate libimagrt;
extern crate libimagerror; extern crate libimagerror;
extern crate libimagutil; extern crate libimagutil;
extern crate libimagentrylink;
use std::io::Write; use std::io::Write;
use std::process::exit; use std::process::exit;
@ -60,6 +61,8 @@ use libimagerror::trace::{MapErrTrace, trace_error};
use libimagerror::io::ToExitCode; use libimagerror::io::ToExitCode;
use libimagerror::exit::ExitUnwrap; use libimagerror::exit::ExitUnwrap;
use libimagutil::debug_result::DebugResult; use libimagutil::debug_result::DebugResult;
use libimagentrylink::internal::InternalLinker;
mod ui; mod ui;
@ -130,6 +133,16 @@ fn collection(rt: &Runtime) {
if scmd.is_present("remove") { // remove a collection if scmd.is_present("remove") { // remove a collection
let name = scmd.value_of("remove").unwrap(); let name = scmd.value_of("remove").unwrap();
{ // remove all links
let _ = BookmarkCollectionStore::get(rt.store(), &name)
.map_err_trace_exit_unwrap()
.ok_or_else(|| format_err!("Collection does not exist: {}", name))
.map_err_trace_exit_unwrap()
.unlink(rt.store())
.map_err_trace_exit_unwrap();
}
if let Ok(_) = BookmarkCollectionStore::delete(rt.store(), &name) { if let Ok(_) = BookmarkCollectionStore::delete(rt.store(), &name) {
info!("Deleted: {}", name); info!("Deleted: {}", name);
} else { } else {

View file

@ -35,14 +35,13 @@ pub fn build_ui<'a>(app: App<'a, 'a>) -> App<'a, 'a> {
.value_name("COLLECTION") .value_name("COLLECTION")
.help("Add to this collection, if not specified default from config will be used")) .help("Add to this collection, if not specified default from config will be used"))
.arg(Arg::with_name("urls") .arg(Arg::with_name("urls")
.long("urls") .index(1)
.short("u")
.takes_value(true) .takes_value(true)
.required(true) .required(true)
.multiple(true) .multiple(true)
.value_name("URL") .value_name("URL")
.validator(is_url) .validator(is_url)
.help("Add this URL, multiple possible")) .help("Add this URL(s)"))
) )
.subcommand(SubCommand::with_name("remove") .subcommand(SubCommand::with_name("remove")
@ -57,14 +56,13 @@ pub fn build_ui<'a>(app: App<'a, 'a>) -> App<'a, 'a> {
.value_name("COLLECTION") .value_name("COLLECTION")
.help("Remove from this collection, if not specified default from config will be used")) .help("Remove from this collection, if not specified default from config will be used"))
.arg(Arg::with_name("urls") .arg(Arg::with_name("urls")
.long("urls") .index(1)
.short("u")
.takes_value(true) .takes_value(true)
.required(true) .required(true)
.multiple(true) .multiple(true)
.value_name("URL") .value_name("URL")
.validator(is_url) .validator(is_url)
.help("Remove these urls, regex supported")) .help("Remove this url(s)"))
) )
// .subcommand(SubCommand::with_name("open") // .subcommand(SubCommand::with_name("open")
@ -91,14 +89,6 @@ pub fn build_ui<'a>(app: App<'a, 'a>) -> App<'a, 'a> {
.multiple(false) .multiple(false)
.value_name("COLLECTION") .value_name("COLLECTION")
.help("Select from this collection, if not specified default from config will be used")) .help("Select from this collection, if not specified default from config will be used"))
.arg(Arg::with_name("tags")
.long("tags")
.short("t")
.takes_value(true)
.required(false)
.multiple(true)
.value_name("TAGS")
.help("Filter links to contain these tags. When multiple tags are specified, all of them must be set for the link to match."))
) )
.subcommand(SubCommand::with_name("collection") .subcommand(SubCommand::with_name("collection")