coque 0.7.1 → 0.8.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6df60f837355fa035e81e14eff31a1df0f462408
4
- data.tar.gz: 5f044bde907269b17ee5279969f13a01840066aa
2
+ SHA256:
3
+ metadata.gz: 6f9a270751ea085a375d71bc3b7a7ccd34237f4094dce63ffbffb66005b123ff
4
+ data.tar.gz: 89e0e4065a6eb61c27c1b41e2ecd1dd84470b83ba934e3421ea8ee119840d5cd
5
5
  SHA512:
6
- metadata.gz: 4b89af30708ef7db84f92238f1a50eefc1bbba04ff1726c746c5a39ba228cd768958e738cc39bb7e4cbca12b0575beb918ce95f4a4892b3f5bedcb5c27e310a9
7
- data.tar.gz: 2b4c7d528d05b415704c1dd33090b2b1e0f70b673d9c8a726ec99d6fad5cfc8a71e915c785c972e1301d610ccd9bfe7fed168a4221847506034b932af9a19fc8
6
+ metadata.gz: 64b833a5a39cc7ed3a65339af2ac13c0a3f0e0461247cd899c69deab5a9a7d30ffccb7bae4da16a7fed175638a59a19aaa43c2335aba109a5105b7b27e0f5682
7
+ data.tar.gz: 853b5a31c91d099dc88e0881672c4fa8b465bca04ae70d553dcac9daed4c21f29501a4818fb4b04a42d8bc6e1ab021c32ae5e4a411dc3d5e3a1f1a7e44dc5aa8
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- coque (0.7.1)
4
+ coque (0.8.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -10,7 +10,7 @@ GEM
10
10
  builder (3.2.3)
11
11
  coderay (1.1.2)
12
12
  docile (1.3.1)
13
- json (2.1.0)
13
+ json (2.3.1)
14
14
  method_source (0.9.0)
15
15
  minitest (5.11.3)
16
16
  minitest-reporters (1.2.0)
@@ -21,7 +21,7 @@ GEM
21
21
  pry (0.11.2)
22
22
  coderay (~> 1.1.0)
23
23
  method_source (~> 0.9.0)
24
- rake (12.3.1)
24
+ rake (13.0.1)
25
25
  ruby-progressbar (1.9.0)
26
26
  simplecov (0.16.1)
27
27
  docile (~> 1.1)
@@ -38,8 +38,8 @@ DEPENDENCIES
38
38
  minitest (~> 5.11)
39
39
  minitest-reporters
40
40
  pry
41
- rake (~> 12.3)
41
+ rake (~> 13.0)
42
42
  simplecov
43
43
 
44
44
  BUNDLED WITH
45
- 2.0.1
45
+ 2.2.24
data/README.md CHANGED
@@ -102,6 +102,51 @@ Coque also includes a `Coque.source` helper for feeding Ruby enumerables into sh
102
102
  # => ["500"]
103
103
  ```
104
104
 
105
+ #### Asynchrony and Waiting on Processes
106
+
107
+ Running a Coque command forks a new process, and by default these processes run asynchronously. Calling `.run` on a Coque command or pipeline returns a `Coque::Result` object which can be used to get the output (`.to_a`) or exit code (`.exit_code`) of the process:
108
+
109
+ ```rb
110
+ result = Coque['echo', 'hi'].run
111
+ # => #<Coque::Result:0x000055da63437838 @out=#<IO:fd 15>, @pid=29236>
112
+ puts "its running in the background..."
113
+ its running in the background...
114
+ result.to_a
115
+ # => ["hi"]
116
+ result.exit_code
117
+ # => 0
118
+ ```
119
+
120
+ However you can also just use `.wait` to block on a process while it runs:
121
+
122
+ ```rb
123
+ result = Coque['echo', 'hi'].run.wait
124
+ # => #<Coque::Result:0x000055da633c98b0 @exit_code=0, @out=#<IO:fd 17>, @pid=29536>
125
+ ```
126
+
127
+ Or, use `.run!` to block on the process _and_ raise an exception if it exits with a non-zero response:
128
+
129
+ ```
130
+ Coque["head", "/usr/share/dict/words"].run!
131
+ # => nil
132
+ Coque["head", "/usr/share/dict/pizza"].run!
133
+ # head: cannot open '/usr/share/dict/pizza' for reading: No such file or directory
134
+ # RuntimeError: Coque Command Failed: <Coque::Sh head /usr/share/dict/pizza>
135
+ from /home/horace/.gem/ruby/2.4.4/gems/coque-0.7.1/lib/coque/runnable.rb:13:in `run!'
136
+ ```
137
+
138
+ There's also a `to_a!` variant on commands which combines the error handling of `run!` with the array-slurping of stdout:
139
+
140
+ ```
141
+ Coque['head', '-n 1', '/usr/share/dict/words'].to_a!
142
+ => ["A"]
143
+
144
+ Coque['head', '-n 1', '/usr/share/dict/asdf'].to_a!
145
+ head: cannot open '/usr/share/dict/asdf' for reading: No such file or directory
146
+ RuntimeError: Coque Command Failed: <Coque::Sh head -n 1 /usr/share/dict/asdf>
147
+ from /code/coque/lib/coque/runnable.rb:11:in `to_a!'
148
+ ```
149
+
105
150
  #### Named (Non-Operator) Method Alternatives
106
151
 
107
152
  The main piping and redirection methods also include named alternatives:
data/coque.gemspec CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.require_paths = ["lib"]
32
32
 
33
33
  spec.add_development_dependency "bundler", "~> 2.0"
34
- spec.add_development_dependency "rake", "~> 12.3"
34
+ spec.add_development_dependency "rake", "~> 13.0"
35
35
  spec.add_development_dependency "minitest", "~> 5.11"
36
36
  spec.add_development_dependency "minitest-reporters"
37
37
  spec.add_development_dependency "pry"
data/lib/coque/result.rb CHANGED
@@ -24,7 +24,7 @@ class Coque::Result
24
24
  end
25
25
 
26
26
  def wait
27
- _, status = Process.waitpid2(pid)
27
+ _pid, status = Process.waitpid2(pid)
28
28
  @exit_code = status.exitstatus
29
29
  self
30
30
  end
@@ -4,6 +4,15 @@ module Coque
4
4
  run.to_a
5
5
  end
6
6
 
7
+ def to_a!
8
+ res = run
9
+ rows = res.to_a
10
+ unless res.exit_code == 0
11
+ raise "Coque Command Failed: #{self}"
12
+ end
13
+ rows
14
+ end
15
+
7
16
  def success?
8
17
  run.success?
9
18
  end
@@ -11,6 +20,8 @@ module Coque
11
20
  def run!
12
21
  if !success?
13
22
  raise "Coque Command Failed: #{self}"
23
+ else
24
+ self
14
25
  end
15
26
  end
16
27
 
data/lib/coque/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Coque
2
- VERSION = "0.7.1"
2
+ VERSION = "0.8.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coque
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Horace Williams
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-02-22 00:00:00.000000000 Z
11
+ date: 2021-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '12.3'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '12.3'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -144,8 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  requirements: []
147
- rubyforge_project:
148
- rubygems_version: 2.6.14.1
147
+ rubygems_version: 3.2.21
149
148
  signing_key:
150
149
  specification_version: 4
151
150
  summary: Shell command utilities with easy integration with Ruby code.