bin/lt in ratch-0.1 vs bin/lt in ratch-0.2.1
- old
+ new
@@ -1,4 +1,56 @@
-#! /usr/bin/ruby
+#! /usr/bin/ruby1.8
-load 'ratch/cli/lt.rb'
+# scan task scripts for descriptions
+def script_desc( dir )
+ help = {}
+ files = Dir.glob( File.join( dir, '*' ) )
+ files.each do |fname|
+ next if FileTest.directory?( fname )
+ next unless 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
+ help[File.basename(fname)] = desc
+ end
+ help
+end
+
+def show( dir )
+ tasks = script_desc( dir )
+ max = tasks.keys.max{ |a,b| a.size <=> b.size }.size
+ if dir == ''
+ max += 4 + 2
+ else
+ max += dir.size + 2
+ end
+ tasks.each do |name, sum|
+ #sum = Sake.help_summary( type )
+ if dir == ''
+ cmd = "sake #{name}"
+ else
+ cmd = File.join( dir.chomp('/'), name )
+ end
+ puts "%-#{max}s # %s" % [cmd, sum]
+ end
+end
+
+dir = ARGV[0] || '.'
+
+if File.directory?( dir )
+ show( dir )
+else
+ puts "#{dir} is not a directory"
+end