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