rumblinthebronx-sys-proctable 0.9.6-universal-java → 0.9.7-universal-java

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -143,6 +143,7 @@ namespace :gem do
143
143
  spec.extensions = ['ext/hpux/extconf.rb']
144
144
  when /linux/i
145
145
  spec.platform = Gem::Platform.new(['universal', 'linux'])
146
+ spec.platform = Gem::Platform.new(['universal', 'java']) if RUBY_ENGINE == "jruby"
146
147
  spec.require_paths = ['lib', 'lib/linux']
147
148
  spec.files += ['lib/linux/sys/proctable.rb']
148
149
  spec.test_files << 'test/test_sys_proctable_linux.rb'
@@ -81,7 +81,7 @@ module Sys
81
81
  ProcTableStruct = Struct.new('ProcTableStruct', *@fields)
82
82
 
83
83
  # Returns an Array of Proctable structs or just the matching one if +pid+ is given.
84
- def self.ps_mac(process_id=nil)
84
+ def self.ps_mac(process_id=-100)
85
85
  output = `ps aux`
86
86
  output = output.split "\n"
87
87
  output.delete output.first
@@ -104,6 +104,39 @@ module Sys
104
104
  result << struct
105
105
  end
106
106
 
107
+ raise "Process #{process_id} not found" if process_id.to_i > 0
108
+ result
109
+ end
110
+
111
+ # Returns an Array of Proctable structs or just the matching one if +pid+ is given.
112
+ def self.ps_windows(process_id=-100)
113
+ output = `tasklist`
114
+ output = output.split "\n"
115
+ output.delete output.first
116
+ output.delete output.first
117
+ output.delete output.first
118
+ result = []
119
+
120
+ output.each do |process_info|
121
+ struct = ProcTableStruct.new
122
+ struct.cmdline ||= ""
123
+ process_info = process_info.split
124
+ process_info.each do |field|
125
+ pid = Integer(field) rescue nil
126
+
127
+ if pid.nil?
128
+ struct.cmdline += field
129
+ else
130
+ struct.pid = pid
131
+ return struct if pid == process_id
132
+ break
133
+ end
134
+ end
135
+
136
+ result << struct
137
+ end
138
+
139
+ raise "Process #{process_id} not found" if process_id.to_i > 0
107
140
  result
108
141
  end
109
142
 
@@ -131,7 +164,8 @@ module Sys
131
164
  # either return all information for a process, or none at all.
132
165
  #
133
166
  def self.ps(pid=nil)
134
- return ps_mac(pid) if OS.mac?
167
+ return ps_mac(pid ||-100) if OS.mac?
168
+ return ps_windows(pid ||-100) if OS.windows?
135
169
  raise NotImplementedError unless OS.linux?
136
170
  array = block_given? ? nil : []
137
171
  struct = nil
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'rumblinthebronx-sys-proctable'
5
- spec.version = '0.9.6'
5
+ spec.version = '0.9.7'
6
6
  spec.author = 'Daniel J. Berger'
7
7
  spec.license = 'Artistic 2.0'
8
8
  spec.email = 'djberg96@gmail.com'
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.extra_rdoc_files = ['CHANGES', 'README', 'MANIFEST', 'doc/top.txt']
31
31
 
32
32
  spec.add_development_dependency('test-unit', '>= 2.4.0')
33
- spec.add_development_dependency('os', '>= 0.9.6')
33
+ spec.add_runtime_dependency('os', '>= 0.9.6')
34
34
 
35
35
  spec.description = <<-EOF
36
36
  The sys-proctable library provides an interface for gathering information
metadata CHANGED
@@ -1,52 +1,54 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rumblinthebronx-sys-proctable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
5
- prerelease:
4
+ version: 0.9.7
5
+ prerelease:
6
6
  platform: universal-java
7
7
  authors:
8
8
  - Daniel J. Berger
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-13 00:00:00.000000000 Z
12
+ date: 2013-01-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: test-unit
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
16
+ version_requirements: !ruby/object:Gem::Requirement
18
17
  requirements:
19
18
  - - ! '>='
20
19
  - !ruby/object:Gem::Version
21
20
  version: 2.4.0
22
- type: :development
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
21
  none: false
22
+ requirement: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: 2.4.0
27
+ none: false
28
+ prerelease: false
29
+ type: :development
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: os
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
32
+ version_requirements: !ruby/object:Gem::Requirement
34
33
  requirements:
35
34
  - - ! '>='
36
35
  - !ruby/object:Gem::Version
37
36
  version: 0.9.6
38
- type: :development
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
37
  none: false
38
+ requirement: !ruby/object:Gem::Requirement
42
39
  requirements:
43
40
  - - ! '>='
44
41
  - !ruby/object:Gem::Version
45
42
  version: 0.9.6
46
- description: ! " The sys-proctable library provides an interface for gathering
47
- information\n about processes on your system, i.e. the process table. Most major\n
48
- \ platforms are supported and, while different platforms may return\n different
49
- information, the external interface is identical across\n platforms.\n"
43
+ none: false
44
+ prerelease: false
45
+ type: :runtime
46
+ description: |2
47
+ The sys-proctable library provides an interface for gathering information
48
+ about processes on your system, i.e. the process table. Most major
49
+ platforms are supported and, while different platforms may return
50
+ different information, the external interface is identical across
51
+ platforms.
50
52
  email: djberg96@gmail.com
51
53
  executables: []
52
54
  extensions: []
@@ -70,29 +72,31 @@ files:
70
72
  homepage: http://www.rubyforge.org/projects/sysutils
71
73
  licenses:
72
74
  - Artistic 2.0
73
- post_install_message:
75
+ post_install_message:
74
76
  rdoc_options: []
75
77
  require_paths:
76
78
  - lib
77
79
  - lib/linux
78
80
  required_ruby_version: !ruby/object:Gem::Requirement
79
- none: false
80
81
  requirements:
81
82
  - - ! '>='
82
83
  - !ruby/object:Gem::Version
83
- version: '0'
84
- required_rubygems_version: !ruby/object:Gem::Requirement
84
+ version: !binary |-
85
+ MA==
85
86
  none: false
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
88
  requirements:
87
89
  - - ! '>='
88
90
  - !ruby/object:Gem::Version
89
- version: '0'
91
+ version: !binary |-
92
+ MA==
93
+ none: false
90
94
  requirements: []
91
95
  rubyforge_project: sysutils
92
96
  rubygems_version: 1.8.24
93
- signing_key:
97
+ signing_key:
94
98
  specification_version: 3
95
99
  summary: An interface for providing process table information
96
100
  test_files:
97
101
  - test/test_sys_proctable_all.rb
98
- has_rdoc:
102
+ has_rdoc: