You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2018/01/19 13:24:45 UTC
[11/31] hbase git commit: HBASE-19770 Separate command return values
from interactive shells
HBASE-19770 Separate command return values from interactive shells
Uses a new option to the shell to specify that return values are
unwanted instead of overloading the interactive option. Enable
return_values when the shell is non-interactive.
Signed-off-by: Apekshit Sharma <ap...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/7224546b
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/7224546b
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/7224546b
Branch: refs/heads/HBASE-19064
Commit: 7224546b1ed99faf41ecef82043971c7d44a5836
Parents: a3c98b2
Author: Josh Elser <el...@apache.org>
Authored: Thu Jan 11 14:47:13 2018 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Wed Jan 17 13:14:46 2018 -0500
----------------------------------------------------------------------
bin/hirb.rb | 8 +++++++-
hbase-shell/src/main/ruby/shell.rb | 18 +++++++++---------
.../src/test/ruby/shell/noninteractive_test.rb | 2 +-
hbase-shell/src/test/ruby/test_helper.rb | 2 +-
4 files changed, 18 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/7224546b/bin/hirb.rb
----------------------------------------------------------------------
diff --git a/bin/hirb.rb b/bin/hirb.rb
index 35895f8..6e92d51 100644
--- a/bin/hirb.rb
+++ b/bin/hirb.rb
@@ -59,12 +59,15 @@ Usage: shell [OPTIONS] [SCRIPTFILE [ARGUMENTS]]
-n | --noninteractive Do not run within an IRB session
and exit with non-zero status on
first error.
+ -r | --return-values Include return values from commands
+ executed in the shell.
HERE
found = []
script2run = nil
log_level = org.apache.log4j.Level::ERROR
@shell_debug = false
interactive = true
+return_values = false
for arg in ARGV
if arg == '-h' || arg == '--help'
puts cmdline_help
@@ -78,6 +81,9 @@ for arg in ARGV
elsif arg == '-n' || arg == '--noninteractive'
interactive = false
found.push(arg)
+ elsif arg == '-r' || arg == '--return-values'
+ return_values = true
+ found.push(arg)
else
# Presume it a script. Save it off for running later below
# after we've set up some environment.
@@ -110,7 +116,7 @@ require 'shell/formatter'
@hbase = Hbase::Hbase.new
# Setup console
-@shell = Shell::Shell.new(@hbase, interactive)
+@shell = Shell::Shell.new(@hbase, interactive, return_values)
@shell.debug = @shell_debug
# Add commands to this namespace
http://git-wip-us.apache.org/repos/asf/hbase/blob/7224546b/hbase-shell/src/main/ruby/shell.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/main/ruby/shell.rb b/hbase-shell/src/main/ruby/shell.rb
index a01a890..4472021 100644
--- a/hbase-shell/src/main/ruby/shell.rb
+++ b/hbase-shell/src/main/ruby/shell.rb
@@ -71,14 +71,19 @@ module Shell
class Shell
attr_accessor :hbase
attr_accessor :interactive
+ attr_accessor :return_values
alias interactive? interactive
+ alias return_values? return_values
@debug = false
attr_accessor :debug
- def initialize(hbase, interactive = true)
+ def initialize(hbase, interactive = true, return_values = !interactive)
self.hbase = hbase
self.interactive = interactive
+ self.return_values = return_values
+ # If we're in non-interactive mode, force return_values
+ self.return_values = true if not self.interactive
end
# Returns Admin class from admin.rb
@@ -135,16 +140,11 @@ module Shell
end
# call the method 'command' on the specified command
- # If interactive is enabled, then we suppress the return value. The command should have
- # printed relevant output.
- # Return value is only useful in non-interactive mode, for e.g. tests.
+ # If return_values is false, then we suppress the return value. The command
+ # should have printed relevant output.
def command(command, *args)
ret = internal_command(command, :command, *args)
- if interactive
- return nil
- else
- return ret
- end
+ ret if return_values
end
# call a specific internal method in the command instance
http://git-wip-us.apache.org/repos/asf/hbase/blob/7224546b/hbase-shell/src/test/ruby/shell/noninteractive_test.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/test/ruby/shell/noninteractive_test.rb b/hbase-shell/src/test/ruby/shell/noninteractive_test.rb
index 0fae4cb..75a2c7d 100644
--- a/hbase-shell/src/test/ruby/shell/noninteractive_test.rb
+++ b/hbase-shell/src/test/ruby/shell/noninteractive_test.rb
@@ -20,7 +20,7 @@ require 'shell'
class NonInteractiveTest < Test::Unit::TestCase
def setup
@hbase = ::Hbase::Hbase.new($TEST_CLUSTER.getConfiguration)
- @shell = Shell::Shell.new(@hbase, false)
+ @shell = Shell::Shell.new(@hbase, false, true)
end
define_test "Shell::Shell noninteractive mode should throw" do
http://git-wip-us.apache.org/repos/asf/hbase/blob/7224546b/hbase-shell/src/test/ruby/test_helper.rb
----------------------------------------------------------------------
diff --git a/hbase-shell/src/test/ruby/test_helper.rb b/hbase-shell/src/test/ruby/test_helper.rb
index ec6bb6a..874b554 100644
--- a/hbase-shell/src/test/ruby/test_helper.rb
+++ b/hbase-shell/src/test/ruby/test_helper.rb
@@ -43,7 +43,7 @@ module Hbase
def setup_hbase
hbase = ::Hbase::Hbase.new($TEST_CLUSTER.getConfiguration)
- @shell = ::Shell::Shell.new(hbase, interactive = false)
+ @shell = ::Shell::Shell.new(hbase, interactive = false, return_values = true)
end
def shutdown