HBASE-1859 Misc shell fixes patch

git-svn-id: https://svn.apache.org/repos/asf/hadoop/hbase/trunk@817947 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Michael Stack 2009-09-23 03:10:49 +00:00
parent 873bb2b7c3
commit 41558cf59d
3 changed files with 25 additions and 12 deletions

View File

@ -43,6 +43,7 @@ Release 0.21.0 - Unreleased
HBASE-1857 WrongRegionException when setting region online after .META.
split (Cosmin Lehane via Stack)
HBASE-1809 NPE thrown in BoundedRangeFileInputStream
HBASE-1859 Misc shell fixes patch (Kyle Oba via Stack)
IMPROVEMENTS
HBASE-1760 Cleanup TODOs in HTable

View File

@ -2,12 +2,20 @@
module Formatter
# Base abstract class for results formatting.
class Formatter
def is_kernel?(obj)
obj.kind_of?(Module) and obj.name == "Kernel"
end
# Takes an output stream and a print width.
def initialize(o, w = 100)
raise TypeError.new("Type %s of parameter %s is not IO" % [o.class, o]) \
unless o.instance_of? IO
@out = o
@maxWidth = w
def initialize(opts={})
defaults = {:output_stream => Kernel, :format_width => 100}
options = defaults.merge(opts)
@out = options[:output_stream]
raise TypeError.new("Type %s of parameter %s is not IO" % [@out.class, @out]) \
unless @out.instance_of? IO or is_kernel?(@out)
@maxWidth = options[:format_width]
@rowCount = 0
end
@ -27,7 +35,7 @@ module Formatter
end
if args.class == String
output(@maxWidth, args)
puts
@out.puts
return
end
# TODO: Look at the type. Is it RowResult?
@ -35,7 +43,7 @@ module Formatter
splits = split(@maxWidth, dump(args[0]))
for l in splits
output(@maxWidth, l)
puts
@out.puts
end
elsif args.length == 2
col1width = (not widths or widths.length == 0) ? @maxWidth / 4 : @maxWidth * widths[0] / 100
@ -57,7 +65,7 @@ module Formatter
@out.print(" ")
output(col2width, splits2[index])
index += 1
puts
@out.puts
end
else
# Print a space to set off multi-column rows

View File

@ -71,7 +71,8 @@ for arg in found
ARGV.delete(arg)
end
# Presume console format.
@formatter = Formatter::Console.new(STDOUT, format_width)
# Formatter takes an :output_stream parameter, if you don't want STDOUT.
@formatter = Formatter::Console.new(:format_width => format_width)
# TODO, etc. @formatter = Formatter::XHTML.new(STDOUT)
# Setup the HBase module. Create a configuration.
@ -100,9 +101,6 @@ promoteConstants(org.apache.hadoop.hbase.HColumnDescriptor.constants)
promoteConstants(org.apache.hadoop.hbase.HTableDescriptor.constants)
promoteConstants(HBase.constants)
# If script2run, try running it. Will go on to run the shell unless
# script calls 'exit' or 'exit 0' or 'exit errcode'.
load(script2run) if script2run
# Start of the hbase shell commands.
@ -428,6 +426,12 @@ def split(tableNameOrRegionName)
admin().split(tableNameOrRegionName)
end
# If script2run, try running it. Will go on to run the shell unless
# script calls 'exit' or 'exit 0' or 'exit errcode'.
load(script2run) if script2run
# Output a banner message that tells users where to go for help
puts <<HERE
HBase Shell; enter 'help<RETURN>' for list of supported commands.