- Fix thor when
thor/base
andthor/group
are required withoutthor.rb
. - Handle relative source path in
create_link
.
-
Drop support to Ruby 1.8 and 1.9.
-
Deprecate relying on default
exit_on_failure?
. In preparation to make Thor commands exit when there is a failure we are deprecating defining a command without defining what behavior is expected when there is a failure.To fix the deprecation you need to define a class method called
exit_on_failure?
returningfalse
if you want the current behavior ortrue
if you want the new behavior. -
Deprecate defining an option with the default value using a different type as defined in the option.
-
Allow options to be repeatable. See #674.
- Support old versions of
did_you_mean
.
- Fix
did_you_mean
support.
- Support new versions of ERB.
- Fix
check_unknown_options!
to not check the content that was not parsed, i.e. after a--
or after the first unknown withstop_on_unknown_option!
- Add
did_you_mean
support.
-
Add
check_default_type!
to check if the default value of an option matches the defined type. It removes the warning on usage and gives the command authors the possibility to check for programming errors. -
Add
disable_required_check!
to disable check for required options in some commands. It is a substitute ofdisable_class_options
that was not working as intended. -
Add
inject_into_module
.
- Rename
Thor::Base#thor_reserved_word?
to#is_thor_reserved_word?
- Output a warning instead of raising an exception when a default option value doesn't match its specified type
- Fix bug with handling of colors passed to
ask
(and methods likeyes?
andno?
which it underpins) - Allow numeric arguments to be negative
- Ensure that default option values are of the specified type (e.g. you can't specify
"foo"
as the default for a numeric option), but make symbols and strings interchangeable - Add
Thor::Shell::Basic#indent
method for intending output - Fix
remove_command
for an inherited command (see #451) - Allow hash arguments to only have each key provided once (see #455)
- Allow commands to disable class options, for instance for "help" commands (see #363)
- Do not generate a negative option (
--no-no-foo
) for already negative boolean options (--no-foo
) - Improve compatibility of
Thor::CoreExt::HashWithIndifferentAccess
with Ruby standard libraryHash
- Allow specifying a custom binding for template evaluation (e.g.
#key?
and#fetch
) - Fix support for subcommand-specific "help"s
- Use a string buffer when handling ERB for Ruby 2.3 compatibility
- Update dependencies
- Fix
say
non-String break regression
- Add support for a default to #ask
- Avoid @namespace not initialized warning
- Avoid private attribute? warning
- Fix initializing with unknown options
- Loosen required_rubygems_version for compatibility with Ubuntu 10.04
- Shell#ask: support a noecho option for stdin
- Shell#ask: change API to be :echo => false
- Display a message without a stack trace for ambiguous commands
- Make say and say_status thread safe
- Dependency for console io version check
- Alias --help to help on subcommands
- Use mime-types 1.x for Ruby 1.8.7 compatibility for Ruby 1.8 only
- Accept .tt files as templates
- Check if numeric value is in enum
- Use Readline for user input
- Fix dispatching of subcommands (concerning :help and *args)
- Fix warnings when running specs with
$VERBOSE = true
- Make subcommand help more consistent
- Make the current command chain accessible in command
- Revert regressions found in 0.18.0
- Remove rake2thor
- Only display colors if output medium supports colors
- Pass parent_options to subcommands
- Fix non-dash-prefixed aliases
- Make error messages more helpful
- Rename "task" to "command"
- Add the method to allow for custom package name
- Add better support for tasks that accept arbitrary additional arguments (e.g. things like
bundle exec
) - Add #stop_on_unknown_option!
- Only strip from stdin.gets if it wasn't ended with EOF
- Allow "send" as a task name
- Allow passing options as arguments after "--"
- Autoload Thor::Group
- Add enum to string arguments
- Fix regression when destination root contains reserved regexp characters
- Support strict_args_position! for backwards compatibility
- Escape Dir glob characters in paths
- Added print_in_columns
- Exposed terminal_width as a public API
- Fix Ruby 1.8 truncation bug with unicode chars
- Fix shell delegate methods to pass their block
- Don't output trailing spaces when printing the last column in a table
- Alias method_options to options
- Refactor say to allow multiple colors
- Exposed error as a public API
- Exposed file_collision as a public API
- Exposed print_wrapped as a public API
- Exposed set_color as a public API
- Fix number-formatting bugs in print_table
- Fix "indent" typo in print_table
- Fix Errno::EPIPE when piping tasks to
head
- More friendly error messages
- Added CreateLink class and #link_file method
- Made Thor::Actions#run use system as default method for system calls
- Allow use of private methods from superclass as tasks
- Added mute(&block) method which allows to run block without any output
- Removed config[:pretend]
- Enabled underscores for command line switches
- Added Thor::Base.basename which is used by both Thor.banner and Thor::Group.banner
- Deprecated invoke() without arguments
- Added :only and :except to check_unknown_options
- Added :lazy_default which is only triggered if a switch is given
- Added Thor::Shell::HTML
- Added subcommands
- Decoupled Thor::Group and Thor, so it's easier to vendor
- Added check_unknown_options! in case you want error messages to be raised in valid switches
- run(command) should return the results of command
- Methods generated by attr_* are automatically not marked as tasks
- inject_into_file does not add the same content twice, unless :force is set
- Removed rr in favor to rspec mock framework
- Improved output for thor -T
- [#7] Do not force white color on status
- [#8] Yield a block with the filename on directory
-
Added a rake compatibility layer. It allows you to use spec and rdoc tasks on Thor classes.
-
BACKWARDS INCOMPATIBLE: aliases are not generated automatically anymore since it may cause wrong behavior in the invocation system.
-
thor help now show information about any class/task. All those calls are possible:
thor help describe thor help describe:amazing
Or even with default namespaces:
thor help :spec
-
Thor::Runner now invokes the default task if none is supplied:
thor describe # invokes the default task, usually help
-
Thor::Runner now works with mappings:
thor describe -h
-
Added some documentation and code refactoring.
- Fixed some tiny issues that were introduced lately.
- Setting global method options on the initialize method works as expected: All other tasks will accept these global options in addition to their own.
- Added 'group' notion to Thor task sets (class Thor); by default all tasks are in the 'standard' group. Running 'thor -T' will only show the standard tasks - adding --all will show all tasks. You can also filter on a specific group using the --group option: thor -T --group advanced
- Generic improvements
- Improve Windows compatibility
- Update (incorrect) README and task.thor sample file
- Options hash is now frozen (once returned)
- Allow magic predicates on options object. For instance:
options.force?
- Add support for :numeric type
- BACKWARDS INCOMPATIBLE: Refactor Thor::Options. You cannot access shorthand forms in options hash anymore (for instance, options[:f])
- Allow specifying optional args with default values: method_options(:user => "mislav")
- Don't write options for nil or false values. This allows, for example, turning color off when running specs.
- Exit with the status of the spec command to help CI stuff out some.
- Try to add Windows compatibility.
- BACKWARDS INCOMPATIBLE: options hash is now accessed as a property in your class and is not passed as last argument anymore
- Allow options at the beginning of the argument list as well as the end.
- Make options available with symbol keys in addition to string keys.
- Allow true to be passed to Thor#method_options to denote a boolean option.
- If loading a thor file fails, don't give up, just print a warning and keep going.
- Make sure that we re-raise errors if they happened further down the pipe than we care about.
- Only delete the old file on updating when the installation of the new one is a success
- Make it Ruby 1.8.5 compatible.
- Don't raise an error if a boolean switch is defined multiple times.
- Thor::Options now doesn't parse through things that look like options but aren't.
- Add URI detection to install task, and make sure we don't append ".thor" to URIs
- Add rake2thor to the gem binfiles.
- Make sure local Thorfiles override system-wide ones.