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.
- data/README +0 -0
- data/Rakefile +14 -0
- data/VERSION +1 -0
- data/bin/after +16 -0
- data/lib/after.rb +28 -0
- data/test/sleep.rb +1 -0
- data/test/spec.after.rb +40 -0
- metadata +121 -0
data/README
ADDED
File without changes
|
data/Rakefile
ADDED
@@ -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
|
data/bin/after
ADDED
@@ -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)
|
data/lib/after.rb
ADDED
@@ -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
|
data/test/sleep.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
sleep ARGV[0].to_i
|
data/test/spec.after.rb
ADDED
@@ -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
|