Sha256: 5e820fe3d3cba7c68792290215683da2e7be81bd9b4e0ead235c6400a1b51a2a
Contents?: true
Size: 1.97 KB
Versions: 1
Compression:
Stored size: 1.97 KB
Contents
module Ratch # Support class for displaying command help lists. class Help # def self.list(*dirs) tasks = script_descriptions(*dirs) tmax = tasks.keys.max{ |a,b| a.size <=> b.size }.size #dmax = dirs.flatten.max{ |a,b| a.size <=> b.size }.size #if dir == '' # max += 4 + 2 #else max = tmax + 4 #end tasks = tasks.sort_by{|k,v| k } tasks.each do |name, sum| #if dir == '' # cmd = "ratch #{name}" #else cmd = name #end puts "%-#{max}s # %s" % [cmd, sum] end end # Scan task scripts for descriptions. def self.script_descriptions(*dirs) opts = Hash === dirs.last ? dirs.pop : {} dirs = dirs.flatten help = {} dirs.each do |dir| files = Dir.glob(File.join(dir,'**/*')) files.each do |fname| next if FileTest.directory?(fname) next if opts[:exe] and !FileTest.executable?(fname) desc = '' File.open(fname) do |f| line = '' until f.eof? line = f.gets case line when /^(#!|\s*$)/ next when /^\s*#(.*)/ desc = $1.strip; break else desc = nil; break end end end key = opts[:exe] ? fname : fname.sub(dir+'/', '') help[key] = desc end end help end # Scan script for description header. def self.header(file, opts={}) #next if FileTest.directory?(file) #next if opts[:exe] and !FileTest.executable?(file) desc = "\n" File.open(file) do |f| line = '' until f.eof? line = f.gets case line when /^(#!|\s*$)/ next when /^\s*#\s?(.*)/ desc << $1.rstrip + "\n" else break end end end desc + "\n" end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ratch-1.2.0 | lib/ratch/script/help.rb |