Commit Graph

281 Commits

Author SHA1 Message Date
Jeremiah Russell
9e547b62e7 feat(config): implement display for eolrule struct
- add display trait implementation for eolrule struct to provide a user-friendly representation of the rule's configuration
- the display format includes the rule id, labels, and retention period, making it easier to understand the rule's settings
2025-10-08 06:42:29 +01:00
Jeremiah Russell
6ef1a337a2 feat(config): add function to list rules
- implement list_rules function in Config struct
- iterate through rules and print each rule
2025-10-08 06:42:29 +01:00
Jeremiah Russell
33027a6c34 ♻️ refactor(cli): rename config_cli to rules_cli
- rename config_cli to rules_cli for better clarity
- rename ConfigCommands to RulesCommands for better clarity
- rename ConfigCli to RulesCli for better clarity
2025-10-08 06:42:29 +01:00
Jeremiah Russell
7a1a8f6a1a 🐛 fix(ui): correct grammar errors in eol command and trash messages
- fix typo in `Delete` variant description from "immediatly" to "immediately"
- correct grammar in trash log message from "move to trash" to "moved to trash"
2025-10-07 17:34:19 +01:00
Jeremiah Russell
050f00940b feat(config): implement configuration file management
- add config.rs to handle program configuration
- create default configuration with retention rules
- implement save and load functions for persistent storage
- add credential file setting
2025-10-07 15:59:18 +01:00
Jeremiah Russell
17dc58c4a7 feat(retention): introduce message age enum
- add MessageAge enum to represent retention periods in days, weeks, months, or years
- implement Display trait for MessageAge to format retention periods
- implement label function to generate retention label
2025-10-07 15:59:18 +01:00
Jeremiah Russell
e77b372413 feat(config): add EolRule struct for managing end-of-life rules
- introduce EolRule struct with fields for id, retention, labels, query, and command
- implement methods for creating new rules, setting retention, and adding labels
- add default implementation for EolRule
2025-10-07 15:59:18 +01:00
Jeremiah Russell
f63a0f888d feat(retention): implement data retention policy
- introduce `Retention` struct to define data retention period and label generation flag
- add `MessageAge` enum to represent different retention time units (days, months, years)
- implement default values for retention policy (5 years, generate label)
2025-10-07 15:59:18 +01:00
Jeremiah Russell
4390fe4c2d feat(cli): load configuration for message command
- load config file instead of hardcoding credential path
- create default config if not exist
2025-10-07 15:59:18 +01:00
Jeremiah Russell
ab8df6bdd9 feat(lib): add config and retention modules
- add config module for managing application settings
- add retention module for message age management
2025-10-07 15:59:18 +01:00
Jeremiah Russell
c4e4e28f66 🐛 fix(error): refine error handling with granular variants
- introduce specific error variants for std::io::Error and toml::de::Error
- remove commented-out error variants to streamline error reporting
2025-10-07 15:59:18 +01:00
Jeremiah Russell
1bbc75206a feat(eol_cmd): introduce EolCmd enum for message disposal
- add Trash and Delete variants for specifying end-of-life actions
- implement Display trait for EolCmd to provide string representation
2025-10-07 15:59:18 +01:00
Jeremiah Russell
782cfc4baf Merge branch 'implement-config-subcommand' of github.com:jerus-org/cull-gmail 2025-10-07 09:32:58 +01:00
Jeremiah Russell
a0b365a455 feat(message_list): create message summary struct
- introduce MessageSummary struct to encapsulate message id and subject
- implement methods to set and retrieve subject, with default if missing
2025-10-06 17:09:47 +01:00
Jeremiah Russell
65f8bf7fc5 feat(utils): implement string elision trait
- introduce `Elide` trait for string truncation
- add `elide` function to truncate strings longer than a specified length, adding " ..." at the end
2025-10-06 17:09:47 +01:00
Jeremiah Russell
f42718328e ♻️ refactor(trash): improve trash operation logging
- change debug log level to trace for batch request
- remove debug log for response
- log message subject instead of id after trashing
2025-10-06 17:09:47 +01:00
Jeremiah Russell
adaf2b1e30 feat(message_list): improve message handling and logging
- create MessageSummary struct to hold message id and subject
- update MessageList to use MessageSummary instead of just message ids
- implement log_message_subjects to fetch and log message subjects
- add elide function to truncate long subjects for better logging
2025-10-06 17:09:47 +01:00
Jeremiah Russell
041646809c feat(trash): implement trash functionality
- add trash struct and methods for moving messages to trash
- implement batch move to trash functionality
2025-10-06 10:38:30 +01:00
Jeremiah Russell
8554737cd5 feat(trash): add trash cli
- Implement a command-line interface for the trash functionality
- Allow users to specify max results, pages, labels, and query parameters
2025-10-06 10:38:30 +01:00
Jeremiah Russell
2035dc7a85 feat(cli): add trash command
- Implement a new subcommand `trash` to move emails to trash.
- Introduce `trash_cli.rs` to handle the logic for selecting emails to move to  trash.
2025-10-06 10:38:30 +01:00
Jeremiah Russell
f7a8066f66 feat(message_list): enhance message list functionality and debugging
- implement Debug trait for MessageList struct for better debugging
- add getter methods for message_ids, label_ids, and hub for external access
- change log level check to include Info and higher for message subject logging
2025-10-06 10:38:30 +01:00
Jeremiah Russell
b7792bedc6 feat(lib): add trash module for moving messages to trash
- introduce trash module to handle deletion of messages
2025-10-06 10:38:30 +01:00
Jeremiah Russell
0a528b4196 feat(message_list): add message_ids to MessageList struct
- add message_ids field to store message IDs
- update run method to populate message_ids
- create messages_list method for API calls
- create log_message_subjects method to log message subjects
2025-10-06 07:14:46 +01:00
Jeremiah Russell
9247839ccc ♻️ refactor(message): rename Message to MessageList
- rename Message struct to MessageList for clarity
- reflect the change in the instantiation
2025-10-05 09:49:56 +01:00
Jeremiah Russell
0b52987a7d ♻️ refactor(core): rename message module to message_list
- rename message module to message_list to better reflect its functionality
2025-10-05 09:49:56 +01:00
Jeremiah Russell
188a311175 ♻️ refactor(message): rename message to message_list
- rename `message.rs` to `message_list.rs` to improve clarity
- update struct name from `Message` to `MessageList`
2025-10-05 09:49:56 +01:00
Jeremiah Russell
7e779a218d ♻️ refactor(labels): remove unused code
- Remove commented-out code block for displaying labels.
2025-10-04 09:57:20 +01:00
Jeremiah Russell
7cd4b8987b ♻️ refactor(labels): improve label listing and mapping
- refactor label listing to use `else` for option handling
- enhance label listing with id display and conditional logging
- create label map for efficient label id lookup
2025-10-04 09:57:20 +01:00
Jeremiah Russell
cbe61ab2f3 ♻️ refactor(message): improve subject logging with early returns
- use early returns and `else` blocks for better readability and reduced nesting
- add a log message to indicate emails with no subject
2025-10-04 09:10:35 +01:00
Jeremiah Russell
57ddb8da90 ♻️ refactor(cli): rename list subcommand to message
- rename list_cli module to message_cli
- rename ListCli struct to MessageCli
- update the command name from list to message
2025-10-04 07:09:58 +01:00
Jeremiah Russell
3c94da389f ♻️ refactor(cli): rename list_cli to message_cli
- rename `ListCli` struct to `MessageCli`
- rename `List` struct to `Message`
- reflect changes in file names and imports
2025-10-04 07:09:58 +01:00
Jeremiah Russell
24318768c8 feat(message): implement message listing functionality
- create `Message` struct to encapsulate Gmail API interaction
- add methods for setting max results, labels, and query parameters
- implement `run` method to retrieve and log message subjects
- use `google_gmail1` crate for Gmail API interaction
- add error handling for API calls
2025-10-04 07:09:58 +01:00
Jeremiah Russell
227d7b2111 🔥 refactor(core): remove list module
- Remove the `list.rs` file and its associated functionality
- This change is part of a larger refactoring effort to streamline the core functionality.
2025-10-04 07:09:58 +01:00
Jeremiah Russell
1eff43dad0 ♻️ refactor(core): rename list module to message
- rename list module to message for better clarity
- update associated exports and references
2025-10-04 07:09:58 +01:00
Jeremiah Russell
0fa5a21434 feat(cli): add label listing subcommand
- implement new `label` subcommand to list available Gmail labels
- create `label_cli` module to handle label listing logic
- integrate label listing into the main CLI application
2025-10-03 17:42:00 +01:00
Jeremiah Russell
3f50a74756 🐛 fix(list): fix label creation logic
- prevent panic when creating labels
2025-10-03 17:42:00 +01:00
Jeremiah Russell
bdf6f56f50 feat(labels): add show option to display labels
- add option to show labels when creating a new label
- only display labels if show is true
2025-10-03 17:42:00 +01:00
Jeremiah Russell
8518242302 feat(cli): add label command-line interface
- implement `LabelCli` struct with `run` method for fetching Gmail labels
- integrate `clap` for command-line argument parsing
2025-10-03 17:42:00 +01:00
Jeremiah Russell
9c9744e911 feat(cli): add query option to list command
- implement query option to filter messages by a search query
2025-10-03 17:17:43 +01:00
Jeremiah Russell
5533bff054 feat(list): add query support to list messages
- allow users to filter messages using a query string
  - implement set_query method to set the query
  - add query parameter to the Gmail API call
2025-10-03 17:17:43 +01:00
Jeremiah Russell
b450db0bfa ♻️ refactor(labels): simplify labels struct initialization
- remove get_labels method and integrate its logic into new
- remove log_label_names method and move logging to new
- initialize label_list and label_map directly in new
2025-10-03 16:42:47 +01:00
Jeremiah Russell
cef9831dd7 ♻️ refactor(labels): simplify and optimize label retrieval
- rename function name `add_label` to `add_labels`
- add the function of adding multiple labels at once
- optimize code for streamlined operation
2025-10-03 16:42:47 +01:00
Jeremiah Russell
58de6397ce feat(list): add label filtering to list command
- allow users to filter tasks by label when listing tasks
- refactor label handling to support multiple labels
2025-10-03 16:42:47 +01:00
Jeremiah Russell
f425c16422 feat(list): add label filtering to list command
- allow filtering messages by labels
- add labels argument to list subcommand
- update list command to use labels argument
2025-10-03 14:40:05 +01:00
Jeremiah Russell
f1ae06bf74 feat(list): add label filtering capability
- allow users to filter messages by label
- implement add_label method to add label IDs to the filter
- integrate label filtering into the messages_list call
2025-10-03 14:40:05 +01:00
Jeremiah Russell
2af35e7588 feat(core): add Labels struct
- introduce `Labels` struct for managing labels
- implement methods for adding, removing, and retrieving labels
2025-10-03 14:40:05 +01:00
Jeremiah Russell
af1c95e5c3 feat(labels): create labels module to manage Gmail labels
- Implemented `Labels` struct for managing Gmail labels.
- Added functions to retrieve and map labels.
- Added logging for label names.
2025-10-03 14:40:05 +01:00
Jeremiah Russell
c58d8ca339 feat(list): add pagination to list command
- add pages option to limit the number of pages to retrieve
- set default pages to 1
- modify list.run to accept the pages parameter
2025-10-03 11:03:17 +01:00
Jeremiah Russell
0799086010 feat(list): add pagination support for listing messages
- add support for listing messages across multiple pages
- introduce `pages` argument to control the number of pages to retrieve
- implement `get_messages` to fetch a page of messages using `next_page_token`
- create `log_message_subjects` to log the subject of each message on a page
- log the estimated number of messages found
2025-10-03 11:03:17 +01:00
Jeremiah Russell
c5f3ce4c47 📝 docs(logging): add future improvement note
- add a to-do comment to improve the logging filter functionality
2025-10-03 11:03:17 +01:00