feat(cli): load configuration for message command

- load config file instead of hardcoding credential path
- create default config if not exist
This commit is contained in:
Jeremiah Russell
2025-10-07 15:51:26 +01:00
committed by Jeremiah Russell
parent ab8df6bdd9
commit 4390fe4c2d

View File

@@ -6,7 +6,7 @@ mod message_cli;
mod trash_cli; mod trash_cli;
use config_cli::ConfigCli; use config_cli::ConfigCli;
use cull_gmail::Error; use cull_gmail::{Config, Error};
use label_cli::LabelCli; use label_cli::LabelCli;
use message_cli::MessageCli; use message_cli::MessageCli;
use std::error::Error as stdError; use std::error::Error as stdError;
@@ -62,9 +62,10 @@ async fn main() {
} }
async fn run(args: Cli) -> Result<(), Error> { async fn run(args: Cli) -> Result<(), Error> {
let config = get_config()?;
if let Some(cmds) = args.command { if let Some(cmds) = args.command {
match cmds { match cmds {
Commands::Message(list_cli) => list_cli.run("credential.json").await?, Commands::Message(list_cli) => list_cli.run(config.credential_file()).await?,
Commands::Labels(label_cli) => label_cli.run("credential.json").await?, Commands::Labels(label_cli) => label_cli.run("credential.json").await?,
Commands::Trash(trash_cli) => trash_cli.run("credential.json").await?, Commands::Trash(trash_cli) => trash_cli.run("credential.json").await?,
Commands::Config(config_cli) => config_cli.run(), Commands::Config(config_cli) => config_cli.run(),
@@ -89,3 +90,15 @@ fn get_logging(level: log::LevelFilter) -> env_logger::Builder {
builder builder
} }
fn get_config() -> Result<Config, Error> {
match Config::load() {
Ok(c) => Ok(c),
Err(_) => {
log::warn!("Configuration not found, creating default config.");
let config = Config::new();
config.save()?;
Ok(config)
}
}
}