process_executer 1.0.0 → 1.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +19 -0
- data/lib/process_executer/options.rb +24 -3
- data/lib/process_executer/version.rb +1 -1
- data/lib/process_executer.rb +3 -2
- data/process_executer.gemspec +2 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05077fa5757c373b7587a35c2f32aaa3deeaa5708845ec5db485fccb4f29bc5c
|
4
|
+
data.tar.gz: 9b1fda5d3669f6f09100e2b4b47ec8905d8448632cbd1998af0e606d724967cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f48795cd44788c27a9931a1960e9d5f83d72ab794fd37d5d24b0a3110a1582211f80cdeef4e8cd171183f3ef9ccfec615f60fda46dd480cdaed10856d69a373
|
7
|
+
data.tar.gz: 54b9a282d8dc8d0ebca8e5e2b1368a0040ec140c5a793d438fe4891363d74574b31541d9d22aea566f09f8b3284cb7d12c49f071f9dca3cd29bbcd8df9babfbe
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,25 @@ All notable changes to the process_executer gem will be documented in this file.
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
7
|
|
8
|
+
## v1.0.2 (2024-02-01)
|
9
|
+
|
10
|
+
[Full Changelog](https://github.com/main-branch/process_executer/compare/v1.0.1..v1.0.2)
|
11
|
+
|
12
|
+
Changes since v1.0.1:
|
13
|
+
|
14
|
+
* 76ffb91 An invalid timeout value should raise an ArgumentError (#41)
|
15
|
+
* b748819 Release v1.0.1 (#40)
|
16
|
+
|
17
|
+
## v1.0.1 (2024-01-04)
|
18
|
+
|
19
|
+
[Full Changelog](https://github.com/main-branch/process_executer/compare/v1.0.0..v1.0.1)
|
20
|
+
|
21
|
+
Changes since v1.0.0:
|
22
|
+
|
23
|
+
* f434aa1 Add an experimental build for jruby-head on windows (#15)
|
24
|
+
* 97dbcf5 Make updates resulting from doc review (#38)
|
25
|
+
* 93eab18 Release v1.0.0 (#37)
|
26
|
+
|
8
27
|
## v1.0.0 (2023-12-31)
|
9
28
|
|
10
29
|
[Full Changelog](https://github.com/main-branch/process_executer/compare/v0.7.0..v1.0.0)
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'forwardable'
|
4
4
|
require 'ostruct'
|
5
|
+
require 'pp'
|
5
6
|
|
6
7
|
module ProcessExecuter
|
7
8
|
# Validate ProcessExecuter::Executer#spawn options and return Process.spawn options
|
@@ -27,13 +28,14 @@ module ProcessExecuter
|
|
27
28
|
close_others chdir
|
28
29
|
].freeze
|
29
30
|
|
30
|
-
# These options are allowed but should NOT be passed
|
31
|
+
# These options are allowed by `ProcessExecuter.spawn` but should NOT be passed
|
32
|
+
# to `Process.spawn`
|
31
33
|
#
|
32
34
|
NON_SPAWN_OPTIONS = %i[
|
33
35
|
timeout
|
34
36
|
].freeze
|
35
37
|
|
36
|
-
# Any `SPAWN_OPTIONS
|
38
|
+
# Any `SPAWN_OPTIONS` set to `NOT_SET` will not be passed to `Process.spawn`
|
37
39
|
#
|
38
40
|
NOT_SET = :not_set
|
39
41
|
|
@@ -76,7 +78,7 @@ module ProcessExecuter
|
|
76
78
|
# @param options [Hash] Process.spawn options plus additional options listed below.
|
77
79
|
#
|
78
80
|
# See [Process.spawn](https://ruby-doc.org/core/Process.html#method-c-spawn)
|
79
|
-
# for a list of valid.
|
81
|
+
# for a list of valid options that can be passed to `Process.spawn`.
|
80
82
|
#
|
81
83
|
# @option options [Integer, Float, nil] :timeout
|
82
84
|
# Number of seconds to wait for the process to terminate. Any number
|
@@ -86,6 +88,7 @@ module ProcessExecuter
|
|
86
88
|
def initialize(**options)
|
87
89
|
assert_no_unknown_options(options)
|
88
90
|
@options = DEFAULTS.merge(options)
|
91
|
+
assert_timeout_is_valid
|
89
92
|
end
|
90
93
|
|
91
94
|
# Returns the options to be passed to Process.spawn
|
@@ -129,6 +132,24 @@ module ProcessExecuter
|
|
129
132
|
raise ArgumentError, "Unknown options: #{unknown_options.join(', ')}" unless unknown_options.empty?
|
130
133
|
end
|
131
134
|
|
135
|
+
# Raise an error if timeout is not a real non-negative number
|
136
|
+
# @return [void]
|
137
|
+
# @raise [ArgumentError] if timeout is not a real non-negative number
|
138
|
+
# @api private
|
139
|
+
def assert_timeout_is_valid
|
140
|
+
return if @options[:timeout].nil?
|
141
|
+
return if @options[:timeout].is_a?(Numeric) && @options[:timeout].real? && !@options[:timeout].negative?
|
142
|
+
|
143
|
+
raise ArgumentError, invalid_timeout_message
|
144
|
+
end
|
145
|
+
|
146
|
+
# The message to be used when raising an error for an invalid timeout
|
147
|
+
# @return [String]
|
148
|
+
# @api private
|
149
|
+
def invalid_timeout_message
|
150
|
+
"timeout must be nil or a real non-negative number but was #{options[:timeout].pretty_inspect}"
|
151
|
+
end
|
152
|
+
|
132
153
|
# Determine if the given option is a valid option
|
133
154
|
# @param option [Symbol] the option to be tested
|
134
155
|
# @return [Boolean] true if the given option is a valid option
|
data/lib/process_executer.rb
CHANGED
@@ -12,7 +12,8 @@ require 'timeout'
|
|
12
12
|
module ProcessExecuter
|
13
13
|
# Execute the specified command as a subprocess and return the exit status
|
14
14
|
#
|
15
|
-
# This method blocks until the
|
15
|
+
# This is a convenience method that calls Process.spawn and blocks until the
|
16
|
+
# command has terminated.
|
16
17
|
#
|
17
18
|
# The command will be send the SIGKILL signal if it does not terminate within
|
18
19
|
# the specified timeout.
|
@@ -38,7 +39,7 @@ module ProcessExecuter
|
|
38
39
|
# documentation for valid command and options
|
39
40
|
#
|
40
41
|
# @see ProcessExecuter::Options#initialize See ProcessExecuter::Options#initialize
|
41
|
-
# for
|
42
|
+
# for options that may be specified
|
42
43
|
#
|
43
44
|
# @param command [Array<String>] the command to execute
|
44
45
|
# @param options_hash [Hash] the options to use when exectuting the command
|
data/process_executer.gemspec
CHANGED
@@ -18,7 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
|
19
19
|
spec.metadata['homepage_uri'] = spec.homepage
|
20
20
|
spec.metadata['source_code_uri'] = 'https://github.com/main-branch/process_executer'
|
21
|
-
spec.metadata['changelog_uri'] =
|
21
|
+
spec.metadata['changelog_uri'] = "https://rubydoc.info/gems/#{spec.name}/#{spec.version}/file/CHANGELOG.md"
|
22
|
+
spec.metadata['documentation_uri'] = "https://rubydoc.info/gems/#{spec.name}/#{spec.version}"
|
22
23
|
|
23
24
|
# Specify which files should be added to the gem when it is released.
|
24
25
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: process_executer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Couball
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler-audit
|
@@ -199,7 +199,8 @@ metadata:
|
|
199
199
|
allowed_push_host: https://rubygems.org
|
200
200
|
homepage_uri: https://github.com/main-branch/process_executer
|
201
201
|
source_code_uri: https://github.com/main-branch/process_executer
|
202
|
-
changelog_uri: https://rubydoc.info/gems/process_executer/file/CHANGELOG.md
|
202
|
+
changelog_uri: https://rubydoc.info/gems/process_executer/1.0.2/file/CHANGELOG.md
|
203
|
+
documentation_uri: https://rubydoc.info/gems/process_executer/1.0.2
|
203
204
|
rubygems_mfa_required: 'true'
|
204
205
|
post_install_message:
|
205
206
|
rdoc_options: []
|