process_executer 0.6.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.markdownlint.yml +1 -1
- data/.rubocop.yml +4 -1
- data/.tool-versions +1 -0
- data/CHANGELOG.md +22 -0
- data/README.md +86 -18
- data/Rakefile +0 -4
- data/lib/process_executer/monitored_pipe.rb +4 -2
- data/lib/process_executer/version.rb +1 -1
- data/process_executer.gemspec +8 -11
- metadata +24 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec0548ff8356b9466db5fe9c9992e134010c9842561e1b0c0b95a5418fb2c2d2
|
4
|
+
data.tar.gz: 7b9ead3538f7117b453a5353ad0a1ed352b7c60fa86fbacaa12081ff32b411cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a35f9cd143bf7236efbb107a8de130784c195bedb83e95262cc26ae7e2b7e586b7230bdf1ad680c508a5dd8b2c3398c89290ad01a1e5914e165179c298bf5b11
|
7
|
+
data.tar.gz: 5dabb78fd2151f587078b3a139974eb390e23e86be961ce93a7d4f65dd161007e8a175b36b208d13939d38cd5dab41f0a446e7d5213aee34c7f07273c4804f49
|
data/.markdownlint.yml
CHANGED
data/.rubocop.yml
CHANGED
@@ -7,7 +7,7 @@ AllCops:
|
|
7
7
|
SuggestExtensions: false
|
8
8
|
# RuboCop enforces rules depending on the oldest version of Ruby which
|
9
9
|
# your project supports:
|
10
|
-
TargetRubyVersion:
|
10
|
+
TargetRubyVersion: 3.0
|
11
11
|
|
12
12
|
# The default max line length is 80 characters
|
13
13
|
Layout/LineLength:
|
@@ -18,3 +18,6 @@ Metrics/BlockLength:
|
|
18
18
|
Exclude:
|
19
19
|
- "spec/**/*_spec.rb"
|
20
20
|
- "*.gemspec"
|
21
|
+
|
22
|
+
Gemspec/DevelopmentDependencies:
|
23
|
+
Enabled: false
|
data/.tool-versions
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby 3.0.5
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,28 @@ 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.0 (2023-12-31)
|
9
|
+
|
10
|
+
[Full Changelog](https://github.com/main-branch/process_executer/compare/v0.7.0..v1.0.0)
|
11
|
+
|
12
|
+
Changes since v0.7.0:
|
13
|
+
|
14
|
+
* e11f03e Separate semver PR label check into its own workflow (#36)
|
15
|
+
* eabcc3e Update min req Ruby version from 2.7 to 3.0 (#32)
|
16
|
+
* 5483bb8 Update spec_helper.rb to new standard (#31)
|
17
|
+
* 4a27341 Update all development dependencies to latest versions (#30)
|
18
|
+
* ea7513d Enforce that a semver label is present on PRs (#28)
|
19
|
+
* 0aa26cd Instruct Rubocop that dev deps go in gemspec (#29)
|
20
|
+
* 53cb526 Add a truffle-ruby build on ubuntu (#18)
|
21
|
+
|
22
|
+
## v0.7.0 (2023-02-17)
|
23
|
+
|
24
|
+
[Full Changelog](https://github.com/main-branch/process_executer/compare/v0.6.1..v0.7.0)
|
25
|
+
|
26
|
+
Changes since v0.6.1:
|
27
|
+
|
28
|
+
* c5c07fd Reduce the time spent waiting for output (#25)
|
29
|
+
|
8
30
|
## v0.6.1 (2023-02-12)
|
9
31
|
|
10
32
|
[Full Changelog](https://github.com/main-branch/process_executer/compare/v0.6.0..v0.6.1)
|
data/README.md
CHANGED
@@ -7,10 +7,21 @@
|
|
7
7
|
[![Maintainability](https://api.codeclimate.com/v1/badges/0b5c67e5c2a773009cd0/maintainability)](https://codeclimate.com/github/main-branch/process_executer/maintainability)
|
8
8
|
[![Test Coverage](https://api.codeclimate.com/v1/badges/0b5c67e5c2a773009cd0/test_coverage)](https://codeclimate.com/github/main-branch/process_executer/test_coverage)
|
9
9
|
|
10
|
-
|
10
|
+
* [Usage](#usage)
|
11
|
+
* [ProcessExecuter::MonitoredPipe](#processexecutermonitoredpipe)
|
12
|
+
* [ProcessExecuter.spawn](#processexecuterspawn)
|
13
|
+
* [Installation](#installation)
|
14
|
+
* [Contributing](#contributing)
|
15
|
+
* [Reporting Issues](#reporting-issues)
|
16
|
+
* [Developing](#developing)
|
17
|
+
* [Submitting Pull Requests](#submitting-pull-requests)
|
18
|
+
* [Releasing](#releasing)
|
19
|
+
* [License](#license)
|
20
|
+
|
21
|
+
## Usage
|
11
22
|
|
12
23
|
[Full YARD documentation](https://rubydoc.info/gems/process_executer/) for this
|
13
|
-
gem is hosted on RubyGems.org.
|
24
|
+
gem is hosted on RubyGems.org. Read below of an overview and several examples.
|
14
25
|
|
15
26
|
This gem contains the following important classes:
|
16
27
|
|
@@ -18,7 +29,7 @@ This gem contains the following important classes:
|
|
18
29
|
|
19
30
|
`ProcessExecuter::MonitoredPipe` streams data sent through a pipe to one or more writers.
|
20
31
|
|
21
|
-
When a new `MonitoredPipe` is created,
|
32
|
+
When a new `MonitoredPipe` is created, a pipe is created (via IO.pipe) and
|
22
33
|
a thread is created which reads data as it is written written to the pipe.
|
23
34
|
|
24
35
|
Data that is read from the pipe is written one or more writers passed to
|
@@ -82,27 +93,84 @@ If bundler is not being used to manage dependencies, install the gem by executin
|
|
82
93
|
gem install process_executer
|
83
94
|
```
|
84
95
|
|
85
|
-
##
|
96
|
+
## Contributing
|
86
97
|
|
87
|
-
|
98
|
+
### Reporting Issues
|
88
99
|
|
89
|
-
|
100
|
+
Bug reports and other support requests are welcome on [this project's
|
101
|
+
GitHub issue tracker](https://github.com/main-branch/process_executer)
|
90
102
|
|
91
|
-
|
92
|
-
`rake spec` to run the tests. You can also run `bin/console` for an interactive
|
93
|
-
prompt that will allow you to experiment.
|
103
|
+
### Developing
|
94
104
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
commits and the created tag, and push the `.gem` file to
|
99
|
-
[rubygems.org](https://rubygems.org).
|
105
|
+
Clone the repo, run `bin/setup` to install dependencies, and then run `rake spec` to
|
106
|
+
run the tests. You can also run `bin/console` for an interactive prompt that will
|
107
|
+
allow you to experiment.
|
100
108
|
|
101
|
-
|
109
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
110
|
+
|
111
|
+
### Submitting Pull Requests
|
112
|
+
|
113
|
+
In order for a pull request to be merged, it must be approved by a code owner and
|
114
|
+
include a semver label.
|
115
|
+
|
116
|
+
The approval must be done using the Github PR Review process by a code owner defined
|
117
|
+
in the project's CODEOWNERS file.
|
118
|
+
|
119
|
+
The semver label indicates the type of change so that the gem version can be
|
120
|
+
increments according to semver rules prior to release. One and only one of the
|
121
|
+
following labels must added to the PR:
|
122
|
+
|
123
|
+
* **`major-change`**
|
124
|
+
|
125
|
+
Use when the PR includes incompatible API or functional changes.
|
126
|
+
|
127
|
+
This typically occurs when the changes introduced could break existing code that
|
128
|
+
depends on this gem. For example, removing a public method, changing a method's
|
129
|
+
signature, or altering the expected behavior of a method in a way that would
|
130
|
+
require changes in the dependent code.
|
131
|
+
|
132
|
+
* **`minor-change`**
|
133
|
+
|
134
|
+
Use when the PR adds functionality in a backward-compatible manner.
|
135
|
+
|
136
|
+
This includes adding new features, enhancements, or deprecating existing features
|
137
|
+
as long as the deprecation itself doesn't break compatibility.
|
138
|
+
|
139
|
+
It's also common to include substantial improvements or optimizations in this
|
140
|
+
category, as long as they don't alter the expected behavior of the existing API.
|
141
|
+
|
142
|
+
* **`patch-change`**
|
143
|
+
|
144
|
+
Use when the PR includes small user-facing changes that are backward-compatible and
|
145
|
+
do not introduce new functionality.
|
146
|
+
|
147
|
+
This includes bug fixes or other internal changes that do not affect the API such
|
148
|
+
as refactoring code, improving performance, or updating user documentation.
|
149
|
+
|
150
|
+
* **`internal-change`**
|
151
|
+
|
152
|
+
Use when the PR includes changes that are NOT user facing and will NOT require a
|
153
|
+
release.
|
154
|
+
|
155
|
+
This includes updates to developer documentation, comments, GitHub Actions, minor
|
156
|
+
refactorings, and fixing Rubocop offenses.
|
157
|
+
|
158
|
+
### Releasing
|
159
|
+
|
160
|
+
To release a new version, first determine the proper semver increment based on the
|
161
|
+
PRs included in the release.
|
162
|
+
|
163
|
+
Then in the root directory of this project with the `main` branch checked out, run
|
164
|
+
the following command:
|
165
|
+
|
166
|
+
```shell
|
167
|
+
create-github-release {major|minor|patch}
|
168
|
+
```
|
102
169
|
|
103
|
-
|
104
|
-
|
170
|
+
Follow the directions given by the `create-github-release` to publish the new version
|
171
|
+
of the gem.
|
105
172
|
|
106
173
|
## License
|
107
174
|
|
108
|
-
The gem is available as open source under the terms of the [MIT
|
175
|
+
The gem is available as open source under the terms of the [MIT
|
176
|
+
License](https://opensource.org/licenses/MIT).
|
data/Rakefile
CHANGED
@@ -86,7 +86,7 @@ module ProcessExecuter
|
|
86
86
|
return unless state == :open
|
87
87
|
|
88
88
|
@state = :closing
|
89
|
-
sleep 0.
|
89
|
+
sleep 0.001 until state == :closed
|
90
90
|
end
|
91
91
|
|
92
92
|
# Return the write end of the pipe so that data can be written to it
|
@@ -149,6 +149,8 @@ module ProcessExecuter
|
|
149
149
|
# @api private
|
150
150
|
#
|
151
151
|
def write(data)
|
152
|
+
raise IOError, 'closed stream' unless state == :open
|
153
|
+
|
152
154
|
pipe_writer.write(data)
|
153
155
|
end
|
154
156
|
|
@@ -289,7 +291,7 @@ module ProcessExecuter
|
|
289
291
|
@state = :closing
|
290
292
|
end
|
291
293
|
rescue IO::WaitReadable
|
292
|
-
pipe_reader.wait_readable(0.
|
294
|
+
pipe_reader.wait_readable(0.001)
|
293
295
|
end
|
294
296
|
|
295
297
|
# Read any remaining data from the pipe and close it
|
data/process_executer.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.description = 'An API for executing commands in a subprocess'
|
13
13
|
spec.homepage = 'https://github.com/main-branch/process_executer'
|
14
14
|
spec.license = 'MIT'
|
15
|
-
spec.required_ruby_version = '>=
|
15
|
+
spec.required_ruby_version = '>= 3.0.0'
|
16
16
|
|
17
17
|
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
18
18
|
|
@@ -31,20 +31,17 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
32
32
|
spec.require_paths = ['lib']
|
33
33
|
|
34
|
-
# Uncomment to register a new dependency of your gem
|
35
|
-
# spec.add_dependency "example-gem", "~> 1.0"
|
36
|
-
spec.add_development_dependency 'bump', '~> 0.10'
|
37
34
|
spec.add_development_dependency 'bundler-audit', '~> 0.9'
|
38
|
-
spec.add_development_dependency 'create_github_release', '~> 1.
|
39
|
-
spec.add_development_dependency 'rake', '~> 13.
|
40
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
41
|
-
spec.add_development_dependency 'rubocop', '~> 1.
|
42
|
-
spec.add_development_dependency '
|
35
|
+
spec.add_development_dependency 'create_github_release', '~> 1.1'
|
36
|
+
spec.add_development_dependency 'rake', '~> 13.1'
|
37
|
+
spec.add_development_dependency 'rspec', '~> 3.12'
|
38
|
+
spec.add_development_dependency 'rubocop', '~> 1.59'
|
39
|
+
spec.add_development_dependency 'semverify', '~> 0.3'
|
40
|
+
spec.add_development_dependency 'simplecov', '~> 0.22'
|
43
41
|
spec.add_development_dependency 'simplecov-lcov', '~> 0.8'
|
44
|
-
spec.add_development_dependency 'solargraph', '~> 0.47'
|
45
42
|
|
46
43
|
unless RUBY_PLATFORM == 'java'
|
47
|
-
spec.add_development_dependency 'redcarpet', '~> 3.
|
44
|
+
spec.add_development_dependency 'redcarpet', '~> 3.6'
|
48
45
|
spec.add_development_dependency 'yard', '~> 0.9', '>= 0.9.28'
|
49
46
|
spec.add_development_dependency 'yardstick', '~> 0.9'
|
50
47
|
end
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: process_executer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Couball
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bump
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0.10'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0.10'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: bundler-audit
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,112 +30,112 @@ dependencies:
|
|
44
30
|
requirements:
|
45
31
|
- - "~>"
|
46
32
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1.
|
33
|
+
version: '1.1'
|
48
34
|
type: :development
|
49
35
|
prerelease: false
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
38
|
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1.
|
40
|
+
version: '1.1'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: rake
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
45
|
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version: '13.
|
47
|
+
version: '13.1'
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version: '13.
|
54
|
+
version: '13.1'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: rspec
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
59
|
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
|
-
version: '3.
|
61
|
+
version: '3.12'
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
66
|
- - "~>"
|
81
67
|
- !ruby/object:Gem::Version
|
82
|
-
version: '3.
|
68
|
+
version: '3.12'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: rubocop
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
73
|
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version: '1.
|
75
|
+
version: '1.59'
|
90
76
|
type: :development
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
80
|
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version: '1.
|
82
|
+
version: '1.59'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
84
|
+
name: semverify
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
87
|
- - "~>"
|
102
88
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0.
|
89
|
+
version: '0.3'
|
104
90
|
type: :development
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
94
|
- - "~>"
|
109
95
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0.
|
96
|
+
version: '0.3'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
|
-
name: simplecov
|
98
|
+
name: simplecov
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
101
|
- - "~>"
|
116
102
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0.
|
103
|
+
version: '0.22'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
107
|
requirements:
|
122
108
|
- - "~>"
|
123
109
|
- !ruby/object:Gem::Version
|
124
|
-
version: '0.
|
110
|
+
version: '0.22'
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
112
|
+
name: simplecov-lcov
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
128
114
|
requirements:
|
129
115
|
- - "~>"
|
130
116
|
- !ruby/object:Gem::Version
|
131
|
-
version: '0.
|
117
|
+
version: '0.8'
|
132
118
|
type: :development
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
122
|
- - "~>"
|
137
123
|
- !ruby/object:Gem::Version
|
138
|
-
version: '0.
|
124
|
+
version: '0.8'
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
126
|
name: redcarpet
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
142
128
|
requirements:
|
143
129
|
- - "~>"
|
144
130
|
- !ruby/object:Gem::Version
|
145
|
-
version: '3.
|
131
|
+
version: '3.6'
|
146
132
|
type: :development
|
147
133
|
prerelease: false
|
148
134
|
version_requirements: !ruby/object:Gem::Requirement
|
149
135
|
requirements:
|
150
136
|
- - "~>"
|
151
137
|
- !ruby/object:Gem::Version
|
152
|
-
version: '3.
|
138
|
+
version: '3.6'
|
153
139
|
- !ruby/object:Gem::Dependency
|
154
140
|
name: yard
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -194,6 +180,7 @@ files:
|
|
194
180
|
- ".markdownlint.yml"
|
195
181
|
- ".rspec"
|
196
182
|
- ".rubocop.yml"
|
183
|
+
- ".tool-versions"
|
197
184
|
- ".yardopts"
|
198
185
|
- CHANGELOG.md
|
199
186
|
- Gemfile
|
@@ -222,14 +209,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
222
209
|
requirements:
|
223
210
|
- - ">="
|
224
211
|
- !ruby/object:Gem::Version
|
225
|
-
version:
|
212
|
+
version: 3.0.0
|
226
213
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
227
214
|
requirements:
|
228
215
|
- - ">="
|
229
216
|
- !ruby/object:Gem::Version
|
230
217
|
version: '0'
|
231
218
|
requirements: []
|
232
|
-
rubygems_version: 3.
|
219
|
+
rubygems_version: 3.2.33
|
233
220
|
signing_key:
|
234
221
|
specification_version: 4
|
235
222
|
summary: An API for executing commands in a subprocess
|