From cea84cb7fd6581010ab048f96634d716f7ac6f89 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 23 Sep 2016 18:25:16 +0200 Subject: [PATCH] Add UI module --- imag-mail/src/main.rs | 2 ++ imag-mail/src/ui.rs | 74 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 imag-mail/src/ui.rs diff --git a/imag-mail/src/main.rs b/imag-mail/src/main.rs index d906e12f..ed0c4beb 100644 --- a/imag-mail/src/main.rs +++ b/imag-mail/src/main.rs @@ -29,6 +29,8 @@ extern crate libimagmail; extern crate libimagerror; extern crate libimagutil; +mod ui; + fn main() { println!("Hello, world!"); } diff --git a/imag-mail/src/ui.rs b/imag-mail/src/ui.rs new file mode 100644 index 00000000..3e999949 --- /dev/null +++ b/imag-mail/src/ui.rs @@ -0,0 +1,74 @@ +// +// imag - the personal information management suite for the commandline +// Copyright (C) 2015, 2016 Matthias Beyer and contributors +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; version +// 2.1 of the License. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +// + +use clap::{Arg, ArgGroup, App, SubCommand}; + +pub fn build_ui<'a>(app: App<'a, 'a>) -> App<'a, 'a> { + app + .subcommand(SubCommand::with_name("import-mail") + .about("Import a mail (create a reference to it) (Maildir)") + .version("0.1") + .arg(Arg::with_name("path") + .long("path") + .short("p") + .takes_value(true) + .required(true) + .help("Path to the mail file or a directory which is then searched recursively") + .value_name("PATH")) + ) + + .subcommand(SubCommand::with_name("list") + .about("List all stored references to mails") + .version("0.1") + + // TODO: Thee following four arguments are the same as in imag-ref. + // We should make these importable from libimagref. + + .arg(Arg::with_name("check-dead") + .long("check-dead") + .short("d") + .help("Check each reference whether it is dead")) + + .arg(Arg::with_name("check-changed") + .long("check-changed") + .short("c") + .help("Check whether a reference had changed (content or permissions)")) + + .arg(Arg::with_name("check-changed-content") + .long("check-changed-content") + .short("C") + .help("Check whether the content of the referenced file changed")) + + .arg(Arg::with_name("check-changed-permissions") + .long("check-changed-perms") + .short("P") + .help("Check whether the permissions of the referenced file changed")) + + ) + + .subcommand(SubCommand::with_name("mail-store") + .about("Operations on (subsets of) all mails") + .version("0.1") + .subcommand(SubCommand::with_name("update-refs") + .about("Create references based on Message-IDs for all loaded mails") + .version("0.1")) + // TODO: We really should be able to filter here. + ) +} +