rb-process 0.2.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ab790cec5e95ea3f1ea4d012052d7475f74664d4442e5d64488e0eaebdc39542
4
- data.tar.gz: 0cf40472af862fdde9b81b0e0541b69afb3a14dba3d05e826dc57a007a042ff1
3
+ metadata.gz: a044e1820d1eb97772d3ca5f2fa2a55ea802f6affd2197271db0a78492b0639d
4
+ data.tar.gz: 70e6cadbd94fb0cedad4074b900570278c2cf4f3ce8a25fe9604acbd8b0f92d6
5
5
  SHA512:
6
- metadata.gz: eb46766cb0400392384051ea2dfcc5b730a0e1147c576ae5cc3be5d0fe21bd5b593e5f968009091397da70b00675a6b06d9d6f260d8b7fc0c9a44f0047c38896
7
- data.tar.gz: ed178815ae250bbe906de430225eb54181e7caa51928a512951ffaa56d4328414f2f0897199a5737b6dd3cb9afe4b6201a9293689a010af22676c42ef90e4cf5
6
+ metadata.gz: 7d58dfb6bea30c98b036d6acdf0be89447b3a3e9ee907879e42c70a6b8a1dc44279bdc45172df62daa7d37eef28712e01fe5c4c57a5dbf73bcf518ec26f56415
7
+ data.tar.gz: e579fb22d1bb611d8ea437cbf18ff8e5e197a274fe2d7de1480e7546d7b0a120027c83a114cd56dcf810080785cb619e8e80aadd2955f68868334fa97a277e31
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Process
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.2"
5
5
  end
data/lib/rb/process.rb CHANGED
@@ -5,7 +5,31 @@ require "stringio"
5
5
  require_relative "process/version"
6
6
 
7
7
  module Process
8
- def self.run(*args, output: STDOUT, error: STDERR, **options)
8
+ class Pipe
9
+ attr_reader :input
10
+ attr_reader :output
11
+ attr_reader :error
12
+
13
+ def initialize(input, output, error)
14
+ @input = input
15
+ @output = output
16
+ @error = error
17
+ end
18
+ end
19
+
20
+ class Err
21
+ attr_reader :stdout
22
+ attr_reader :stderr
23
+ attr_reader :status
24
+
25
+ def initialize(stdout, stderr, status)
26
+ @stdout = stdout
27
+ @stderr = stderr
28
+ @status = status
29
+ end
30
+ end
31
+
32
+ def self.run(*args, output: STDOUT, error: STDERR, **options, &block)
9
33
  output_strio = StringIO.new
10
34
  error_strio = StringIO.new
11
35
 
@@ -34,14 +58,23 @@ module Process
34
58
 
35
59
  if block_given?
36
60
  begin
37
- yield in_w, out_r, err_r
61
+ case block.arity
62
+ when 1
63
+ yield Pipe.new(in_w, out_r, err_r)
64
+ when 2
65
+ yield in_w, out_r
66
+ when 3
67
+ yield in_w, out_r, err_r
68
+ else
69
+ raise ArgumentError.new("block must take 1 to 3 arguments")
70
+ end
38
71
  rescue StandardError => e
39
72
  Process.detach(pid)
40
73
  raise e
41
74
  end
42
75
  end
43
76
 
44
- in_w.close
77
+ in_w.close unless in_w.closed?
45
78
  out_w.close
46
79
  err_w.close
47
80
 
@@ -68,7 +101,7 @@ module Process
68
101
  when true
69
102
  output_strio.string
70
103
  else
71
- [output_strio.string, error_strio.string, status]
104
+ Err.new(output_strio.string, error_strio.string, status)
72
105
  end
73
106
  end
74
107
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rb-process
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - initdc
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-02-19 00:00:00.000000000 Z
11
+ date: 2026-02-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Add the missing methods to the Ruby Process, you can use it with method
14
14
  chaining