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

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.
@@ -1,3 +1,5 @@
1
+ require 'os'
2
+
1
3
  # The Sys module serves as a namespace only.
2
4
  module Sys
3
5
 
@@ -78,6 +80,33 @@ module Sys
78
80
 
79
81
  ProcTableStruct = Struct.new('ProcTableStruct', *@fields)
80
82
 
83
+ # Returns an Array of Proctable structs or just the matching one if +pid+ is given.
84
+ def self.ps_mac(process_id=nil)
85
+ output = `ps aux`
86
+ output = output.split "\n"
87
+ output.delete output.first
88
+ result = []
89
+
90
+ output.each do |process_info|
91
+ struct = ProcTableStruct.new
92
+ process_info = process_info.split " "
93
+ process_info.delete ""
94
+ user_info = `id #{process_info.first}`
95
+ /uid=((?<uid>\d*))/ =~ user_info
96
+ /gid=((?<gid>\d*))/ =~ user_info
97
+ pid = process_info[1].to_i
98
+ /[\.|\:]\d\d (?<cmdline>.*)/ =~ process_info.last
99
+ struct.pid = pid
100
+ struct.uid = uid.to_i
101
+ struct.gid = gid.to_i
102
+ struct.cmdline = cmdline
103
+ return struct if pid == process_id
104
+ result << struct
105
+ end
106
+
107
+ result
108
+ end
109
+
81
110
  # In block form, yields a ProcTableStruct for each process entry that you
82
111
  # have rights to. This method returns an array of ProcTableStruct's in
83
112
  # non-block form.
@@ -102,6 +131,8 @@ module Sys
102
131
  # either return all information for a process, or none at all.
103
132
  #
104
133
  def self.ps(pid=nil)
134
+ return ps_mac(pid) if OS.mac?
135
+ raise NotImplementedError unless OS.linux?
105
136
  array = block_given? ? nil : []
106
137
  struct = nil
107
138
 
@@ -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.5'
5
+ spec.version = '0.9.6'
6
6
  spec.author = 'Daniel J. Berger'
7
7
  spec.license = 'Artistic 2.0'
8
8
  spec.email = 'djberg96@gmail.com'
@@ -30,6 +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
34
 
34
35
  spec.description = <<-EOF
35
36
  The sys-proctable library provides an interface for gathering information
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rumblinthebronx-sys-proctable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5
4
+ version: 0.9.6
5
5
  prerelease:
6
6
  platform: universal-java
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-26 00:00:00.000000000 Z
12
+ date: 2012-12-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: test-unit
@@ -27,6 +27,22 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: 2.4.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: os
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 0.9.6
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.9.6
30
46
  description: ! " The sys-proctable library provides an interface for gathering
31
47
  information\n about processes on your system, i.e. the process table. Most major\n
32
48
  \ platforms are supported and, while different platforms may return\n different