add default page size config (#96)

This commit is contained in:
Clément DOUIN
2021-04-17 22:37:59 +02:00
parent 2f4caaca07
commit 3e0d1f704d
10 changed files with 248 additions and 168 deletions
+30 -12
View File
@@ -1,8 +1,8 @@
use clap::{App, Arg, ArgMatches, SubCommand};
use error_chain::error_chain;
use log::debug;
use crate::msg::cli::uid_arg;
use crate::{config::model::Config, imap::model::ImapConnector};
use crate::{config::model::Account, imap::model::ImapConnector, msg::cli::uid_arg};
error_chain! {
links {
@@ -11,7 +11,7 @@ error_chain! {
}
}
fn flags_arg<'a, 'b>() -> Arg<'a, 'b> {
fn flags_arg<'f>() -> Arg<'f, 'f> {
Arg::with_name("flags")
.help("IMAP flags (see https://tools.ietf.org/html/rfc3501#page-11)")
.value_name("FLAGS…")
@@ -19,7 +19,7 @@ fn flags_arg<'a, 'b>() -> Arg<'a, 'b> {
.required(true)
}
pub fn flag_subcmds<'a>() -> Vec<App<'a, 'a>> {
pub fn flag_subcmds<'f>() -> Vec<App<'f, 'f>> {
vec![SubCommand::with_name("flags")
.aliases(&["flag"])
.about("Handles flags")
@@ -46,37 +46,55 @@ pub fn flag_subcmds<'a>() -> Vec<App<'a, 'a>> {
)]
}
pub fn flag_matches(matches: &ArgMatches) -> Result<bool> {
let config = Config::new_from_file()?;
let account = config.find_account_by_name(matches.value_of("account"))?;
let mbox = matches.value_of("mailbox").unwrap();
pub fn flag_matches(account: &Account, mbox: &str, matches: &ArgMatches) -> Result<bool> {
if let Some(matches) = matches.subcommand_matches("set") {
let mut imap_conn = ImapConnector::new(&account)?;
debug!("[flag::cli::matches] set command matched");
let uid = matches.value_of("uid").unwrap();
debug!("[flag::cli::matches] uid: {}", uid);
let flags = matches.value_of("flags").unwrap();
debug!("[flag::cli::matches] flags: {}", flags);
let mut imap_conn = ImapConnector::new(&account)?;
imap_conn.set_flags(mbox, uid, flags)?;
imap_conn.logout();
return Ok(true);
}
if let Some(matches) = matches.subcommand_matches("add") {
let mut imap_conn = ImapConnector::new(&account)?;
debug!("[flag::cli::matches] add command matched");
let uid = matches.value_of("uid").unwrap();
debug!("[flag::cli::matches] uid: {}", uid);
let flags = matches.value_of("flags").unwrap();
debug!("[flag::cli::matches] flags: {}", flags);
let mut imap_conn = ImapConnector::new(&account)?;
imap_conn.add_flags(mbox, uid, flags)?;
imap_conn.logout();
return Ok(true);
}
if let Some(matches) = matches.subcommand_matches("remove") {
let mut imap_conn = ImapConnector::new(&account)?;
debug!("[flag::cli::matches] remove command matched");
let uid = matches.value_of("uid").unwrap();
debug!("[flag::cli::matches] uid: {}", uid);
let flags = matches.value_of("flags").unwrap();
debug!("[flag::cli::matches] flags: {}", flags);
let mut imap_conn = ImapConnector::new(&account)?;
imap_conn.remove_flags(mbox, uid, flags)?;
imap_conn.logout();
return Ok(true);
}
debug!("[flag::cli::matches] nothing matched");
Ok(false)
}