class Backsum::Cli
Attributes
action[RW]
options[RW]
Public Class Methods
new(*args)
click to toggle source
# File lib/backsum/cli.rb, line 12 def initialize(*args) self.options = { projects_path: "./projects" } self.action = nil end
Public Instance Methods
execute(argv = [])
click to toggle source
# File lib/backsum/cli.rb, line 17 def execute(argv = []) option_parser!(argv) Backsum.logger.level = :debug if ::Backsum.verbose if self.action send self.action else self.show_usage exit 1 end end
option_parser!(argv)
click to toggle source
# File lib/backsum/cli.rb, line 30 def option_parser!(argv) @option_parser ||= OptionParser.new do |opts| opts.banner = "Usage: #{File.basename($0)} [options] action ..." opts.on("-V", "--version", "Display the Backsum version and exit.") do self.action = :show_version end opts.on("--all[=PATH]", "excute all the files. default: '#{self.options[:projects_path]}'") do |path| self.options[:projects_path] = path if path self.action = :perform_by_dir end opts.on("-v", "--[no-]verbose", "increase verbosity. default: #{Backsum.verbose}") do |value| Backsum.verbose = value end end @option_parser.parse!(argv) if !self.action && argv.any? self.action = :perform_by_inputs @input_files = argv end end
perform_by_dir()
click to toggle source
# File lib/backsum/cli.rb, line 65 def perform_by_dir files = Dir[File.join(self.options[:projects_path], '*.rb')] perform_files(files) end
perform_by_inputs()
click to toggle source
# File lib/backsum/cli.rb, line 70 def perform_by_inputs perform_files(@input_files) end
show_usage()
click to toggle source
# File lib/backsum/cli.rb, line 56 def show_usage stderr "Please specify one action to execute." stderr @option_parser.help end
show_version()
click to toggle source
# File lib/backsum/cli.rb, line 61 def show_version stdout "Backsum v#{Backsum::VERSION}" end
Protected Instance Methods
perform_files(files)
click to toggle source
# File lib/backsum/cli.rb, line 75 def perform_files(files) files.each do |file| if !File.exist?(file) stderr "#{file} is not exist!" exit 1 end end files.each do |file| project = Backsum::Project.dsl(File.read(file), file) project.perform end end
stderr(*args)
click to toggle source
# File lib/backsum/cli.rb, line 93 def stderr(*args) $stderr.puts(*args) end
stdout(*args)
click to toggle source
# File lib/backsum/cli.rb, line 89 def stdout(*args) $stdout.puts(*args) end