♻️ refactor: rename Config to Rules
- rename Config struct to Rules to better reflect its purpose - update all references to Config to Rules
This commit is contained in:
committed by
Jeremiah Russell
parent
0300653299
commit
0bc71f5b75
@@ -4,7 +4,7 @@ mod labels_cli;
|
|||||||
mod messages_cli;
|
mod messages_cli;
|
||||||
mod rules_cli;
|
mod rules_cli;
|
||||||
|
|
||||||
use cull_gmail::{Config, GmailClient, Result};
|
use cull_gmail::{GmailClient, Result, Rules};
|
||||||
use std::error::Error as stdError;
|
use std::error::Error as stdError;
|
||||||
|
|
||||||
use labels_cli::LabelsCli;
|
use labels_cli::LabelsCli;
|
||||||
@@ -86,14 +86,14 @@ fn get_logging(level: log::LevelFilter) -> env_logger::Builder {
|
|||||||
builder
|
builder
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_config() -> Result<Config> {
|
fn get_config() -> Result<Rules> {
|
||||||
match Config::load() {
|
match Rules::load() {
|
||||||
Ok(c) => Ok(c),
|
Ok(c) => Ok(c),
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
log::warn!("Configuration not found, creating default config.");
|
log::warn!("Configuration not found, creating default config.");
|
||||||
let config = Config::new();
|
let rules = Rules::new();
|
||||||
config.save()?;
|
rules.save()?;
|
||||||
Ok(config)
|
Ok(rules)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use clap::{Parser, Subcommand};
|
|||||||
mod config_cli;
|
mod config_cli;
|
||||||
mod run_cli;
|
mod run_cli;
|
||||||
|
|
||||||
use cull_gmail::{Config, GmailClient, Result};
|
use cull_gmail::{Rules, GmailClient, Result};
|
||||||
|
|
||||||
use config_cli::ConfigCli;
|
use config_cli::ConfigCli;
|
||||||
use run_cli::RunCli;
|
use run_cli::RunCli;
|
||||||
@@ -25,7 +25,7 @@ pub struct RulesCli {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl RulesCli {
|
impl RulesCli {
|
||||||
pub async fn run(&self, client: &mut GmailClient, config: Config) -> Result<()> {
|
pub async fn run(&self, client: &mut GmailClient, config: Rules) -> Result<()> {
|
||||||
match &self.sub_command {
|
match &self.sub_command {
|
||||||
SubCmds::Config(config_cli) => config_cli.run(config),
|
SubCmds::Config(config_cli) => config_cli.run(config),
|
||||||
SubCmds::Run(run_cli) => run_cli.run(client, config).await,
|
SubCmds::Run(run_cli) => run_cli.run(client, config).await,
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ mod label_cli;
|
|||||||
mod rules_cli;
|
mod rules_cli;
|
||||||
|
|
||||||
use action_cli::ActionCli;
|
use action_cli::ActionCli;
|
||||||
use cull_gmail::{Config, Result};
|
use cull_gmail::{Rules, Result};
|
||||||
use label_cli::LabelCli;
|
use label_cli::LabelCli;
|
||||||
use rules_cli::RulesCli;
|
use rules_cli::RulesCli;
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ pub struct ConfigCli {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl ConfigCli {
|
impl ConfigCli {
|
||||||
pub fn run(&self, config: Config) -> Result<()> {
|
pub fn run(&self, config: Rules) -> Result<()> {
|
||||||
match &self.sub_command {
|
match &self.sub_command {
|
||||||
SubCmds::Rules(rules_cli) => rules_cli.run(config),
|
SubCmds::Rules(rules_cli) => rules_cli.run(config),
|
||||||
SubCmds::Label(label_cli) => label_cli.run(config),
|
SubCmds::Label(label_cli) => label_cli.run(config),
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use clap::{Parser, ValueEnum};
|
use clap::{Parser, ValueEnum};
|
||||||
use cull_gmail::{Config, EolAction, Error, Result};
|
use cull_gmail::{Rules, EolAction, Error, Result};
|
||||||
|
|
||||||
#[derive(Debug, Clone, Parser, ValueEnum)]
|
#[derive(Debug, Clone, Parser, ValueEnum)]
|
||||||
pub enum Action {
|
pub enum Action {
|
||||||
@@ -22,7 +22,7 @@ pub struct ActionCli {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl ActionCli {
|
impl ActionCli {
|
||||||
pub fn run(&self, mut config: Config) -> Result<()> {
|
pub fn run(&self, mut config: Rules) -> Result<()> {
|
||||||
if config.get_rule(self.id).is_none() {
|
if config.get_rule(self.id).is_none() {
|
||||||
return Err(Error::RuleNotFound(self.id));
|
return Err(Error::RuleNotFound(self.id));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use clap::{Parser, Subcommand};
|
use clap::{Parser, Subcommand};
|
||||||
use cull_gmail::{Config, Error};
|
use cull_gmail::{Rules, Error};
|
||||||
|
|
||||||
mod add_cli;
|
mod add_cli;
|
||||||
mod list_cli;
|
mod list_cli;
|
||||||
@@ -30,7 +30,7 @@ pub struct LabelCli {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl LabelCli {
|
impl LabelCli {
|
||||||
pub fn run(&self, config: Config) -> Result<(), Error> {
|
pub fn run(&self, config: Rules) -> Result<(), Error> {
|
||||||
match &self.command {
|
match &self.command {
|
||||||
LabelCommands::List(list_cli) => list_cli.run(config),
|
LabelCommands::List(list_cli) => list_cli.run(config),
|
||||||
LabelCommands::Add(add_cli) => add_cli.run(config),
|
LabelCommands::Add(add_cli) => add_cli.run(config),
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
|
|
||||||
use cull_gmail::{Config, Error, Result};
|
use cull_gmail::{Rules, Error, Result};
|
||||||
|
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
pub struct AddCli {
|
pub struct AddCli {
|
||||||
@@ -13,7 +13,7 @@ pub struct AddCli {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl AddCli {
|
impl AddCli {
|
||||||
pub fn run(&self, mut config: Config) -> Result<()> {
|
pub fn run(&self, mut config: Rules) -> Result<()> {
|
||||||
if config.get_rule(self.id).is_none() {
|
if config.get_rule(self.id).is_none() {
|
||||||
return Err(Error::RuleNotFound(self.id));
|
return Err(Error::RuleNotFound(self.id));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
|
|
||||||
use cull_gmail::{Config, Error, Result};
|
use cull_gmail::{Rules, Error, Result};
|
||||||
|
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
pub struct ListCli {
|
pub struct ListCli {
|
||||||
@@ -10,7 +10,7 @@ pub struct ListCli {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl ListCli {
|
impl ListCli {
|
||||||
pub fn run(&self, config: Config) -> Result<()> {
|
pub fn run(&self, config: Rules) -> Result<()> {
|
||||||
let Some(rule) = config.get_rule(self.id) else {
|
let Some(rule) = config.get_rule(self.id) else {
|
||||||
return Err(Error::RuleNotFound(self.id));
|
return Err(Error::RuleNotFound(self.id));
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
|
|
||||||
use cull_gmail::{Config, Error, Result};
|
use cull_gmail::{Rules, Error, Result};
|
||||||
|
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
pub struct RemoveCli {
|
pub struct RemoveCli {
|
||||||
@@ -13,7 +13,7 @@ pub struct RemoveCli {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl RemoveCli {
|
impl RemoveCli {
|
||||||
pub fn run(&self, mut config: Config) -> Result<()> {
|
pub fn run(&self, mut config: Rules) -> Result<()> {
|
||||||
if config.get_rule(self.id).is_none() {
|
if config.get_rule(self.id).is_none() {
|
||||||
return Err(Error::RuleNotFound(self.id));
|
return Err(Error::RuleNotFound(self.id));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use clap::{Parser, Subcommand};
|
use clap::{Parser, Subcommand};
|
||||||
use cull_gmail::{Config, Error};
|
use cull_gmail::{Rules, Error};
|
||||||
|
|
||||||
mod add_cli;
|
mod add_cli;
|
||||||
mod rm_cli;
|
mod rm_cli;
|
||||||
@@ -28,7 +28,7 @@ pub struct RulesCli {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl RulesCli {
|
impl RulesCli {
|
||||||
pub fn run(&self, config: Config) -> Result<(), Error> {
|
pub fn run(&self, config: Rules) -> Result<(), Error> {
|
||||||
match &self.command {
|
match &self.command {
|
||||||
RulesCommands::List => config.list_rules(),
|
RulesCommands::List => config.list_rules(),
|
||||||
RulesCommands::Add(add_cli) => add_cli.run(config),
|
RulesCommands::Add(add_cli) => add_cli.run(config),
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
use clap::{Parser, ValueEnum};
|
use clap::{Parser, ValueEnum};
|
||||||
use cull_gmail::{Config, Error, MessageAge, Retention};
|
use cull_gmail::{Rules, Error, MessageAge, Retention};
|
||||||
|
|
||||||
#[derive(Debug, Clone, Parser, ValueEnum)]
|
#[derive(Debug, Clone, Parser, ValueEnum)]
|
||||||
pub enum Period {
|
pub enum Period {
|
||||||
@@ -39,7 +39,7 @@ pub struct AddCli {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl AddCli {
|
impl AddCli {
|
||||||
pub fn run(&self, mut config: Config) -> Result<(), Error> {
|
pub fn run(&self, mut config: Rules) -> Result<(), Error> {
|
||||||
let generate = self.label.is_none();
|
let generate = self.label.is_none();
|
||||||
let message_age = MessageAge::new(self.period.to_string().as_str(), self.count);
|
let message_age = MessageAge::new(self.period.to_string().as_str(), self.count);
|
||||||
let retention = Retention::new(message_age, generate);
|
let retention = Retention::new(message_age, generate);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use cull_gmail::{Config, Error};
|
use cull_gmail::{Rules, Error};
|
||||||
|
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
pub struct RmCli {
|
pub struct RmCli {
|
||||||
@@ -12,7 +12,7 @@ pub struct RmCli {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl RmCli {
|
impl RmCli {
|
||||||
pub fn run(&self, mut config: Config) -> Result<(), Error> {
|
pub fn run(&self, mut config: Rules) -> Result<(), Error> {
|
||||||
if self.id.is_none() && self.label.is_none() {
|
if self.id.is_none() && self.label.is_none() {
|
||||||
return Err(Error::NoRuleSelector);
|
return Err(Error::NoRuleSelector);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use cull_gmail::{Config, EolAction, GmailClient, Result, RuleProcessor};
|
use cull_gmail::{Rules, EolAction, GmailClient, Result, RuleProcessor};
|
||||||
|
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
pub struct RunCli {
|
pub struct RunCli {
|
||||||
@@ -15,7 +15,7 @@ pub struct RunCli {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl RunCli {
|
impl RunCli {
|
||||||
pub async fn run(&self, client: &mut GmailClient, config: Config) -> Result<()> {
|
pub async fn run(&self, client: &mut GmailClient, config: Rules) -> Result<()> {
|
||||||
let rules = config.get_rules_by_label();
|
let rules = config.get_rules_by_label();
|
||||||
|
|
||||||
for label in config.labels() {
|
for label in config.labels() {
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ mod message_summary;
|
|||||||
|
|
||||||
pub(crate) use message_summary::MessageSummary;
|
pub(crate) use message_summary::MessageSummary;
|
||||||
|
|
||||||
use crate::{Credential, Error, Result, config::EolRule};
|
use crate::{Credential, Error, Result, rules::EolRule};
|
||||||
|
|
||||||
/// Default for the maximum number of results to return on a page
|
/// Default for the maximum number of results to return on a page
|
||||||
pub const DEFAULT_MAX_RESULTS: &str = "200";
|
pub const DEFAULT_MAX_RESULTS: &str = "200";
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
#![cfg_attr(docsrs, warn(rustdoc::invalid_codeblock_attributes))]
|
#![cfg_attr(docsrs, warn(rustdoc::invalid_codeblock_attributes))]
|
||||||
#![doc = include_str!("../docs/lib.md")]
|
#![doc = include_str!("../docs/lib.md")]
|
||||||
|
|
||||||
mod config;
|
|
||||||
mod credential;
|
mod credential;
|
||||||
mod eol_action;
|
mod eol_action;
|
||||||
mod error;
|
mod error;
|
||||||
@@ -12,16 +11,17 @@ mod gmail_client;
|
|||||||
mod message_list;
|
mod message_list;
|
||||||
mod retention;
|
mod retention;
|
||||||
mod rule_processor;
|
mod rule_processor;
|
||||||
|
mod rules;
|
||||||
|
|
||||||
pub(crate) mod utils;
|
pub(crate) mod utils;
|
||||||
|
|
||||||
pub use gmail_client::DEFAULT_MAX_RESULTS;
|
pub use gmail_client::DEFAULT_MAX_RESULTS;
|
||||||
|
|
||||||
pub use config::Config;
|
|
||||||
pub use credential::Credential;
|
pub use credential::Credential;
|
||||||
pub use gmail_client::GmailClient;
|
pub use gmail_client::GmailClient;
|
||||||
pub(crate) use gmail_client::MessageSummary;
|
pub(crate) use gmail_client::MessageSummary;
|
||||||
pub use retention::Retention;
|
pub use retention::Retention;
|
||||||
|
pub use rules::Rules;
|
||||||
|
|
||||||
pub use eol_action::EolAction;
|
pub use eol_action::EolAction;
|
||||||
pub use error::Error;
|
pub use error::Error;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use google_gmail1::api::{BatchDeleteMessagesRequest, BatchModifyMessagesRequest};
|
use google_gmail1::api::{BatchDeleteMessagesRequest, BatchModifyMessagesRequest};
|
||||||
|
|
||||||
use crate::{EolAction, Error, GmailClient, Result, config::EolRule, message_list::MessageList};
|
use crate::{EolAction, Error, GmailClient, Result, message_list::MessageList, rules::EolRule};
|
||||||
|
|
||||||
/// Rules processor to apply the configured rules to the mailbox.
|
/// Rules processor to apply the configured rules to the mailbox.
|
||||||
pub trait RuleProcessor {
|
pub trait RuleProcessor {
|
||||||
|
|||||||
@@ -15,12 +15,12 @@ use crate::{EolAction, Error, MessageAge, Result, Retention};
|
|||||||
|
|
||||||
/// Configuration file for the program
|
/// Configuration file for the program
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
pub struct Config {
|
pub struct Rules {
|
||||||
credentials: Option<String>,
|
credentials: Option<String>,
|
||||||
rules: BTreeMap<String, EolRule>,
|
rules: BTreeMap<String, EolRule>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Config {
|
impl Default for Rules {
|
||||||
fn default() -> Self {
|
fn default() -> Self {
|
||||||
let rules = BTreeMap::new();
|
let rules = BTreeMap::new();
|
||||||
|
|
||||||
@@ -38,10 +38,10 @@ impl Default for Config {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Config {
|
impl Rules {
|
||||||
/// Create a new configuration file
|
/// Create a new configuration file
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
Config::default()
|
Rules::default()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Set a name for the credentials file
|
/// Set a name for the credentials file
|
||||||
@@ -205,7 +205,7 @@ impl Config {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Load the current configuration
|
/// Load the current configuration
|
||||||
pub fn load() -> Result<Config> {
|
pub fn load() -> Result<Rules> {
|
||||||
let home_dir = env::home_dir().unwrap();
|
let home_dir = env::home_dir().unwrap();
|
||||||
let path = PathBuf::new()
|
let path = PathBuf::new()
|
||||||
.join(home_dir)
|
.join(home_dir)
|
||||||
@@ -213,7 +213,7 @@ impl Config {
|
|||||||
log::trace!("Loading config from {}", path.display());
|
log::trace!("Loading config from {}", path.display());
|
||||||
|
|
||||||
let input = read_to_string(path)?;
|
let input = read_to_string(path)?;
|
||||||
let config = toml::from_str::<Config>(&input)?;
|
let config = toml::from_str::<Rules>(&input)?;
|
||||||
Ok(config)
|
Ok(config)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,7 +177,7 @@ impl EolRule {
|
|||||||
mod test {
|
mod test {
|
||||||
use chrono::{Local, TimeZone};
|
use chrono::{Local, TimeZone};
|
||||||
|
|
||||||
use crate::{MessageAge, Retention, config::eol_rule::EolRule};
|
use crate::{MessageAge, Retention, rules::eol_rule::EolRule};
|
||||||
|
|
||||||
fn build_test_rule(age: MessageAge) -> EolRule {
|
fn build_test_rule(age: MessageAge) -> EolRule {
|
||||||
let retention = Retention::new(age, true);
|
let retention = Retention::new(age, true);
|
||||||
Reference in New Issue
Block a user