after 0.0.2

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 (8) hide show
  1. data/README +0 -0
  2. data/Rakefile +14 -0
  3. data/VERSION +1 -0
  4. data/bin/after +16 -0
  5. data/lib/after.rb +28 -0
  6. data/test/sleep.rb +1 -0
  7. data/test/spec.after.rb +40 -0
  8. metadata +121 -0
data/README ADDED
File without changes
@@ -0,0 +1,14 @@
1
+ require 'jeweler'
2
+ Jeweler::Tasks.new do |gemspec|
3
+ gemspec.name = "after"
4
+ gemspec.summary = "Command to allow you to run a command in one console window, then run another in a separate window after the first completes"
5
+ gemspec.description = gemspec.summary
6
+ gemspec.email = "rogerdpack@gmail.com"
7
+ gemspec.authors = ["rogerdpack"]
8
+ gemspec.add_dependency 'sane'
9
+ gemspec.add_dependency 'andand'
10
+ gemspec.add_development_dependency 'jeweler'
11
+ gemspec.add_development_dependency 'rspec'
12
+ gemspec.add_dependency 'ruby-wmi'
13
+ gemspec.add_dependency 'win32-process'
14
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.2
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/ruby
2
+
3
+ if ['-h', '--help'].in?(ARGV) || ARGV.length == 0
4
+ puts 'syntax: [-v] "command string to match" then some other command to run with its args'
5
+ exit
6
+ end
7
+
8
+ require 'after'
9
+
10
+ if ARGV[0] == '-v'
11
+ ARGV.shift
12
+ $VERBOSE = true
13
+ puts 'running in verbose mode'
14
+ end
15
+ After.find_and_wait_for(ARGV.shift)
16
+ system(ARGV)
@@ -0,0 +1,28 @@
1
+ require 'ruby-wmi'
2
+ require 'sane'
3
+ require 'andand'
4
+ require 'win32/process' # waitpid for doze
5
+
6
+ class After
7
+
8
+ def self.find_pids(many_args)
9
+
10
+ procs = WMI::Win32_Process.find(:all)
11
+ pids = []
12
+ for proc in procs # TODO respect proc.Name!
13
+ if proc.CommandLine.andand.contain?(many_args)
14
+ pids << proc.ProcessId.to_i
15
+ if $VERBOSE
16
+ print 'adding ', proc.ProcessId, ' ', proc.Name, ' ', proc.CommandLine, "\n"
17
+ end
18
+ end
19
+ end
20
+ pids
21
+ end
22
+
23
+ def self.find_and_wait_for(args)
24
+ pids = find_pids args
25
+ pids.each{|pid| Process.waitpid pid}
26
+ end
27
+
28
+ end
@@ -0,0 +1 @@
1
+ sleep ARGV[0].to_i
@@ -0,0 +1,40 @@
1
+ require 'spec/autorun'
2
+ require 'sane' # require_rel
3
+ require_rel '../lib/after'
4
+
5
+ describe After do
6
+
7
+ def go how_many = 1
8
+ pid = Process.spawn "ruby ./sleep.rb #{how_many}"
9
+ end
10
+
11
+ it "should be able to grab the right pid" do
12
+ pid = go
13
+ a = After.find_pids('sleep')
14
+ a[0].should == pid
15
+ end
16
+
17
+ it "should immediately return if the other process doesn't exist" do
18
+ a = After.find_pids('non existent process')
19
+ assert a.empty?
20
+ end
21
+
22
+ it "should wait for another process to terminate" do
23
+ go
24
+ start = Time.now
25
+ After.find_and_wait_for('sleep')
26
+ assert (Time.now - start) > 0.5
27
+ end
28
+
29
+ it "should work if there are several available" do
30
+ go 1
31
+ go 2
32
+ go 3
33
+ start = Time.now
34
+ After.find_and_wait_for('sleep')
35
+ assert (Time.now - start) > 2
36
+ end
37
+
38
+ it "should split the commands up right--if necessary"
39
+
40
+ end
metadata ADDED
@@ -0,0 +1,121 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: after
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - rogerdpack
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-12-16 00:00:00 -07:00
13
+ default_executable: after
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: sane
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: andand
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: jeweler
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: rspec
47
+ type: :development
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: ruby-wmi
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: win32-process
67
+ type: :runtime
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ version:
75
+ description: Command to allow you to run a command in one console window, then run another in a separate window after the first completes
76
+ email: rogerdpack@gmail.com
77
+ executables:
78
+ - after
79
+ extensions: []
80
+
81
+ extra_rdoc_files:
82
+ - README
83
+ files:
84
+ - README
85
+ - Rakefile
86
+ - VERSION
87
+ - bin/after
88
+ - lib/after.rb
89
+ - test/sleep.rb
90
+ - test/spec.after.rb
91
+ has_rdoc: true
92
+ homepage:
93
+ licenses: []
94
+
95
+ post_install_message:
96
+ rdoc_options:
97
+ - --charset=UTF-8
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: "0"
105
+ version:
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: "0"
111
+ version:
112
+ requirements: []
113
+
114
+ rubyforge_project:
115
+ rubygems_version: 1.3.5
116
+ signing_key:
117
+ specification_version: 3
118
+ summary: Command to allow you to run a command in one console window, then run another in a separate window after the first completes
119
+ test_files:
120
+ - test/sleep.rb
121
+ - test/spec.after.rb