class Flare::Tools::Cli::Restore
Constants
- Formats
- Restorers
Public Class Methods
new()
click to toggle source
Calls superclass method
# File lib/flare/tools/cli/restore.rb, line 105 def initialize super @input = nil @format = nil @wait = 0 @part = 0 @partsize = 1 @bwlimit = 0 @include = nil @prefix_include = nil @exclude = nil @print_key = false end
Public Instance Methods
execute(config, args)
click to toggle source
# File lib/flare/tools/cli/restore.rb, line 119 def execute(config, args) STDERR.puts "please install tokyocabinet via gem command." unless defined? TokyoCabinet unless @format.nil? || Formats.include?(@format) STDERR.puts "unknown format: #{@format}" return S_NG end if @prefix_include if @include STDERR.puts "--include option is specified." return S_NG end @include = @prefix_include end hosts = args.map {|x| x.split(':')} hosts.each do |x| if x.size != 2 STDERR.puts "invalid argument '#{x.join(':')}'." return S_NG end end restorer = case @format when TchRestorer.myname TchRestorer.new(@input) else raise "invalid format" end nodes = hosts.map do |hostname,port| Flare::Tools::Node.open(hostname, port.to_i, @timeout, @bwlimit, @bwlimit) end count = 0 restorer.iterate do |key,data,flag,expire| if @include.nil? || @include =~ key next if @exclude && @exclude =~ key STDOUT.puts key if @print_key nodes[0].set(key, data, flag, expire) unless @dry_run count += 1 end end STDERR.puts "#{count} entries have been restored." nodes.each do |n| n.close end restorer.close S_OK end
setup()
click to toggle source
Calls superclass method
# File lib/flare/tools/cli/restore.rb, line 77 def setup super set_option_dry_run @optp.on('-i', '--input=FILE', "input from file") {|v| @input = v} @optp.on('-f', '--format=FORMAT', "input format [#{Formats.join(',')}]") {|v| @format = v } @optp.on('--bwlimit=BANDWIDTH', "bandwidth limit (bps)") {|v| @bwlimit = v} @optp.on('--include=PATTERN', "include pattern") {|v| begin @include = Regexp.new(v) rescue RegexpError => e raise "#{v} isn't a valid regular expression." end } @optp.on('--prefix-include=STRING', "prefix string") {|v| @prefix_include = Regexp.new("^"+Regexp.escape(v)) } @optp.on('--exclude=PATTERN', "exclude pattern") {|v| begin @exclude = Regexp.new(v) rescue RegexpError => e raise "#{v} isn't a valid regular expression." end } @optp.on('--print-keys', "enables key dump to console") {@print_key = true} end