class Baptize::Application

Most of this is copy-paste fom Rake::Application github.com/ruby/rake/blob/master/lib/rake/application.rb

Attributes

commands[RW]

Public Class Methods

new() click to toggle source
# File lib/baptize/application.rb, line 33
def initialize
  @original_dir = Dir.pwd
  @bapfiles = %w(bapfile Bapfile bapfile.rb Bapfile.rb)
  @commands = {}
  Baptize.application = self
  load 'baptize/commands.rb'
end

Public Instance Methods

define_command(name, description=nil, &block) click to toggle source
# File lib/baptize/application.rb, line 49
def define_command(name, description=nil, &block)
  Command.new(name, description, &block).tap do |command|
    @commands[command.name] = command
  end
end
dispatch() click to toggle source
# File lib/baptize/application.rb, line 94
def dispatch
  args = @arguments.dup
  command_name = args.shift&.to_sym
  fail "No command given. Try baptize --help" if command_name.nil?
  command = commands[command_name]
  fail "Invalid command #{command_name}" unless command
  command.invoke(*args)
end
load_bapfile() click to toggle source
# File lib/baptize/application.rb, line 103
def load_bapfile
  standard_exception_handling do
    raw_load_bapfile
  end
end
parse_input() click to toggle source
# File lib/baptize/application.rb, line 55
def parse_input
  @arguments = OptionParser.new do |opts|
    opts.banner = "baptize [OPTIONS] COMMAND"
    opts.separator ""
    opts.separator "COMMANDS are ..."

    width = [commands.values.map(&:name_with_parameters).map(&:length), 31].flatten.max
    commands.values.each do |command|
      opts.separator sprintf("    %-#{width}s  %s\n",
        command.name_with_parameters,
        command.description)
    end

    opts.separator ""
    opts.separator "OPTIONS are ..."

    opts.on_tail("-h", "--help", "-H", "Display this help message.") do
      puts opts
      exit
    end

    opts.on('--bapfile', '-f [FILENAME]', "Use FILENAME as the bapfile to search for.") do |value|
      value ||= ''
      @bapfiles.clear
      @bapfiles << value
    end

    opts.on('--verbose', '-v', "Log message to standard output.") do |value|
      Registry.execution_scope.set :verbose, true
    end

    opts.on('--version', '-V', "Display the program version.") do |value|
      puts "baptize, version #{Baptize::VERSION}"
      exit
    end

  end.parse(ARGV)
end
run() click to toggle source
# File lib/baptize/application.rb, line 41
def run
  standard_exception_handling do
    parse_input
    load_bapfile
    dispatch
  end
end