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