rails / thor

Thor is a toolkit for building powerful command-line interfaces.
http://whatisthor.com/
MIT License
5.12k stars 553 forks source link

Commands that contain hyphens cannot be executed #868

Closed naomichi-y closed 1 month ago

naomichi-y commented 8 months ago

In 1.3.0, it seems that the command cannot be executed if the command name includes hyphen.

class Test < Thor
  desc "foo-bar", "an example task"
  def foo_bar
    puts "I'm a thor task!"
  end
end
$ bundle exec thor test:foo-bar
Commands:
  thor test:foo-bar         # an example task
  thor test:help [COMMAND]  # Describe available commands or one specific command

Up to 1.2.2, the command was executed as intended.

$ bundle exec thor test:foo-bar
I'm a thor task!

Is this a feature change? Looking at the change history, I can't find any related issues.

naomichi-y commented 8 months ago

This is probably caused by Thor::Base.subclasses.detect not finding foo-bar. By converting to command.tr('-', '_'), the behavior is the same as up to 1.2.2.

https://github.com/rails/thor/pull/754/files#diff-5393308169879c36b527bdc9a24a37e0e3939ad5e4a7b359d327645a7f5a714cR136

rafaelfranca commented 7 months ago

Not intended. Can you please open a PR?

takmar commented 6 months ago

@rafaelfranca @naomichi-y Hi. I fixed the issue so I created PR.

In addition to this problem, it seems that the alias method also did not work properly.