annotate graster/graster/lib/graster/runner.rb @ 11:f952052e37b7

trying a fix.
author Robert McIntyre <rlm@mit.edu>
date Tue, 24 Aug 2010 19:06:45 -0400
parents
children
rev   line source
rlm@11 1 require 'optparse'
rlm@11 2
rlm@11 3 class Graster
rlm@11 4 class Runner
rlm@11 5
rlm@11 6 attr_reader :options, :args, :opts
rlm@11 7
rlm@11 8 def initialize(args)
rlm@11 9 @args = args
rlm@11 10 @options = { :default_config_file => true }
rlm@11 11 @opts = OptionParser.new do |opts|
rlm@11 12 opts.banner = "Usage: graster [options] image"
rlm@11 13
rlm@11 14 opts.on "-c", "--config FILE", "Use specified configuration file.",
rlm@11 15 "The default is ./graster.yml" do |c|
rlm@11 16 @options[:config_file] = c
rlm@11 17 end
rlm@11 18
rlm@11 19 opts.on "-g", "--generate", "generate a configuration file with","defaults" do
rlm@11 20 @options[:generate_config] = true
rlm@11 21 end
rlm@11 22
rlm@11 23 opts.on "-d", "--debug", "Dump useless debug info" do
rlm@11 24 @options[:debug] = true
rlm@11 25 end
rlm@11 26
rlm@11 27 Graster::OPTIONS.each do |key,info|
rlm@11 28 type,sym,*desc = info
rlm@11 29
rlm@11 30 if type.is_a? Array
rlm@11 31 cast = type[0].name.intern
rlm@11 32 type = Array
rlm@11 33 else
rlm@11 34 cast = type.name.intern
rlm@11 35 end
rlm@11 36
rlm@11 37 opts.on "--#{key.to_s.gsub /_/, '-'} #{sym}", type, *desc do |x|
rlm@11 38 @options[:config] ||= {}
rlm@11 39 if type == Array
rlm@11 40 x = x.map {|s| Kernel.send(cast,s) }
rlm@11 41 else
rlm@11 42 x = Kernel.send(cast,x)
rlm@11 43 end
rlm@11 44
rlm@11 45 @options[:config][key] = x
rlm@11 46 end
rlm@11 47 end
rlm@11 48 end
rlm@11 49
rlm@11 50 @opts.parse!(args)
rlm@11 51 end
rlm@11 52
rlm@11 53 def start!
rlm@11 54 if @options[:generate_config]
rlm@11 55 print Graster.new(@options).config_to_yaml
rlm@11 56 else
rlm@11 57 unless options[:image_file] = args.shift
rlm@11 58 puts @opts
rlm@11 59 exit 1
rlm@11 60 end
rlm@11 61
rlm@11 62 Graster.new(options).generate_all_files
rlm@11 63 end
rlm@11 64 end
rlm@11 65 end
rlm@11 66 end