sys-proc 1.0.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 39b451a1d8735506348a61a6a589dec046c5d6b8
4
+ data.tar.gz: 25fa3150119a1192fba407ea7d1e8c9a299b89a0
5
+ SHA512:
6
+ metadata.gz: 73830b7f8a7c870ca72e163e9a51e9d812e72eed5524719c1b10cef503759bb84b2afa853e6dbd34ad1373e28a231848789833d6e14f150b7ffb03698845777a
7
+ data.tar.gz: c3a71e5772275baae9b0f3b58bde5c910cfcdf49e1498f2a23336b15fc9cad6a26a745fd8c1a99edbe8283a5b1879e8d0bbdde8cec414a75c6da60a75cb9da3c
@@ -0,0 +1,36 @@
1
+ # rubocop:disable Style/FileName
2
+ # frozen_string_literal: true
3
+ # rubocop:enable Style/FileName
4
+
5
+ $LOAD_PATH.unshift __dir__
6
+
7
+ if 'development' == ENV['PROJECT_MODE']
8
+ require 'rubygems'
9
+ require 'bundler/setup'
10
+
11
+ require 'pp'
12
+ begin
13
+ require 'coderay'
14
+ require 'pry/color_printer'
15
+ rescue LoadError => e
16
+ warn('%s: %s' % [caller[0], e.message])
17
+ end
18
+
19
+ # Outputs obj to out in pretty printed format of width columns in width.
20
+ #
21
+ # If out is omitted, ``STDOUT`` is assumed.
22
+ # If width is omitted, ``79`` is assumed.
23
+ #
24
+ # @param [Object] obj
25
+ # @param [IO] out
26
+ # @param [Fixnum] width
27
+ # @see http://ruby-doc.org/stdlib-2.2.0/libdoc/pp/rdoc/PP.html
28
+ def pp(obj, out = STDOUT, width = nil)
29
+ args = [obj, out, width].compact
30
+ colorable = (out.isatty and Kernel.const_defined?('Pry::ColorPrinter'))
31
+
32
+ (colorable ? Pry::ColorPrinter : PP).pp(*args)
33
+ end
34
+ end
35
+
36
+ require File.basename(__FILE__, '.rb').tr('-', '/')
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'English'
4
+
5
+ # The Sys module is only used as a namespace
6
+ module Sys
7
+ end
8
+
9
+ # Operations on current process
10
+ #
11
+ # @see http://man7.org/linux/man-pages/man2/prctl.2.html
12
+ # @see http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/proc.html
13
+ class Sys::Proc
14
+ require 'singleton'
15
+ %i{versionable system static_instance}.each do |req|
16
+ require "sys/proc/concern/#{req}"
17
+ end
18
+
19
+ include Concern::Versionable
20
+ include Concern::StaticInstance
21
+ include Concern::System
22
+
23
+ # @param [String|Symbol] system
24
+ def initialize(system = nil)
25
+ @system = system
26
+ end
27
+
28
+ class << self
29
+ # Get available methods
30
+ #
31
+ # @return [Array<Symbol>]
32
+ def methods
33
+ super() + new.methods
34
+ end
35
+
36
+ # Get available public methods
37
+ #
38
+ # @return [Array<Symbol>]
39
+ def public_methods
40
+ super() + new.public_methods
41
+ end
42
+ end
43
+
44
+ def pid
45
+ $PROCESS_ID
46
+ end
47
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/concern'
4
+
5
+ module Sys::Proc::Concern
6
+
7
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sys/proc/concern'
4
+ require 'sys/proc/helper'
5
+
6
+ # Provides access to helpers
7
+ module Sys::Proc::Concern::Helper
8
+ extend ActiveSupport::Concern
9
+
10
+ protected
11
+
12
+ # @return [Sys::Proc::Helper]
13
+ def helper
14
+ Sys::Proc::Helper.instance
15
+ end
16
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sys/proc/concern'
4
+
5
+ # Provides static accesses
6
+ module Sys::Proc::Concern::StaticInstance
7
+ extend ActiveSupport::Concern
8
+
9
+ module ClassMethods
10
+ # Provides access to instance methods
11
+ def method_missing(method, *args, &block)
12
+ if respond_to_missing?(method)
13
+ new.public_send(method, *args, &block)
14
+ else
15
+ super
16
+ end
17
+ end
18
+
19
+ def respond_to_missing?(method, include_private = false)
20
+ return true if new.respond_to?(method, include_private)
21
+
22
+ super(method, include_private)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sys/proc/concern'
4
+ require 'sys/proc/concern/helper'
5
+
6
+ # Provides Operating System related methods
7
+ #
8
+ # This ``Concern`` loads system (OS) related sub-concern (specialisation)
9
+ module Sys::Proc::Concern::System
10
+ extend ActiveSupport::Concern
11
+ include Sys::Proc::Concern::Helper
12
+
13
+ # Related concern is included recursively
14
+ included { include system_concern }
15
+
16
+ # Identify operating system
17
+ #
18
+ # @return [Symbol]
19
+ def system
20
+ (@system || helper.get(:system).identify).to_sym
21
+ end
22
+
23
+ # Get operating system related concern
24
+ #
25
+ # @return [Module]
26
+ def system_concern
27
+ inflector = helper.get(:inflector)
28
+
29
+ begin
30
+ inflector.resolve("sys/proc/concern/system/#{system}")
31
+ rescue LoadError => e
32
+ # m = /^cannot load such file -- #{Regexp.quote(system)}/ =~ e.to_s
33
+
34
+ inflector.resolve('sys/proc/concern/system/generic')
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sys/proc/concern/helper'
4
+ require 'sys/proc/concern/system'
5
+ require 'sys/proc/concern/system/generic'
6
+ require 'sys/proc/system/freebsd/lib_c'
7
+
8
+ # Provides specific Freebsd methods
9
+ module Sys::Proc::Concern::System::Freebsd
10
+ extend ActiveSupport::Concern
11
+
12
+ include Sys::Proc::Concern::Helper
13
+ include Sys::Proc::System::Freebsd
14
+
15
+ # Set program name
16
+ #
17
+ # @param [String] progname
18
+ # @return [String]
19
+ def progname=(progname)
20
+ self.helper.get('system/generic').setprogname(progname) do |s|
21
+ libc.setprogname(s.progname)
22
+
23
+ self.progname
24
+ end
25
+ end
26
+
27
+ # Get program name
28
+ #
29
+ # @return [String]
30
+ def progname
31
+ libc.getprogname
32
+ end
33
+
34
+ protected
35
+
36
+ # @return [Sys::Proc::System::Freebsd::LibC]
37
+ def libc
38
+ @libc ||= LibC.new
39
+ @libc
40
+ end
41
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sys/proc/concern/system'
4
+
5
+ # Provides generic methods
6
+ #
7
+ # This generic module can be used through the ``system/generic`` helper
8
+ # in other system(s) specific modules.
9
+ # This is the default (included) module when specific module is missing.
10
+ module Sys::Proc::Concern::System::Generic
11
+ extend ActiveSupport::Concern
12
+
13
+ # Set program name
14
+ #
15
+ # When ``progname`` is ``nil`` will use a default ``progname``
16
+ #
17
+ # @param [String] progname
18
+ # @return [String]
19
+ def progname=(progname)
20
+ progname ||= default_progname
21
+ $PROGRAM_NAME = progname.to_s
22
+
23
+ progname
24
+ end
25
+
26
+ # Get program name
27
+ #
28
+ # @return [String]
29
+ def progname
30
+ $PROGRAM_NAME
31
+ end
32
+
33
+ # Get default program name
34
+ #
35
+ # @return [String]
36
+ def default_progname
37
+ file = caller[-1].split(/:[0-9]+:in\s/).fetch(0)
38
+
39
+ File.basename(file, '.rb')
40
+ end
41
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sys/proc/concern/helper'
4
+ require 'sys/proc/concern/system'
5
+ require 'sys/proc/concern/system/generic'
6
+ require 'sys/proc/system/linux_gnu/prctl'
7
+
8
+ # Provides specific Linux-GNU methods
9
+ module Sys::Proc::Concern::System::LinuxGnu
10
+ extend ActiveSupport::Concern
11
+
12
+ include Sys::Proc::Concern::Helper
13
+ include Sys::Proc::System::LinuxGnu
14
+
15
+ # Set program name
16
+ #
17
+ # @param [String] progname
18
+ # @return [String]
19
+ def progname=(progname)
20
+ self.helper.get('system/generic').setprogname(progname) do |s|
21
+ prctl.setprogname(s.progname)
22
+
23
+ self.progname
24
+ end
25
+ end
26
+
27
+ # Get program name
28
+ #
29
+ # @return [String]
30
+ def progname
31
+ prctl.getprogname
32
+ end
33
+
34
+ protected
35
+
36
+ # @return [Sys::Proc::System::LinuxGnu::Prctl]
37
+ def prctl
38
+ @prctl ||= Prctl.new
39
+ @prctl
40
+ end
41
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pathname'
4
+
5
+ require 'sys/proc/concern'
6
+
7
+ # Provides a standardized way to use ``VersionInfo``
8
+ module Sys::Proc::Concern::Versionable
9
+ extend ActiveSupport::Concern
10
+
11
+ included { version_info }
12
+
13
+ module ClassMethods
14
+ def version_info
15
+ unless const_defined?(:VERSION)
16
+ require 'version_info'
17
+ include VersionInfo
18
+ # @todo deternmine format from extension?
19
+ VersionInfo.file_format = :yaml
20
+
21
+ self.VERSION.file_name = version_basedir.join('version_info.yml')
22
+ self.VERSION.load
23
+ end
24
+
25
+ self.VERSION.to_hash.freeze
26
+ end
27
+
28
+ protected
29
+
30
+ # Extract basedir from ``caller``
31
+ #
32
+ # @raise [Errno::ENOENT]
33
+ # @return [Pathname]
34
+ def version_basedir
35
+ basedir = caller.grep(/in `include'/)
36
+ .fetch(0)
37
+ .split(/\.rb:[0-9]+:in\s+/).fetch(0)
38
+
39
+ Pathname.new(basedir).realpath
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sys/proc'
4
+
5
+ # Provides access to helper classes
6
+ class Sys::Proc::Helper
7
+ include ::Singleton
8
+
9
+ protected def initialize
10
+ @items = {
11
+ inflector: proc do
12
+ require 'sys/proc/helper/inflector'
13
+
14
+ Inflector.new
15
+ end.call
16
+ }
17
+
18
+ super
19
+ end
20
+
21
+ # @param [String|Symbol] name
22
+ # @return [Object]
23
+ #
24
+ # @raise [NotImplementedError]
25
+ def get(name)
26
+ name = name.to_sym
27
+
28
+ return items[name] if items[name]
29
+
30
+ begin
31
+ @items[name] = inflector.resolve("sys/proc/helper/#{name}").new
32
+ rescue LoadError
33
+ raise NotImplementedError, "helper not loadable: #{name}"
34
+ end
35
+ end
36
+
37
+ protected
38
+
39
+ attr_reader :items
40
+
41
+ # @return [Hash]
42
+ def to_h
43
+ items
44
+ end
45
+
46
+ # @return [Sys::Proc::Helper::Inflector]
47
+ def inflector
48
+ to_h.fetch(:inflector)
49
+ end
50
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sys/proc/helper'
4
+
5
+ class Sys::Proc::Helper::Inflector
6
+ def initialize
7
+ require 'active_support/inflector'
8
+
9
+ @inflector = ActiveSupport::Inflector
10
+ end
11
+
12
+ # Load constant from a loadable/requirable path
13
+ #
14
+ # @param [String] loadable
15
+ # @return [Object]
16
+ def resolve(loadable)
17
+ require loadable
18
+
19
+ @inflector.constantize(@inflector.classify(loadable))
20
+ end
21
+
22
+ def method_missing(method, *args, &block)
23
+ if respond_to_missing?(method)
24
+ @inflector.public_send(method, *args, &block)
25
+ else
26
+ super
27
+ end
28
+ end
29
+
30
+ def respond_to_missing?(method, include_private = false)
31
+ return true if @inflector.respond_to?(method, include_private)
32
+
33
+ super(method, include_private)
34
+ end
35
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'fiddle'
4
+ require 'sys/proc/helper'
5
+
6
+ # System helper
7
+ class Sys::Proc::Helper::LibC
8
+ def initialize
9
+ @loadeds = {}
10
+ end
11
+
12
+ # ``libc`` shared objects identified by system
13
+ #
14
+ # @return [Hash]
15
+ def loadables
16
+ {
17
+ linux_gnu: 'libc.so.6',
18
+ freebsd: 'libc.so.7',
19
+ }
20
+ end
21
+
22
+ # Open shared object (by system)
23
+ #
24
+ # @param [Symbol] system
25
+ # @return [self]
26
+ def dlopen(system = nil)
27
+ system = (system.nil? ? Sys::Proc.system : system).to_sym
28
+
29
+ loadeds[system] ||= Fiddle.dlopen(loadables.fetch(system))
30
+
31
+ loadeds[system]
32
+ end
33
+
34
+ # Denote if ``libc`` is seen as availbale on targeted system
35
+ #
36
+ # @return [Boolean]
37
+ def available?(system = nil)
38
+ begin
39
+ dlopen(system)
40
+ rescue Fiddle::DLError
41
+ return false
42
+ rescue KeyError
43
+ return false
44
+ end
45
+
46
+ loadables[system] != nil
47
+ end
48
+
49
+ protected
50
+
51
+ # Cache for loaded shared objects
52
+ attr_reader :loadeds
53
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ # System helper
4
+ class Sys::Proc::Helper::System
5
+ # Identify operating system
6
+ #
7
+ # @return [Symbol]
8
+ def identify
9
+ (RbConfig::CONFIG['host_os'] || 'generic')
10
+ .tr('-', '_')
11
+ .gsub(/[0-9]+(\.[0-9]+)*$/, '')
12
+ .to_sym
13
+ end
14
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sys/proc/helper/system'
4
+
5
+ # Provides access to ``Sys::Proc::Concerns::System::Generic`` methods
6
+ class Sys::Proc::Helper::System::Generic
7
+ def method_missing(method, *args, &block)
8
+ if respond_to_missing?(method)
9
+ system.public_send(method, *args, &block)
10
+ else
11
+ super
12
+ end
13
+ end
14
+
15
+ def respond_to_missing?(method, include_private = false)
16
+ return true if system.respond_to?(method, include_private)
17
+
18
+ super(method, include_private)
19
+ end
20
+
21
+ # @return [String]
22
+ def setprogname(progname = nil, &block)
23
+ system.progname = progname || system.default_progname
24
+
25
+ system.progname = yield(system) if block
26
+ end
27
+
28
+ protected
29
+
30
+ def system
31
+ require 'sys/proc/concern/system/generic'
32
+
33
+ (Class.new { include Sys::Proc::Concern::System::Generic }).new
34
+ end
35
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sys/proc'
4
+
5
+ # OS specific namespace
6
+ module Sys::Proc::System
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sys/proc/system'
4
+
5
+ # Freebsd specific namespace
6
+ module Sys::Proc::System::Freebsd
7
+
8
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'fiddle'
4
+ require 'sys/proc/system/freebsd'
5
+ require 'sys/proc/concern/helper'
6
+
7
+ # The ``getprogname()`` and ``setprogname()`` functions manipulate
8
+ # the name of the current program.
9
+ # They are used by error-reporting routines to produce consistent output.
10
+ #
11
+ # These functions first appeared in NetBSD 1.6, and made their way into
12
+ # FreeBSD 4.4.
13
+ #
14
+ # @see https://www.freebsd.org/cgi/man.cgi?query=setprogname&sektion=3
15
+ class Sys::Proc::System::Freebsd::LibC
16
+ include Sys::Proc::Concern::Helper
17
+
18
+ # Sets the name of the program
19
+ # to be the last component of the progname argument.
20
+ #
21
+ # Since a pointer to the given string is kept as the program name,
22
+ # it should not be modified for the rest of the program's lifetime.
23
+ #
24
+ # ```
25
+ # #include <stdlib.h>
26
+ #
27
+ # void setprogname(const char *progname);
28
+ # ```
29
+ #
30
+ # @return [Boolean]
31
+ def setprogname(progname)
32
+ function('setprogname', [Fiddle::TYPE_VOIDP]).call(progname.to_s)
33
+
34
+ true
35
+ end
36
+
37
+ # Return the name of the program.
38
+ #
39
+ # If the name has not been set yet, it will return NULL.
40
+ #
41
+ # ```
42
+ # #include <stdlib.h>
43
+ #
44
+ # const char * getprogname(void);
45
+ # ```
46
+ #
47
+ # @return [String]
48
+ def getprogname
49
+ function('getprogname', nil, Fiddle::TYPE_VOIDP).call.to_s
50
+ end
51
+
52
+ protected
53
+
54
+ # Common method binding over system libc
55
+ #
56
+ # @return [Fiddle::Function]
57
+ def function(fname, args = [], ret_type = Fiddle::TYPE_INT)
58
+ config = {
59
+ handle: helper.get(:lib_c).dlopen[fname],
60
+ args: args || [],
61
+ ret_type: ret_type
62
+ }
63
+
64
+ Fiddle::Function.new(*config.values)
65
+ end
66
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sys/proc/system'
4
+
5
+ # GNU/Linux specific namespace
6
+ module Sys::Proc::System::LinuxGnu
7
+
8
+ end
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'fiddle'
4
+ require 'sys/proc/system/linux_gnu'
5
+ require 'sys/proc/concern/helper'
6
+
7
+ # Operations on a process
8
+ #
9
+ # @see http://man7.org/linux/man-pages/man2/prctl.2.html
10
+ #
11
+ # ~~~~
12
+ # #include <sys/prctl.h>
13
+ #
14
+ # int prctl(int option, unsigned long arg2, unsigned long arg3,
15
+ # unsigned long arg4, unsigned long arg5);
16
+ # ~~~~
17
+ class Sys::Proc::System::LinuxGnu::Prctl
18
+ include Sys::Proc::Concern::Helper
19
+ attr_reader :function
20
+
21
+ # Set the name of the calling threadThe attribute is
22
+ # likewise accessible via /proc/self/task/[tid]/comm, where tid
23
+ # is the name of the calling thread.
24
+ PR_SET_NAME = 15 # (since Linux 2.6.9)
25
+
26
+ # Return the name of the calling thread, in the buffer pointed
27
+ # to by (char *) arg2. The buffer should allow space for up to
28
+ # 16 bytes; the returned string will be null-terminated.
29
+ PR_GET_NAME = 16 # (since Linux 2.6.11)
30
+
31
+ # Set the name of the calling thread
32
+ #
33
+ # @param [String] name
34
+ # @return [Boolean]
35
+ def setprogname(name)
36
+ name = name.to_s
37
+
38
+ call(PR_SET_NAME, name).zero?
39
+ end
40
+
41
+ # Return the name of the calling thread
42
+ #
43
+ # @return [String]
44
+ def getprogname
45
+ ptr = Fiddle::Pointer.malloc(32, Fiddle::RUBY_FREE.to_i)
46
+
47
+ call(PR_GET_NAME, ptr.to_i)
48
+ ptr.to_s
49
+ end
50
+
51
+ # prctl() is called with a first argument describing what to do (with
52
+ # values defined in <linux/prctl.h>), and further arguments with a
53
+ # significance depending on the first one.
54
+ #
55
+ # @return [Fixnum]
56
+ def call(*args)
57
+ args += ([0] * 5).slice(args.size..-1)
58
+
59
+ function.call(*args)
60
+ end
61
+
62
+ protected
63
+
64
+ # @return [Fiddle::Function]
65
+ def function
66
+ config = {
67
+ handle: helper.get(:lib_c).dlopen['prctl'],
68
+ args: [Fiddle::TYPE_INT, Fiddle::TYPE_VOIDP,
69
+ Fiddle::TYPE_LONG, Fiddle::TYPE_LONG, Fiddle::TYPE_LONG],
70
+ ret_type: Fiddle::TYPE_INT
71
+ }
72
+
73
+ Fiddle::Function.new(*config.values)
74
+ end
75
+ end
@@ -0,0 +1,16 @@
1
+ ---
2
+ major: 1
3
+ minor: 0
4
+ patch: 0
5
+ authors: ['Dimitri Arrigoni']
6
+ email: 'dimitri@arrigoni.me'
7
+ date: '2017-05-20'
8
+ summary: 'An interface providing cross-platform process operations'
9
+ description: 'An interface providing cross-platform process operations'
10
+ licenses: ['GPL-3.0']
11
+ license_header: 'Copyright (C) 2017 Dimitri Arrigoni <dimitri@arrigoni.me>
12
+ License GPLv3+: GNU GPL version 3 or later
13
+ <http://www.gnu.org/licenses/gpl.html>.
14
+ This is free software: you are free to change and redistribute it.
15
+ There is NO WARRANTY, to the extent permitted by law.'
16
+ homepage: 'https://github.com/SwagDevOps/sys-proc'
metadata ADDED
@@ -0,0 +1,288 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sys-proc
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Dimitri Arrigoni
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-05-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: version_info
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.9'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.9'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '11.3'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '11.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.10'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.10'
69
+ - !ruby/object:Gem::Dependency
70
+ name: dotenv
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.2'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: cliver
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 0.3.2
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 0.3.2
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.47'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.47'
111
+ - !ruby/object:Gem::Dependency
112
+ name: gemspec_deps_gen
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: 1.1.2
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: 1.1.2
125
+ - !ruby/object:Gem::Dependency
126
+ name: tenjin
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.7'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.7'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rainbow
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '2.2'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '2.2'
153
+ - !ruby/object:Gem::Dependency
154
+ name: tty-editor
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '0.2'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '0.2'
167
+ - !ruby/object:Gem::Dependency
168
+ name: yard
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '0.9'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '0.9'
181
+ - !ruby/object:Gem::Dependency
182
+ name: redcarpet
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: '3.4'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: '3.4'
195
+ - !ruby/object:Gem::Dependency
196
+ name: github-markup
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '1.4'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '1.4'
209
+ - !ruby/object:Gem::Dependency
210
+ name: rspec
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '3.4'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '3.4'
223
+ - !ruby/object:Gem::Dependency
224
+ name: rspec-sleeping_king_studios
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: '2.1'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - "~>"
235
+ - !ruby/object:Gem::Version
236
+ version: '2.1'
237
+ description: An interface providing cross-platform process operations
238
+ email: dimitri@arrigoni.me
239
+ executables: []
240
+ extensions: []
241
+ extra_rdoc_files: []
242
+ files:
243
+ - src/lib/sys-proc.rb
244
+ - src/lib/sys/proc.rb
245
+ - src/lib/sys/proc/concern.rb
246
+ - src/lib/sys/proc/concern/helper.rb
247
+ - src/lib/sys/proc/concern/static_instance.rb
248
+ - src/lib/sys/proc/concern/system.rb
249
+ - src/lib/sys/proc/concern/system/freebsd.rb
250
+ - src/lib/sys/proc/concern/system/generic.rb
251
+ - src/lib/sys/proc/concern/system/linux_gnu.rb
252
+ - src/lib/sys/proc/concern/versionable.rb
253
+ - src/lib/sys/proc/helper.rb
254
+ - src/lib/sys/proc/helper/inflector.rb
255
+ - src/lib/sys/proc/helper/lib_c.rb
256
+ - src/lib/sys/proc/helper/system.rb
257
+ - src/lib/sys/proc/helper/system/generic.rb
258
+ - src/lib/sys/proc/system.rb
259
+ - src/lib/sys/proc/system/freebsd.rb
260
+ - src/lib/sys/proc/system/freebsd/lib_c.rb
261
+ - src/lib/sys/proc/system/linux_gnu.rb
262
+ - src/lib/sys/proc/system/linux_gnu/prctl.rb
263
+ - src/lib/sys/proc/version_info.yml
264
+ homepage: https://github.com/SwagDevOps/sys-proc
265
+ licenses:
266
+ - GPL-3.0
267
+ metadata: {}
268
+ post_install_message:
269
+ rdoc_options: []
270
+ require_paths:
271
+ - src/lib
272
+ required_ruby_version: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - ">="
275
+ - !ruby/object:Gem::Version
276
+ version: 2.2.2
277
+ required_rubygems_version: !ruby/object:Gem::Requirement
278
+ requirements:
279
+ - - ">="
280
+ - !ruby/object:Gem::Version
281
+ version: '0'
282
+ requirements: []
283
+ rubyforge_project:
284
+ rubygems_version: 2.5.1
285
+ signing_key:
286
+ specification_version: 4
287
+ summary: An interface providing cross-platform process operations
288
+ test_files: []