extract output cli+utils

This commit is contained in:
Clément DOUIN 2021-03-23 22:26:29 +01:00
parent e2ba18cda8
commit f2158e71d2
No known key found for this signature in database
GPG key ID: 69C9B9CFFDEE2DEF
8 changed files with 23 additions and 16 deletions

View file

@ -7,6 +7,7 @@ use crate::{
imap::cli::{imap_matches, imap_subcmds},
mbox::cli::{mbox_arg, mbox_matches, mbox_subcmds},
msg::cli::{msg_matches, msg_subcmds},
output::cli::output_args,
};
error_chain! {
@ -26,15 +27,7 @@ impl<'a> App<'a> {
.version(env!("CARGO_PKG_VERSION"))
.about(env!("CARGO_PKG_DESCRIPTION"))
.author(env!("CARGO_PKG_AUTHORS"))
.arg(
Arg::with_name("output")
.long("output")
.short("o")
.help("Defines the output format")
.value_name("STRING")
.possible_values(&["plain", "json"])
.default_value("plain"),
)
.args(&output_args())
.arg(
Arg::with_name("account")
.long("account")

View file

@ -4,7 +4,7 @@ use serde::Deserialize;
use std::{collections::HashMap, env, fs::File, io::Read, path::PathBuf};
use toml;
use crate::output::run_cmd;
use crate::output::utils::run_cmd;
error_chain! {}

View file

@ -20,7 +20,7 @@ pub fn imap_matches(matches: &ArgMatches) -> Result<bool> {
let mut imap_conn = ImapConnector::new(&account)?;
let mbox = matches.value_of("mailbox").unwrap();
if let Some(matches) = matches.subcommand_matches("idle") {
if let Some(_) = matches.subcommand_matches("idle") {
imap_conn.idle(&config, &mbox)?;
imap_conn.logout();
return Ok(true);

View file

@ -1,9 +1,12 @@
mod app;
mod config;
mod input;
mod output;
mod smtp;
mod table;
mod output {
pub(crate) mod cli;
pub(crate) mod utils;
}
mod imap {
pub(crate) mod cli;
pub(crate) mod model;

View file

@ -1,14 +1,14 @@
use clap::{self, App, Arg, ArgMatches, SubCommand};
use error_chain::error_chain;
use crate::{config::Config, imap::model::ImapConnector, output::print};
use crate::{config::Config, imap::model::ImapConnector, output::utils::print};
error_chain! {
links {
Config(crate::config::Error, crate::config::ErrorKind);
Imap(crate::imap::model::Error, crate::imap::model::ErrorKind);
MsgCli(crate::msg::cli::Error, crate::msg::cli::ErrorKind);
Output(crate::output::Error, crate::output::ErrorKind);
OutputUtils(crate::output::utils::Error, crate::output::utils::ErrorKind);
}
}

View file

@ -7,7 +7,7 @@ use crate::{
imap::model::ImapConnector,
input,
msg::model::{Attachments, Msg, Msgs, ReadableMsg},
output::print,
output::utils::print,
smtp,
};
@ -17,7 +17,7 @@ error_chain! {
Imap(crate::imap::model::Error, crate::imap::model::ErrorKind);
Input(crate::input::Error, crate::input::ErrorKind);
MsgModel(crate::msg::model::Error, crate::msg::model::ErrorKind);
Output(crate::output::Error, crate::output::ErrorKind);
OutputUtils(crate::output::utils::Error, crate::output::utils::ErrorKind);
Smtp(crate::smtp::Error, crate::smtp::ErrorKind);
}
}

11
src/output/cli.rs Normal file
View file

@ -0,0 +1,11 @@
use clap::Arg;
pub fn output_args<'a>() -> Vec<Arg<'a, 'a>> {
vec![Arg::with_name("output")
.long("output")
.short("o")
.help("Defines the output format")
.value_name("STRING")
.possible_values(&["plain", "json"])
.default_value("plain")]
}