Class: Karafka::Cli::Base
- Inherits:
-
Object
- Object
- Karafka::Cli::Base
- Defined in:
- lib/rimless/compatibility/karafka_1_4.rb
Overview
See: github.com/hausgold/rimless/issues/36
Karafka 1.4 is not compatible with Thor 1.3. Unfortunately they did not backported the fix on Karafka 2.0 back to 1.4, so we have to do it here with a monkey-patch.
Class Method Summary collapse
-
.bind_to(cli_class) ⇒ Object
This method will bind a given Cli command into Karafka Cli.
- .original_bind_to ⇒ Object
Class Method Details
.bind_to(cli_class) ⇒ Object
This method will bind a given Cli command into Karafka Cli. This method is a wrapper to way Thor defines its commands.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/rimless/compatibility/karafka_1_4.rb', line 20 def bind_to(cli_class) @aliases ||= [] @options ||= [] # We're late to the party here, as the +karafka/cli/console+ and # +karafka/cli/server+ files were already required and therefore they # already wrote to the +@options+ array. So we will sanitize/split # the options here to allow correct usage of the original Karafka 1.4 # +.bind_to+ method. @options.select! do |set| # We look for option sets without name (aliases), # a regular set looks like this: +[:daemon, {:default=>false, ..}]+ next true unless set.first.is_a? Hash # An alias looks like this: +[{:aliases=>"s"}]+ @aliases << set.first[:aliases].to_s # Strip this set from the options false end # Run the original Karafka 1.4 +.bind_to+ method original_bind_to(cli_class) # Configure the command aliases @aliases.each do |cmd_alias| cli_class.map cmd_alias => name.to_s end end |
.original_bind_to ⇒ Object
14 |
# File 'lib/rimless/compatibility/karafka_1_4.rb', line 14 alias original_bind_to bind_to |