- define struct for retention policy with message age and label generation
- add methods to create, access, and modify retention policies
- implement default values, cloning, equality, and debug formatting
- introduces `MessageAge` enum to represent retention periods
- supports days, weeks, months, and years
- adds parsing and formatting for `MessageAge` instances
- includes label generation for categorization
- introduce `Retention` struct for managing message retention policies
- add `new` constructor with age and generate_label options
- implement getter methods for age and generate_label
- add `set_generate_label` to control label generation dynamically
- provide examples and usage documentation
- include comprehensive unit tests
📝 docs(retention): document retention policy configuration
- provide detailed documentation for `Retention` struct
- include usage examples for creating and configuring retention policies
- explain the purpose of the `age` and `generate_label` fields
- describe the behavior of `set_generate_label` method
- update code examples for better clarity and correctness
- include example of setting up client with OAuth credentials
- add example of client configuration with file paths
- fix minor formatting issues and broken links
- Renamed `docs/readme/lib.md` to `docs/lib/lib.md` for better file structure.
- Updated code blocks to remove `path=null start=null` for cleaner rendering.
- Add a default subcommand that executes rules based on configuration.
- Load rules and configuration to determine execution behavior.
- Implement dry run functionality to prevent unintended actions.
- change ConfigRoot to use RootBase enum for different root types (Crate, Home, Root, None)
- add full_path method to resolve the full path based on RootBase and path
- update tests to use full_path to string conversion for assertions
- introduce ConfigBuilder struct for constructing ClientConfig instances
- add methods to ConfigBuilder for setting various configuration parameters
- implement a build method to create the ClientConfig instance
- add a default implementation for ConfigBuilder
- enhance ClientConfig with persist_path for token persistence
- update ClientConfig::new_from_configuration to use config_root.full_path()
- add ClientConfig::persist_path() to report the full path to the file to persist tokens
- introduce regex-based parsing for config root strings
- support 'h', 'r', and 'c' prefixes for home, root, and crate paths
- add tests for parsing different config root types
- this commit introduces the lazy-regex crate to improve regex performance
- lazy-regex allows for the definition of static regexes that are compiled at compile time
- introduce ConfigRoot enum to represent different configuration file locations
- implement Display trait for ConfigRoot to provide string representation
- add parse method to determine ConfigRoot type based on prefix (h, r, c)
- adds `ClientConfig` struct for managing Gmail client settings
- supports loading credentials from environment variables or a JSON file
- provides methods to access the application secret and configuration root
- load configuration from a file
- use config crate for config loading
- allow overriding config with environment variables
- set default credential path
- fix error handling for config loading