lib/logi/runner.rb in logi-0.0.1 vs lib/logi/runner.rb in logi-0.1.0
- old
+ new
@@ -1,31 +1,80 @@
class Logi; end
module Logi::Runner
module_function
def options
+ @options ||=
+ [['logi options:' , '' ],
+ ['-c, --color' , ' Color mode (default)'],
+ ['-n, --no-color' , 'No color mode' ],
+ ['-V, --verbose' , ' Verbose mode (default)'],
+ ['-q, --quiet' , ' Quiet mode' ],
+ ['-h, --help' , 'Print this message' ],
+ ['-v, --version' , 'Print the version' ],
+ ['defaults:' , '' ],
+ [' root directory' , Logi::Config. default_root_path],
+ [' post directory' , Logi::Config. default_post_path],
+ ['layout directory' , Logi::Config.default_layout_path],
+ ['output directory' , Logi::Config.default_output_path],
+ [' post command' , Logi::Config.default_command ],
+ [' layout file' , Logi::Logger.strip_path(
+ Logi::Config.default_layout) ]]
end
def run argv=ARGV
- require 'logi'
- Logi.new('example').make
+ options = parse(argv)
+ require 'logi' # lazily load logi since we might exit earlier
+ Logi.new(options).make
end
- def post argv=ARGV
- require 'logi/command/post'
- end
+ def parse argv
+ options = {}
+ until argv.empty?
+ case arg = argv.shift
+ when /^-c/, '--color'
+ options[:nocolor] = false
+ parse_next(argv, arg)
- def list argv=ARGV
- require 'logi/command/list'
+ when /^-n/, '--no-color'
+ options[:nocolor] = true
+ parse_next(argv, arg)
+
+ when /^-V/, '--verbose'
+ options[:quiet] = false
+ parse_next(argv, arg)
+
+ when /^-q/, '--quiet'
+ options[:quiet] = true
+ parse_next(argv, arg)
+
+ when /^-h/, '--help'
+ puts(help)
+ exit
+
+ when /^-v/, '--version'
+ require 'rib/version'
+ puts(Rib::VERSION)
+ exit
+
+ else
+ options[:root] = File.expand_path(arg)
+ end
+ end
+ options
end
- def parse argv
+ def parse_next argv, arg
+ argv.unshift("-#{arg[2..-1]}") if arg.size > 2
end
def help
- maxn = options.transpose.first.map(&:size).max
- maxd = options.transpose.last .map(&:size).max
- "Usage: logi [OPTIONS]\n" +
+ require 'logi/config'
+ require 'logi/logger'
+ optt = options.transpose
+ maxn = optt.first.map(&:size).max
+ maxd = [optt.last .map(&:size).max, `tput cols`.to_i - maxn - 4].min
+ "Usage: logi [OPTIONS] [PATH to logi root]\n" +
options.map{ |(name, desc)|
if name.end_with?(':')
name
else
sprintf(" %-*s %-*s", maxn, name, maxd, desc)