CHANGELOG.md in rake-commander-0.3.6 vs CHANGELOG.md in rake-commander-0.4.0
- old
+ new
@@ -1,175 +1,203 @@
# Change Log
+
All notable changes to this project will be documented in this file.
## TO DO
- - Think if [`binstubs`](https://github.com/rbenv/rbenv/wiki/Understanding-binstubs) would offer a neater patch right on `Rake::Application#init`
- - `option_reopen` -> upsert should be optional (add `upsert: false` as default an raise missing option if not found)
- - The error on missing short pops up where it's not clear the short was missed in the option_reopen call.
- - Option results
- - Include the symbol name keys (configurable). Note that dash will be replaced by underscore.
- - Type Coercions
- - Add a way to define/redefine a set and use them.
- - Add more supported type_coercions as native to the gem (i.e. `Symbol`)
- - Add support [for `ActiveRecord::Enum`](https://apidock.com/rails/ActiveRecord/Enum)
- - Option definitions
- - Order: `where: [:tail, :top]` and `[after, before]: :option_name`
- - Configuration: allow to define option override behaviour and whether it should trigger an exception
- - Error handlers
- - See if it would be possible to parse all the valid options so we get all the valid results before some error is raised. Although this can be achieved with `OptionParser#order!`, it destroys switches; which would require to give it two parsing shots whenever there is an error.
- - It should be ensured that the parsed options results object is remains the same.
- - Think about options that modify other options. Technically this should be hold only at behaviour level
- - This would allow to make the order of the options irrelevant when it comes to modify error handling behaviour via options themselves.
- - Rake task parameters (see: https://stackoverflow.com/a/825832/4352306 & https://stackoverflow.com/a/825832/4352306)
- - Add `enhance` functionality (when a task is invoked it runs before it; declared with `task` as well)
- - Add `no_short` option (which should give the result of that option with the option name key)
- - Add `on_option` handler at instance level, so within a `task` definition, we can decide certain things, such as if the functionality should be active when the `self.class` does not have that option.
- * This is specially useful to be able to extend through inheritance chain, where we extend `task` (rather than redefining it), but we don't want options we removed (with `option_remove`) to throw unexpected results.
- * Example: `on_option(:t, defined: true) {|option| do-stuff}` <- block to be called only if the option is defined in the class (alternative: `defined: :only`)
- * Example: `on_option(:t, defined: false) {|option| do-stuff}` <- block to be called regardless the option exists (alternative: `defined: :ignore`)
- * Example: `on_options(:t, :s, present: true) {|options| do-stuff}` <- block to be called only when the option `:t` and `:s` are both present in the parsed `options` result.
- - Once this has been done, think about it being a hash-alike object with methods for the option names (i.e. `options.debug?`)
+- Think if [`binstubs`](https://github.com/rbenv/rbenv/wiki/Understanding-binstubs) would offer a neater patch right on `Rake::Application#init`
+- `option_reopen` -> upsert should be optional (add `upsert: false` as default an raise missing option if not found)
+ - The error on missing short pops up where it's not clear the short was missed in the option_reopen call.
+- Option results
+ - Include the symbol name keys (configurable). Note that dash will be replaced by underscore.
+- Type Coercions
+ - Add a way to define/redefine a set and use them.
+ - Add more supported type_coercions as native to the gem (i.e. `Symbol`)
+ - Add support [for `ActiveRecord::Enum`](https://apidock.com/rails/ActiveRecord/Enum)
+- Option definitions
+ - Order: `where: [:tail, :top]` and `[after, before]: :option_name`
+ - Configuration: allow to define option override behaviour and whether it should trigger an exception
+- Error handlers
+ - See if it would be possible to parse all the valid options so we get all the valid results before some error is raised. Although this can be achieved with `OptionParser#order!`, it destroys switches; which would require to give it two parsing shots whenever there is an error.
+ - It should be ensured that the parsed options results object is remains the same.
+ - Think about options that modify other options. Technically this should be hold only at behaviour level
+ - This would allow to make the order of the options irrelevant when it comes to modify error handling behaviour via options themselves.
+- Rake task parameters (see: <https://stackoverflow.com/a/825832/4352306> & <https://stackoverflow.com/a/825832/4352306>)
+- Add `enhance` functionality (when a task is invoked it runs before it; declared with `task` as well)
+- Add `no_short` option (which should give the result of that option with the option name key)
+- Add `on_option` handler at instance level, so within a `task` definition, we can decide certain things, such as if the functionality should be active when the `self.class` does not have that option.
+ - This is specially useful to be able to extend through inheritance chain, where we extend `task` (rather than redefining it), but we don't want options we removed (with `option_remove`) to throw unexpected results.
+ - Example: `on_option(:t, defined: true) {|option| do-stuff}` <- block to be called only if the option is defined in the class (alternative: `defined: :only`)
+ - Example: `on_option(:t, defined: false) {|option| do-stuff}` <- block to be called regardless the option exists (alternative: `defined: :ignore`)
+ - Example: `on_options(:t, :s, present: true) {|options| do-stuff}` <- block to be called only when the option `:t` and `:s` are both present in the parsed `options` result.
+ - Once this has been done, think about it being a hash-alike object with methods for the option names (i.e. `options.debug?`)
-## [0.3.7] - 2023-05-xx
+## [0.4.1] - 2023-08-xx
### Added
+
### Fixed
+
### Changed
+## [0.4.0] - 2023-08-01
+
+### Changed
+
+- require `ruby 3`
+
## [0.3.6] - 2023-05-15
### Fixed
- - `RakeCommander::Options` inheritance of options in `options_hash` was NOT doing a `dup`
+- `RakeCommander::Options` inheritance of options in `options_hash` was NOT doing a `dup`
+
### Changed
- - `RakeCommander::Options#options_hash` made public method
+- `RakeCommander::Options#options_hash` made public method
+
## [0.3.5] - 2023-05-08
### Fixed
- - `RakeCommander::Options#option_reopen` using name to reopen should not redefine if passed as Symbol.
+- `RakeCommander::Options#option_reopen` using name to reopen should not redefine if passed as Symbol.
+
## [0.3.4] - 2023-05-08
### Fixed
- - `RakeCommand::Option#name` boolean form (`[no-]`) should not be part of the name.
+- `RakeCommand::Option#name` boolean form (`[no-]`) should not be part of the name.
+
### Changed
- - Slight refactor to the patch
+- Slight refactor to the patch
+
## [0.3.3] - 2023-05-01
### Changed
- - Replaced the patching method, so the `Rake` application doesn't need re-launch.
+- Replaced the patching method, so the `Rake` application doesn't need re-launch.
+
## [0.2.12] - 2023-05-01
### Fixed
- - `RakeCommander::Option#type_coercion` wasn't correctly captured.
+- `RakeCommander::Option#type_coercion` wasn't correctly captured.
## [0.2.11] - 2023-05-01
### Fixed
- - When `RakeCommander::Option#type_coercion` is `FalseClass`, it should reverse the result.
+- When `RakeCommander::Option#type_coercion` is `FalseClass`, it should reverse the result.
+
## [0.2.10] - 2023-05-01
### Fixed
- - `RakeCommander::Options` clean `options_hash` inheritance.
+- `RakeCommander::Options` clean `options_hash` inheritance.
## [0.2.7] - 2023-05-01
### Fixed
- - `RakeCommander::Option#desc` when fetching from other, should not fetch array but single value.
+- `RakeCommander::Option#desc` when fetching from other, should not fetch array but single value.
+
## [0.2.6] - 2023-05-01
### Changed
- - `RakeCommander::Option` configure_other should only apply when the instance vars are not defined.
+- `RakeCommander::Option` configure_other should only apply when the instance vars are not defined.
+
## [0.2.5] - 2023-05-01
### Changed
- - `RakeCommander::Base::ClassInheritable#inherited_class_value` now expects a reference to the subclass
+- `RakeCommander::Base::ClassInheritable#inherited_class_value` now expects a reference to the subclass
+
## [0.2.4] - 2023-04-30
### Added
- - `RakeCommander::Options`
- - `::option_get` retrieves an option by name or short, may it exist.
- - `::option?` to check if an opion exists.
+- `RakeCommander::Options`
+ - `::option_get` retrieves an option by name or short, may it exist.
+ - `::option?` to check if an opion exists.
+
## [0.2.3] - 2023-04-29
### Added
- - Include Symbol option names in the parsed option results.
+- Include Symbol option names in the parsed option results.
+
## [0.2.2] - 2023-04-29
### Fixed
- - Typo in `RakeCommander::Base::ClassAutoLoader`
+- Typo in `RakeCommander::Base::ClassAutoLoader`
+
## [0.2.1] - 2023-04-29
### Fixed
- - `RakeCommander::Option` type coercion was not being inherited
- - Typo on `coertion`: writes `coercion`
+- `RakeCommander::Option` type coercion was not being inherited
+- Typo on `coertion`: writes `coercion`
## [0.2.0] - 2023-04-28
### Added
- - Better support for `RakeCommander::Options::Set`
- - `RakeCommander::Options::options_use` accepts it as a parameter.
- - Added `override` parameter to specify if this should override clashed option names.
- - `RakeCommander::Options::class_resolver` to define the `RakeCommander::Option` class.
- - Serves the purpose to ease class extension through inheritance.
- - Ability to reopen options without changing the order.
- - `RakeCommander::Options::option_reopen` which upserts (adds if not existing).
- - New parameter `reopen` to `RakeCommander::Options::option` (redirects to the above method).
- - Automatic option shortcuts (`implicit_shorts`) show in help and only when applicable.
- - These are added automatically by `OptionParser`
- - `OptionParser` leftovers trigger an error by default.
- - This behaviour can be disabled or modified via callback/block by using `RakeCommander::Options:Error::error_on_leftovers`.
- - Description auto **multi-line**
- - Currently based on `RakeCommander::Options::Description::DESC_MAX_LENGTH`
- - `RakeCommander::Options#remove_option`
- - `RakeCommander::Options::Error::Base` and children can be raised using different methods (see `RakeCommander::Options::Error` for examples).
- - The **task** `name` that raised the error is included in the message.
- - `RakeCommander::Options::Error::Handling` which provides **configurability** around actions on specific option errors with a default to a general options parsing error.
+- Better support for `RakeCommander::Options::Set`
+ - `RakeCommander::Options::options_use` accepts it as a parameter.
+ - Added `override` parameter to specify if this should override clashed option names.
+- `RakeCommander::Options::class_resolver` to define the `RakeCommander::Option` class.
+ - Serves the purpose to ease class extension through inheritance.
+- Ability to reopen options without changing the order.
+ - `RakeCommander::Options::option_reopen` which upserts (adds if not existing).
+ - New parameter `reopen` to `RakeCommander::Options::option` (redirects to the above method).
+- Automatic option shortcuts (`implicit_shorts`) show in help and only when applicable.
+ - These are added automatically by `OptionParser`
+- `OptionParser` leftovers trigger an error by default.
+ - This behaviour can be disabled or modified via callback/block by using `RakeCommander::Options:Error::error_on_leftovers`.
+- Description auto **multi-line**
+ - Currently based on `RakeCommander::Options::Description::DESC_MAX_LENGTH`
+- `RakeCommander::Options#remove_option`
+- `RakeCommander::Options::Error::Base` and children can be raised using different methods (see `RakeCommander::Options::Error` for examples).
+ - The **task** `name` that raised the error is included in the message.
+- `RakeCommander::Options::Error::Handling` which provides **configurability** around actions on specific option errors with a default to a general options parsing error.
+
### Fixed
- - `RakeCommander::Base::ClassAutoLoader`
- - Register excluded child classes (singleton classes) into their own property,
- rather than in the `autoloaded_children` (they are not autoloaded).
- - Missing `rake` dependency in gemspec file.
- - Boolean switch detection (pre-parse arguments) and parsing
- - It adds support for boolean option names such as `--[no-]verbose`
- - Error messaging. There were missing cases, specially with implicit short options.
- - `RakeCommander::Options`
- - `#option_reopen` fixed
- - **Inheritance fixed**
+- `RakeCommander::Base::ClassAutoLoader`
+ - Register excluded child classes (singleton classes) into their own property,
+ rather than in the `autoloaded_children` (they are not autoloaded).
+- Missing `rake` dependency in gemspec file.
+- Boolean switch detection (pre-parse arguments) and parsing
+ - It adds support for boolean option names such as `--[no-]verbose`
+- Error messaging. There were missing cases, specially with implicit short options.
+- `RakeCommander::Options`
+ - `#option_reopen` fixed
+ - **Inheritance fixed**
+
### Changed
- - Development: examples invokation via `Rake`
- - Refactored `RakeCommander::Options` to acquire functionality through extension.
- - `attr_inheritable` and `inheritable_class_var` are the new names of previous methods
- - Behaviour has been changed, so you define if it should `dup` the variables, and you can pass a `block` to do the `dup` yourself. They won **NOT** `freeze` anymore, as we are mostly working at class level.
+- Development: examples invokation via `Rake`
+- Refactored `RakeCommander::Options` to acquire functionality through extension.
+- `attr_inheritable` and `inheritable_class_var` are the new names of previous methods
+ - Behaviour has been changed, so you define if it should `dup` the variables, and you can pass a `block` to do the `dup` yourself. They won **NOT** `freeze` anymore, as we are mostly working at class level.
+
## [0.1.4] - 2023-04-20
### Fixed
- - `rubocop` offenders
- - Added implicity `exit(0)` when wrapping the `task` block
+- `rubocop` offenders
+- Added implicity `exit(0)` when wrapping the `task` block
+
## [0.1.3] - 2023-04-20
### Fixed
- - Reference to repo and gem
+- Reference to repo and gem
+
## [0.1.2] - 2023-04-19
### Added
- - First commit
+
+- First commit