after 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. data/ChangeLog +4 -0
  2. data/VERSION +1 -1
  3. data/bin/after +5 -3
  4. data/lib/after.rb +17 -10
  5. metadata +5 -3
@@ -0,0 +1,4 @@
1
+ 0.8.0
2
+ make prettier output
3
+ make it so it can enumerate all processes: ($ after -l)
4
+ make -v mode (more chatty) by default, add option -q for those that want no output
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.0
1
+ 0.8.1
data/bin/after CHANGED
@@ -1,10 +1,12 @@
1
1
  #!/usr/bin/ruby
2
2
 
3
3
  if ARGV.include?('-h') || ARGV.include?('--help') || ARGV.length == 0
4
- puts 'syntax: [-v : show output for when process ends] [-l or --list : only list matches] [-p pid] "command string to match" (some other command to run with its args on completion)'
5
- puts 'ex: after ruby ls -l'
4
+ puts 'syntax: [-q : quit mode (don\'t show output for when process ends)] [-l or --list : only list matches] [-p pid] "command string to match" (some other command to run with its args on completion)'
5
+ puts 'ex: after ruby ls -l # run ls -l after any ruby processes exit'
6
6
  puts 'after -l # list all running processes'
7
- puts "after irb \"ls | grep l\""
7
+ puts "after irb \"ls | grep l\" # complex command to run after irb terminates"
8
+ puts "after -p 3704 ls # run ls after process with PID 3704 terminates"
9
+ puts "after -q -p 3704 ls # run ls after PID 3704 terminates, don't output anything except the output of ls"
8
10
  exit
9
11
  end
10
12
 
@@ -13,7 +13,7 @@ class After
13
13
  if OS.windows?
14
14
  procs = WMI::Win32_Process.find(:all)
15
15
  for proc in procs
16
- procs_by_pid[proc.ProcessId] = proc.CommandLine.to_s + ' ' + proc.Name.to_s
16
+ procs_by_pid[proc.ProcessId] = ("% 20s" % proc.Name.to_s) + ' ' + proc.CommandLine.to_s
17
17
  end
18
18
  else
19
19
  a = `ps -ef` # my linux support isn't very good yet...
@@ -25,7 +25,7 @@ class After
25
25
  if description.contain?(many_args)
26
26
  next if pid == Process.pid
27
27
  good_pids << [pid, description]
28
- if $VERBOSE
28
+ if $DISPLAY_ALL
29
29
  pps 'found', "% 5d" % pid, description
30
30
  end
31
31
  end
@@ -36,10 +36,10 @@ class After
36
36
  def self.find_and_wait_for(args)
37
37
  pids = find_pids args
38
38
  if pids.length > 1
39
- puts "found more than one -- waiting for all #{pids.map{|pid, name| name}.inspect}"
39
+ puts "found more than one -- waiting for all -- #{pids.map{|pid, name| name}.inspect}" if $VERBOSE
40
40
  end
41
41
  pids.each{|pid, name|
42
- puts "waiting for #{pid} (#{name})"
42
+ puts "waiting for #{pid} (#{name.strip})" if $VERBOSE
43
43
  WaitPid.wait_nonchild_pid pid
44
44
  }
45
45
  end
@@ -48,32 +48,39 @@ class After
48
48
  WaitPid.wait_nonchild_pid pid
49
49
  end
50
50
 
51
+
51
52
  # main, really
52
53
  def self.go
53
- if ARGV.delete('-v')
54
+ if ARGV.delete('-q')
55
+ $VERBOSE = false
56
+ else
54
57
  $VERBOSE = true
55
- puts 'running in verbose mode'
56
58
  end
57
59
 
60
+ $DISPLAY_ALL = false
58
61
  if ARGV[0].in? ['-l', '--list']
59
62
  ARGV.shift
60
- $VERBOSE = true # so it'll output the names when searching...
63
+ $DISPLAY_ALL = true
61
64
  query = ARGV.shift || ''
62
65
  got = After.find_pids(query)
63
66
  if got.empty?
64
67
  puts "none found #{query}"
65
68
  end
66
- exit # premature exit
69
+ exit # early exit
67
70
  elsif ARGV[0] == '-p'
68
71
  ARGV.shift
69
72
  pid = ARGV.shift
70
73
  puts "waiting for pid #{pid}" if $VERBOSE
71
- After.wait_pid pid.to_i
74
+ begin
75
+ After.wait_pid pid.to_i
76
+ rescue Errno::EPERM
77
+ p 'pid does not exist maybe it already had exited ' + pid if $VERBOSE
78
+ end
72
79
  else
73
80
  After.find_and_wait_for(ARGV.shift)
74
81
  end
75
82
 
76
- puts 'done waiting, now running:', ARGV if $VERBOSE
83
+ puts 'after: now running:', ARGV if $VERBOSE
77
84
  system(*ARGV) if ARGV.length > 0
78
85
  end
79
86
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: after
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
4
+ hash: 61
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 8
9
- - 0
10
- version: 0.8.0
9
+ - 1
10
+ version: 0.8.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - rogerdpack
@@ -94,9 +94,11 @@ executables:
94
94
  extensions: []
95
95
 
96
96
  extra_rdoc_files:
97
+ - ChangeLog
97
98
  - README
98
99
  files:
99
100
  - .document
101
+ - ChangeLog
100
102
  - README
101
103
  - Rakefile
102
104
  - VERSION