♻️ 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:
Jeremiah Russell
2025-10-15 11:07:26 +01:00
committed by Jeremiah Russell
parent 0300653299
commit 0bc71f5b75
17 changed files with 39 additions and 39 deletions

View File

@@ -4,7 +4,7 @@ mod labels_cli;
mod messages_cli;
mod rules_cli;
use cull_gmail::{Config, GmailClient, Result};
use cull_gmail::{GmailClient, Result, Rules};
use std::error::Error as stdError;
use labels_cli::LabelsCli;
@@ -86,14 +86,14 @@ fn get_logging(level: log::LevelFilter) -> env_logger::Builder {
builder
}
fn get_config() -> Result<Config> {
match Config::load() {
fn get_config() -> Result<Rules> {
match Rules::load() {
Ok(c) => Ok(c),
Err(_) => {
log::warn!("Configuration not found, creating default config.");
let config = Config::new();
config.save()?;
Ok(config)
let rules = Rules::new();
rules.save()?;
Ok(rules)
}
}
}

View File

@@ -3,7 +3,7 @@ use clap::{Parser, Subcommand};
mod config_cli;
mod run_cli;
use cull_gmail::{Config, GmailClient, Result};
use cull_gmail::{Rules, GmailClient, Result};
use config_cli::ConfigCli;
use run_cli::RunCli;
@@ -25,7 +25,7 @@ pub struct 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 {
SubCmds::Config(config_cli) => config_cli.run(config),
SubCmds::Run(run_cli) => run_cli.run(client, config).await,

View File

@@ -5,7 +5,7 @@ mod label_cli;
mod rules_cli;
use action_cli::ActionCli;
use cull_gmail::{Config, Result};
use cull_gmail::{Rules, Result};
use label_cli::LabelCli;
use rules_cli::RulesCli;
@@ -31,7 +31,7 @@ pub struct ConfigCli {
}
impl ConfigCli {
pub fn run(&self, config: Config) -> Result<()> {
pub fn run(&self, config: Rules) -> Result<()> {
match &self.sub_command {
SubCmds::Rules(rules_cli) => rules_cli.run(config),
SubCmds::Label(label_cli) => label_cli.run(config),

View File

@@ -1,5 +1,5 @@
use clap::{Parser, ValueEnum};
use cull_gmail::{Config, EolAction, Error, Result};
use cull_gmail::{Rules, EolAction, Error, Result};
#[derive(Debug, Clone, Parser, ValueEnum)]
pub enum Action {
@@ -22,7 +22,7 @@ pub struct 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() {
return Err(Error::RuleNotFound(self.id));
}

View File

@@ -1,5 +1,5 @@
use clap::{Parser, Subcommand};
use cull_gmail::{Config, Error};
use cull_gmail::{Rules, Error};
mod add_cli;
mod list_cli;
@@ -30,7 +30,7 @@ pub struct LabelCli {
}
impl LabelCli {
pub fn run(&self, config: Config) -> Result<(), Error> {
pub fn run(&self, config: Rules) -> Result<(), Error> {
match &self.command {
LabelCommands::List(list_cli) => list_cli.run(config),
LabelCommands::Add(add_cli) => add_cli.run(config),

View File

@@ -1,6 +1,6 @@
use clap::Parser;
use cull_gmail::{Config, Error, Result};
use cull_gmail::{Rules, Error, Result};
#[derive(Debug, Parser)]
pub struct AddCli {
@@ -13,7 +13,7 @@ pub struct 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() {
return Err(Error::RuleNotFound(self.id));
}

View File

@@ -1,6 +1,6 @@
use clap::Parser;
use cull_gmail::{Config, Error, Result};
use cull_gmail::{Rules, Error, Result};
#[derive(Debug, Parser)]
pub struct ListCli {
@@ -10,7 +10,7 @@ pub struct 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 {
return Err(Error::RuleNotFound(self.id));
};

View File

@@ -1,6 +1,6 @@
use clap::Parser;
use cull_gmail::{Config, Error, Result};
use cull_gmail::{Rules, Error, Result};
#[derive(Debug, Parser)]
pub struct RemoveCli {
@@ -13,7 +13,7 @@ pub struct 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() {
return Err(Error::RuleNotFound(self.id));
}

View File

@@ -1,5 +1,5 @@
use clap::{Parser, Subcommand};
use cull_gmail::{Config, Error};
use cull_gmail::{Rules, Error};
mod add_cli;
mod rm_cli;
@@ -28,7 +28,7 @@ pub struct RulesCli {
}
impl RulesCli {
pub fn run(&self, config: Config) -> Result<(), Error> {
pub fn run(&self, config: Rules) -> Result<(), Error> {
match &self.command {
RulesCommands::List => config.list_rules(),
RulesCommands::Add(add_cli) => add_cli.run(config),

View File

@@ -1,7 +1,7 @@
use std::fmt;
use clap::{Parser, ValueEnum};
use cull_gmail::{Config, Error, MessageAge, Retention};
use cull_gmail::{Rules, Error, MessageAge, Retention};
#[derive(Debug, Clone, Parser, ValueEnum)]
pub enum Period {
@@ -39,7 +39,7 @@ pub struct 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 message_age = MessageAge::new(self.period.to_string().as_str(), self.count);
let retention = Retention::new(message_age, generate);

View File

@@ -1,5 +1,5 @@
use clap::Parser;
use cull_gmail::{Config, Error};
use cull_gmail::{Rules, Error};
#[derive(Debug, Parser)]
pub struct RmCli {
@@ -12,7 +12,7 @@ pub struct 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() {
return Err(Error::NoRuleSelector);
}

View File

@@ -1,5 +1,5 @@
use clap::Parser;
use cull_gmail::{Config, EolAction, GmailClient, Result, RuleProcessor};
use cull_gmail::{Rules, EolAction, GmailClient, Result, RuleProcessor};
#[derive(Debug, Parser)]
pub struct RunCli {
@@ -15,7 +15,7 @@ pub struct 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();
for label in config.labels() {

View File

@@ -14,7 +14,7 @@ mod message_summary;
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
pub const DEFAULT_MAX_RESULTS: &str = "200";

View File

@@ -4,7 +4,6 @@
#![cfg_attr(docsrs, warn(rustdoc::invalid_codeblock_attributes))]
#![doc = include_str!("../docs/lib.md")]
mod config;
mod credential;
mod eol_action;
mod error;
@@ -12,16 +11,17 @@ mod gmail_client;
mod message_list;
mod retention;
mod rule_processor;
mod rules;
pub(crate) mod utils;
pub use gmail_client::DEFAULT_MAX_RESULTS;
pub use config::Config;
pub use credential::Credential;
pub use gmail_client::GmailClient;
pub(crate) use gmail_client::MessageSummary;
pub use retention::Retention;
pub use rules::Rules;
pub use eol_action::EolAction;
pub use error::Error;

View File

@@ -1,6 +1,6 @@
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.
pub trait RuleProcessor {

View File

@@ -15,12 +15,12 @@ use crate::{EolAction, Error, MessageAge, Result, Retention};
/// Configuration file for the program
#[derive(Debug, Serialize, Deserialize)]
pub struct Config {
pub struct Rules {
credentials: Option<String>,
rules: BTreeMap<String, EolRule>,
}
impl Default for Config {
impl Default for Rules {
fn default() -> Self {
let rules = BTreeMap::new();
@@ -38,10 +38,10 @@ impl Default for Config {
}
}
impl Config {
impl Rules {
/// Create a new configuration file
pub fn new() -> Self {
Config::default()
Rules::default()
}
/// Set a name for the credentials file
@@ -205,7 +205,7 @@ impl Config {
}
/// Load the current configuration
pub fn load() -> Result<Config> {
pub fn load() -> Result<Rules> {
let home_dir = env::home_dir().unwrap();
let path = PathBuf::new()
.join(home_dir)
@@ -213,7 +213,7 @@ impl Config {
log::trace!("Loading config from {}", path.display());
let input = read_to_string(path)?;
let config = toml::from_str::<Config>(&input)?;
let config = toml::from_str::<Rules>(&input)?;
Ok(config)
}

View File

@@ -177,7 +177,7 @@ impl EolRule {
mod test {
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 {
let retention = Retention::new(age, true);