after 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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