summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2019-12-13 20:41:13 +0100
committerDavid Rodríguez <deivid.rodriguez@riseup.net>2019-12-13 20:41:13 +0100
commitdeb91d91087ed6a320c0a9969ea1d63ee363ee76 (patch)
tree069aa478fc08ce6ef01b36586e1b2d2fb6ae7335
parent3bd06e7a8bb427945b9a0c7c108c02bd96d7c1c9 (diff)
downloadbundler-vendor/thor_1_0.tar.gz
Vendor thor 1.0.0vendor/thor_1_0
-rw-r--r--lib/bundler/vendor/thor/lib/thor/base.rb22
-rw-r--r--lib/bundler/vendor/thor/lib/thor/nested_context.rb29
2 files changed, 43 insertions, 8 deletions
diff --git a/lib/bundler/vendor/thor/lib/thor/base.rb b/lib/bundler/vendor/thor/lib/thor/base.rb
index bd2ebb6156..9ba5243378 100644
--- a/lib/bundler/vendor/thor/lib/thor/base.rb
+++ b/lib/bundler/vendor/thor/lib/thor/base.rb
@@ -2,6 +2,7 @@ require_relative "command"
require_relative "core_ext/hash_with_indifferent_access"
require_relative "error"
require_relative "invocation"
+require_relative "nested_context"
require_relative "parser"
require_relative "shell"
require_relative "line_editor"
@@ -418,14 +419,20 @@ class Bundler::Thor
# remove_command :this_is_not_a_command
# end
#
- def no_commands
- @no_commands = true
- yield
- ensure
- @no_commands = false
+ def no_commands(&block)
+ no_commands_context.enter(&block)
end
+
alias_method :no_tasks, :no_commands
+ def no_commands_context
+ @no_commands_context ||= NestedContext.new
+ end
+
+ def no_commands?
+ no_commands_context.entered?
+ end
+
# Sets the namespace for the Bundler::Thor or Bundler::Thor::Group class. By default the
# namespace is retrieved from the class name. If your Bundler::Thor class is named
# Scripts::MyScript, the help method, for example, will be called as:
@@ -607,7 +614,7 @@ class Bundler::Thor
def inherited(klass)
super(klass)
Bundler::Thor::Base.register_klass_file(klass)
- klass.instance_variable_set(:@no_commands, false)
+ klass.instance_variable_set(:@no_commands, 0)
end
# Fire this callback whenever a method is added. Added methods are
@@ -624,8 +631,7 @@ class Bundler::Thor
# Return if it's not a public instance method
return unless public_method_defined?(meth.to_sym)
- @no_commands ||= false
- return if @no_commands || !create_command(meth)
+ return if no_commands? || !create_command(meth)
is_thor_reserved_word?(meth, :command)
Bundler::Thor::Base.register_klass_file(self)
diff --git a/lib/bundler/vendor/thor/lib/thor/nested_context.rb b/lib/bundler/vendor/thor/lib/thor/nested_context.rb
new file mode 100644
index 0000000000..fd36b9d43f
--- /dev/null
+++ b/lib/bundler/vendor/thor/lib/thor/nested_context.rb
@@ -0,0 +1,29 @@
+class Bundler::Thor
+ class NestedContext
+ def initialize
+ @depth = 0
+ end
+
+ def enter
+ push
+
+ yield
+ ensure
+ pop
+ end
+
+ def entered?
+ @depth > 0
+ end
+
+ private
+
+ def push
+ @depth += 1
+ end
+
+ def pop
+ @depth -= 1
+ end
+ end
+end