- Support Symfony 7
- Avoid infinite loop in \Consolidation\AnnotatedCommand\Parser\CommandInfo::getName (#306)
- Inject command metadata: make AnnotationData and FormatterOptions available (#301)
- Only call setHidden() if value is true. (#299)
- Fix bug with simple options with dashes in their names. (#295)
- Add new public ->addOption() method (#294)
- Attributes - Topic needs path (#293)
- More robust hook attribute, and misc (#291)
- Add HookSelector attribute and adjust Hook attribute accordingly (#290)
- Allow for just one param to be passed in Help and Topics Attributes (#289)
- PHP 8.2 fixes
- Allow command help and descriptions to be defined via docblock comments (#281)
- Fix hidden via Attribute (#283)
- Fix command completion (#282)
- Use Attributes to set suggestedValues for arg/option completion (#275)
- Default value and therefore data type of parameter-defined cli options was being dropped (#280)
- Make nullable properties in Attributes actually nullable (#278)
- Only ignore commands in parent classes if flag is set (reverts backwards-compatibility break) (#277)
- Add support for command completion (#274)
- Stop loading commands from inherited classes (#273)
- PHP 8.2 compatibility: dynamic properties are deprecated (#271)
- No functional change; new release to fix false positives in b/c check caused by lockfile problem.
- Allow psr/log ^3
- Check the type of the reflection object before attempting to call isBuiltin(). (#265)
- Do not pass null to Symfony Command methods (#262)
- CommandResult inheritance (#260)
- PHP 8.1
- Symfony 6 / Symfony 5.2 compatibility
- Make addUsageOrExample() public
- Add support for providing command information via php8 Attributes. (#239)
- Back out change from 4.3.2. Will restore in 4.4.0, but with a switch that defaults to "off" (backwards-compatible).
- Less parsing by ignoring Traits and IO.php (for Drush) (#237)
- Fix bc break in 4.3.0. (#232)
- Allow options to be passed in as regular method parameters. (#224)
- PHP 8
- Add ability to ignore methods using regular expressions. (#212)
- PHP 8 / Composer 2 support (#210)
- Add @ignored-command annotation. (#211)
- Address deprecation of ReflectionType::getClass() (#209)
- Give command handlers the ability to save and restore their state (#208)
- Do not inject $input and $output into the command instance unless it supports saving and restoring state.
DEPRECATED RELEASE. Do not use.
- Inject $input and $output into the command instance if it is set up to receive them. (#207)
- Fix bugs with Symfony 5. (#204)
- Test with PHP 7.4.
- Compatible with the 2.x branch, but removes support for old PHP versions and requires Symfony 4.
- Allow annotated args and options to specify their default values in their descriptions. (#186)
- Fix handling of old caches from 2.11.1 that introduced upgrade errors.
- Cache injected classes (#182)
- Make injection of InputInterface / OutputInterface general-purpose (#179)
- Fix commands that have a @param annotation for their InputInterface/OutputInterface params (#176)
- Add stdin handler convenience class
- Add setter to AnnotationData to suppliment existing array acces
- Update to Composer Test Scenarios 3
- Add a new data type, CommandResult (#167)
- Improve commandfile discovery for extensions installed via Composer. (#156)
- Add dependencies.yml for dependencies.io
- Fix warning in AnnotatedCommandFactory when getCommandInfoListFromCache called with null.
- Use g1a/composer-test-scenarios for better PHP version matrix testing.
- BUGFIX: Do not shift off the command name unless it is there. (#139)
- Use test scenarios to test multiple versions of Symfony. (#136, #137)
- Allow Symfony 4 components.
- Add hook methods to allow Symfony command events to be added directly to the hook manager, givig better control of hook order. (#131)
- Remove phpdocumentor/reflection-docblock in favor of using a bespoke parser (#130)
- Add support for options with a default value of 'true' (#119)
- BUGFIX: Improve handling of options with optional values, which previously was not working correctly. (#118)
- Reverts to contents of the 2.4.13 release.
- BACKED OUT. These releases accidentally introduced breaking changes.
- Add a followLinks() method (#108)
- BUGFIX: Allow annotated commands to directly use InputInterface and OutputInterface (#106)
- Back out #102: do not change behavior of word wrap based on STDOUT redirection.
- Add a method CommandProcessor::setPassExceptions() to allow applicationsto prevent the command processor from catching exceptions thrown by command methods and hooks. (#103)
- Automatically disable wordwrap when the terminal is not connected to STDOUT (#102)
- Allow multiple annotations with the same key. These are returned as a csv, or, alternately, can be accessed as an array via the new accessor.
- Unprotect two methods for benefit of Drush help. (#99)
- BUGFIX: Remove symfony/console pin (#100)
- Avoid wrapping help text (#93)
- Pin symfony/console to version < 3.2.5 (#94)
- Add getExampleUsages() to AnnotatedCommand. (#92)
- Ensure that placeholder entries are written into the commandfile cache. (#86)
- BUGFIX: Avoid rewriting the command cache unless something has changed.
- BUGFIX: Ensure that the default value of options are correctly cached.
- Add SimpleCacheInterface as a documentation interface (not enforced).
- Support array options: multiple options on the commandline may be passed in to options array as an array of values.
- Add php 7.1 to the test matrix.
- Automatically rebuild cached commandfile data when commandfile changes.
- Provide path to command file in AnnotationData objects.
- Bugfix: Add dynamic options when user runs '--help my:command' (previously, only 'help my:command' worked).
- Bugfix: Include description of last parameter in help (was omitted if no options present)
- Add Windows testing with Appveyor
- Add a command info cache to improve performance of applications with many commands
- Bugfix: Allow trailing backslashes in namespaces in CommandFileDiscovery
- Bugfix: Rename @topic to @topics
- Support custom events
- Add xml and json output for replacement help command. Text / html format for replacement help command not available yet.
- Add support for output formatter wordwrapping
- Fix version requirement for output-formatters in composer.json
- Use output-formatters ~3
- Move php_codesniffer back to require-dev (moved to require by mistake)
- Breaking Hooks with no command name now apply to all commands defined in the same class. This is a change of behavior from the 1.x branch, where hooks with no command name applied to a command with the same method name in a different class.
- Breaking The interfaces ValidatorInterface, ProcessResultInterface and AlterResultInterface have been updated to be passed a CommandData object, which contains an Input and Output object, plus the AnnotationData.
- Breaking The Symfony Command Event hook has been renamed to COMMAND_EVENT. There is a new COMMAND hook that behaves like the existing Drush command hook (i.e. the post-command event is called after the primary command method runs).
- Add an accessor function AnnotatedCommandFactory::setIncludeAllPublicMethods() to control whether all public methods of a command class, or only those with a @command annotation will be treated as commands. Default remains to treat all public methods as commands. The parameters to AnnotatedCommandFactory::createCommandsFromClass() and AnnotatedCommandFactory::createCommandsFromClassInfo() still behave the same way, but are deprecated. If omitted, the value set by the accessor will be used.
- @option and @usage annotations provided with @hook methods will be added to the help text of the command they hook. This should be done if a hook needs to add a new option, e.g. to control the behavior of the hook.
- @option annotations can now be either
@option type $name description
, or just@option name description
. @hook option
can be used to programatically add options to a command.- A CommandInfoAltererInterface can be added via AnnotatedCommandFactory::addCommandInfoAlterer(); it will be given the opportunity to adjust every CommandInfo object parsed from a command file prior to the creation of commands.
- AnnotatedCommandFactory::setIncludeAllPublicMethods(false) may be used to require methods to be annotated with @commnad in order to be considered commands. This is in preference to the existing parameters of various command-creation methods of AnnotatedCommandFactory, which are now all deprecated in favor of this setter function.
- If a --field option is given, it will also force the output format to 'string'.
- Setter methods more consistently return $this.
- Removed PassThroughArgsInput. This class was unnecessary.
- Add basic annotation hook capability, to allow hook functions to be attached to commands with arbitrary annotations.
- Add ComandFileDiscovery::setSearchDepth(). The search depth applies to each search location, unless there are no search locations, in which case it applies to the base directory.
- Support both the 2.x and 3.x versions of phpdocumentor/reflection-docblock.
- Support php 5.4.
- Bug Do not allow an @param docblock comment for the options to override the meaning of the options.
- Introduce AnnotatedCommandFactory::createSelectedCommandsFromClassInfo() method.
- First stable release.