diff --git a/bin/domain/imag-wiki/Cargo.toml b/bin/domain/imag-wiki/Cargo.toml index 1a0fe67f..dfa43da3 100644 --- a/bin/domain/imag-wiki/Cargo.toml +++ b/bin/domain/imag-wiki/Cargo.toml @@ -24,6 +24,7 @@ is-match = "0.1" version = "2.0.1" libimagentryedit = { version = "0.7.0", path = "../../../lib/entry/libimagentryedit" } +libimagentrylink = { version = "0.7.0", path = "../../../lib/entry/libimagentrylink" } libimagentrymarkdown = { version = "0.7.0", path = "../../../lib/entry/libimagentrymarkdown" } libimagerror = { version = "0.7.0", path = "../../../lib/core/libimagerror" } libimagrt = { version = "0.7.0", path = "../../../lib/core/libimagrt" } diff --git a/bin/domain/imag-wiki/src/main.rs b/bin/domain/imag-wiki/src/main.rs index 30da6c7a..ec9df093 100644 --- a/bin/domain/imag-wiki/src/main.rs +++ b/bin/domain/imag-wiki/src/main.rs @@ -25,6 +25,7 @@ extern crate libimagerror; extern crate libimagstore; extern crate libimagwiki; extern crate libimagentryedit; +extern crate libimagentrylink; use std::io::Write; @@ -169,7 +170,35 @@ fn create(rt: &Runtime, wiki_name: &str) { } fn delete(rt: &Runtime, wiki_name: &str) { - unimplemented!() + use libimagentrylink::internal::InternalLinker; + + let scmd = rt.cli().subcommand_matches("delete").unwrap(); // safed by clap + let name = String::from(scmd.value_of("delete-name").unwrap()); // safe by clap + let unlink = !scmd.is_present("delete-no-remove-linkings"); + + let wiki = rt + .store() + .get_wiki(&wiki_name) + .map_err_trace_exit_unwrap(1) + .unwrap_or_else(|| { + error!("No wiki '{}' found", wiki_name); + ::std::process::exit(1) + }); + + if unlink { + wiki.get_entry(&name) + .map_err_trace_exit_unwrap(1) + .unwrap_or_else(|| { + error!("No wiki entry '{}' in '{}' found", name, wiki_name); + ::std::process::exit(1) + }) + .unlink(rt.store()) + .map_err_trace_exit_unwrap(1); + } + + let _ = wiki + .delete_entry(&name) + .map_err_trace_exit_unwrap(1); } fn grep(rt: &Runtime, wiki_name: &str) { diff --git a/bin/domain/imag-wiki/src/ui.rs b/bin/domain/imag-wiki/src/ui.rs index 1c32d2a0..2a94f992 100644 --- a/bin/domain/imag-wiki/src/ui.rs +++ b/bin/domain/imag-wiki/src/ui.rs @@ -107,15 +107,15 @@ pub fn build_ui<'a>(app: App<'a, 'a>) -> App<'a, 'a> { ) .subcommand(SubCommand::with_name("delete") - .about("Add wiki entry") + .about("Delete wiki entry") .version("0.1") - .arg(Arg::with_name("name") + .arg(Arg::with_name("delete-name") .index(1) .takes_value(true) .required(true) .multiple(false) .value_name("NAME") - .help("Add the entry under this name. The name must be unique, namespaces ('foo/bar') are allowed.")) + .help("Delete the entry under this name. The name must be unique, namespaces ('foo/bar') are allowed.")) .arg(Arg::with_name("delete-no-remove-linkings") .long("no-remove-links")