Commit Graph

812 Commits

Author SHA1 Message Date
Jeremiah Russell
81157e6ce9 feat(config): add date calculation for EOL queries
- introduce calculate_for_date function to allow EOL query generation for specific dates
- add test cases for EOL query generation with different time spans
2025-10-11 09:35:12 +01:00
Jeremiah Russell
c25f925373 📝 docs(config): fix typo in EolRule::describe documentation
- fix typo "peformed" to "performed" in the documentation for the `EolRule::describe` function
2025-10-11 09:35:12 +01:00
Jeremiah Russell
8003cdd76a 🐛 fix(error): correct spelling error in error message
- fix typo "LableNotFoundInMailbox" to "LabelNotFoundInMailbox"
2025-10-11 09:35:12 +01:00
Jeremiah Russell
3986349c08 🐛 fix(processor): correct typo in error message
- fix typo "LableNotFoundInMailbox" to "LabelNotFoundInMailbox"
2025-10-11 09:35:12 +01:00
Jeremiah Russell
0bab707b02 ♻️ refactor(trash): refactor trash command
- separates list preparation and trash execution for better modularity
- improves code readability and maintainability
2025-10-11 09:35:12 +01:00
Jeremiah Russell
dbc023d761 ♻️ refactor(trash): separate trash preparation and execution
- split the run function into prepare and batch_trash
- prepare is for fetching the list, batch_trash will execute the move to trash
2025-10-11 09:35:12 +01:00
Jeremiah Russell
01b9e7677d 🐛 fix(processor): execute delete messages
- execute final delete messages only when execute flag is true
2025-10-11 09:35:12 +01:00
Jeremiah Russell
49e7ff5617 🐛 fix(message_age): correct data type for message age count
- change the data type of count from usize to i64 to allow negative values
- add parse method to parse message age from string
2025-10-11 09:35:12 +01:00
Jeremiah Russell
d48abdc3ad feat(config): add retention period to eol rule
- add retention functionality to EolRule
- parse retention string to calculate EOL deadline
- generate 'before:' query based on retention period
2025-10-11 09:35:12 +01:00
Jeremiah Russell
9fa268340f 🐛 fix(cli): correct count type in add_cli
- fix: change count type from usize to i64 to allow negative values
2025-10-11 09:35:12 +01:00
Jeremiah Russell
7cf475ce39 🐛 fix(processor): handle None query in eol_query
- fix issue where eol_query could return None, causing a panic
- handle the None case by returning an error
2025-10-11 09:35:12 +01:00
Jeremiah Russell
7ab715c848 🐛 fix(error): add error type for no query string calculated
- add `NoQueryStringCalculated` error to handle cases where a query string could not be calculated for a given rule
2025-10-11 09:35:12 +01:00
Jeremiah Russell
244158f538 🐛 fix(error): add specific error for missing label in mailbox
- add `LableNotFoundInMailbox` error to handle cases where a label is not found in the mailbox
2025-10-11 09:35:12 +01:00
Jeremiah Russell
e0d319698f feat(processor): add label existence check before processing
- check if the label exists in the mailbox before proceeding to trash or delete messages
- return an error if the label is not found, preventing further processing
2025-10-11 09:35:12 +01:00
Jeremiah Russell
c7eb6a5581 feat(processor): add trash and delete message functionality
- implements trash and delete messages functionality
- adds EolAction enum to define action type
- adds action method to the processor
2025-10-11 09:35:12 +01:00
Jeremiah Russell
1c2e2da031 feat(cli): implement trash and delete actions
- add processor struct to handle gmail api interactions
- implement trash_messages and delete_messages functions in processor
- integrate processor into run_cli to perform actions on messages
2025-10-11 09:35:12 +01:00
Jeremiah Russell
629c9d2e46 feat(processor): implement message deletion functionality
- add `delete_messages` function to delete messages based on label and query
- add execute flag to processor struct to control the execution of deletion
2025-10-11 09:35:12 +01:00
Jeremiah Russell
66edab897f feat(config): add eol query function
- add `eol_query` function to `EolRule` struct
- function returns a string with the current date formatted as "YYYY-MM-DD"
2025-10-11 09:35:12 +01:00
Jeremiah Russell
749616d5ff ♻️ refactor(config): make EolRule public
- make `EolRule` public so that it can be used in other crates
2025-10-11 09:35:12 +01:00
Jeremiah Russell
ee085db201 📦 build(deps): update dependencies in Cargo.lock
- update chrono to the latest version
- update clap to the latest version
- update clap-verbosity-flag to the latest version
- update env_logger to the latest version
- update googleapis to the latest version
- update iana-time-zone to the latest version
- update js-sys to the latest version
- update num-traits to the latest version
- update serde to the latest version
- update wasm-bindgen to the latest version
- update windows-link to the latest version
2025-10-11 09:35:12 +01:00
Jeremiah Russell
3cbe7eb4ed feat(cli): add chrono crate as a dependency
- add chrono crate for date and time handling
2025-10-11 09:35:12 +01:00
Jeremiah Russell
0d98604fe5 feat(core): introduce message processor module
- add `processor.rs` for handling message processing logic
- export `Processor` struct for external use
2025-10-11 09:35:12 +01:00
Jeremiah Russell
6ba563dacf feat(processor): implement rule processor
- implements struct `Processor` to manage rules for trashing messages
- adds method `trash_messages` to list and trash messages with labels and queries
2025-10-11 09:35:12 +01:00
Jeremiah Russell
04308dbbef 📝 docs(config): document labels function in EolRule
- add documentation for the labels function in the EolRule struct
2025-10-11 09:35:12 +01:00
Jeremiah Russell
e291eaf001 feat(eol_rule): add describe function for eol rule
- add describe function to report the action
- improve code readability
2025-10-11 09:35:12 +01:00
Jeremiah Russell
fb7154f752 feat(cli): implement rule execution logic
- add logic to iterate through labels and execute associated rules
- retrieve rules based on label and perform actions like trashing/deleting messages
- log warnings for missing rules or invalid actions
2025-10-11 09:35:12 +01:00
Jeremiah Russell
6a7c67cffc ♻️ refactor(cli): inject config into run command
- inject config into run command for better access to settings
2025-10-11 09:35:12 +01:00
Jeremiah Russell
9c237d8681 feat(eol_action): add parse method to EolAction
- implement `parse` method for `EolAction` to convert strings to `EolAction` variants
- support "trash" and "delete" strings, return `None` for others
2025-10-11 09:35:12 +01:00
Jeremiah Russell
3673c059f3 📝 docs(config): add documentation for get_rules_by_label function
- add comment to describe the purpose of the function
2025-10-11 09:35:12 +01:00
Jerus Bot
fda5f8f472 chore: update prlog for pr 2025-10-11 09:35:12 +01:00
Jeremiah Russell
a1015d9837 feat(cli): add run command to execute rules
- introduce `run` subcommand to trigger rule execution
- implement `RunCli` struct and logic for rule processing
2025-10-11 09:35:12 +01:00
Jeremiah Russell
360c4d6433 feat(cli): add run cli command
- introduce run_cli module with clap integration
- implement basic structure for future command logic
2025-10-11 09:35:12 +01:00
Jerus Bot
1c148f8d31 chore: Release cull-gmail v0.0.6 2025-10-09 21:55:06 +00:00
Jeremiah Russell
a3645a5b14 ♻️ refactor(trash): encapsulate message list operations
- move label, query, and max results setting to the message list
- simplify the `TrashCli::run` method
2025-10-09 22:45:24 +01:00
Jeremiah Russell
9baa7a93b9 ♻️ refactor(cli): improve delete command structure
- Refactor the delete command to improve code structure
- Encapsulate message list operations within the MessageList struct
- Enhance readability and maintainability
2025-10-09 22:45:24 +01:00
Jeremiah Russell
8348a88568 ♻️ refactor(trash): encapsulate message list
- remove methods from trash and expose message list directly
2025-10-09 22:45:24 +01:00
Jeremiah Russell
fad35eb474 ♻️ refactor(delete): rename struct and methods for deleting messages
- rename the `Trash` struct to `Delete` for clarity
- update method names to reflect the deleting functionality
2025-10-09 22:45:24 +01:00
Jerus Bot
0fc0ca6a54 chore: update prlog for pr 2025-10-09 22:45:24 +01:00
Jeremiah Russell
bca235a2e7 feat(cli): add delete subcommand
- introduce delete_cli module for handling message deletion
- implement delete subcommand to permanently remove messages
- refactor subcommands to use non-optional enum for improved handling
2025-10-09 22:45:24 +01:00
Jeremiah Russell
7c5b3c807f feat(cli): add delete subcommand
- introduce `delete` subcommand for deleting messages in Gmail
- implement command-line arguments for filtering and executing deletion
- add options for max results, pages, labels, and query
2025-10-09 22:45:24 +01:00
Jeremiah Russell
13a0b1496f feat(gh-release): add delete module
- introduce delete module for handling deletion operations
2025-10-09 22:45:24 +01:00
Jeremiah Russell
061048797c feat(delete): implement batch delete functionality
- add `delete.rs` module for batch deleting messages in gmail
- create `Delete` struct with methods for preparing and executing batch deletes
- implement `batch_delete` method to delete messages using gmail api
2025-10-09 22:45:24 +01:00
Jeremiah Russell
fdf623ea20 ♻️ refactor(trash): streamline label handling in trash listing
- consolidate label retrieval and addition into `add_labels` method
- improve code clarity and reduce redundancy
2025-10-09 17:03:04 +01:00
Jeremiah Russell
9e5c6e1bc8 ♻️ refactor(utils): improve config directory handling
- use Result alias for better readability
- simplify error handling with early return
2025-10-09 17:03:04 +01:00
Jeremiah Russell
ca1ab60c50 ♻️ refactor(labels): simplify error handling in labels module
- use `crate::Result` alias for `Result<T, Error>` to reduce redundancy
2025-10-09 17:03:04 +01:00
Jeremiah Russell
a114023ec8 feat(message_list): add label support
- add labels to the message list
- add label ids to the message list
- add labels from command line

🐛 fix(message_list): fix error handling

- use Result type alias instead of Error
- remove unused Error import

♻️ refactor(message_list): improve code readability

- rename add_labels to add_labels_ids
- move add_labels to Labels struct
2025-10-09 17:03:04 +01:00
Jeremiah Russell
172f0ca1bc ♻️ refactor(trash): simplify error handling and label management
- change Error to Result for consistent error handling
- remove add_labels function and refactor to async function
2025-10-09 17:03:04 +01:00
Jeremiah Russell
ca06e9290f feat(message): add label support to message listing
- add ability to filter messages by labels
- enhance message listing functionality
2025-10-09 17:03:04 +01:00
Jerus Bot
bdb3a9e457 chore: update prlog for pr 2025-10-09 17:03:04 +01:00
Jeremiah Russell
44d8eef872 feat(rules_cli): implement add command for managing retention rules
- add `add` subcommand to manage retention rules
- introduce `Period` enum for specifying time units
- implement logic to add and save new retention rules to the configuration
2025-10-09 17:03:04 +01:00