lib/after.rb in after-0.5.0 vs lib/after.rb in after-0.6.0

- old
+ new

@@ -10,30 +10,55 @@ pids = [] for proc in procs # TODO respect proc.Name! if (proc.CommandLine && proc.CommandLine.contain?(many_args)) || proc.Name.include?(many_args) pid = proc.ProcessId.to_i next if pid == Process.pid - pids << pid + pids << [pid, proc.CommandLine] if $VERBOSE - print 'adding ', proc.ProcessId, ' ', proc.Name, ' ', proc.CommandLine, "\n" + print 'adding ', proc.ProcessId, ' ', proc.Name, ' ', proc.CommandLine, "\n" end end end pids end def self.find_and_wait_for(args) - pids = find_pids args - if pids.length > 1 - puts "found more than one -- waiting for all #{pids.inspect}" - end - pids.each{|pid| - puts "waiting for #{pid}" - WaitPid.wait_nonchild_pid pid - } + pids = find_pids args + if pids.length > 1 + puts "found more than one -- waiting for all #{pids.map{|pid, name| name}.inspect}" + end + pids.each{|pid, name| + puts "waiting for #{pid} (#{name})" + WaitPid.wait_nonchild_pid pid + } end - + def self.wait_pid pid WaitPid.wait_nonchild_pid pid end -end \ No newline at end of file + # main, really + def self.go + if ARGV[0] == '-v' + ARGV.shift + $VERBOSE = true + puts 'running in verbose mode' + end + + if ARGV[0] == '-l' || ARGV[0] == '--list' + $VERBOSE = true # so it'll output the names... + ARGV.shift + After.find_pids(ARGV.shift) + exit # premature exit + elsif ARGV[0] == '-p' + ARGV.shift + pid = ARGV.shift + After.wait_pid pid.to_i + else + After.find_and_wait_for(ARGV.shift) + end + + puts 'running', ARGV if $VERBOSE + system(*ARGV) if ARGV.length > 0 + end + +end