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