lino 3.2.0.pre.8 → 3.2.0.pre.9

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: da0833b0822fedee12bfa81350d5e87a69ef51bb9b4abc7f9f4537d5b851d3fe
4
- data.tar.gz: f3bc82e3a0f6af9b1ae512a8db77b01626b39b089616371a35bb523a625a3551
3
+ metadata.gz: beea9421552cd298e9e5cd1147018e9f441d4d1125a4f0a62b92153d73977420
4
+ data.tar.gz: 041531edbe469e0e33bd2c4f2c88bc725dd9562dbbc3718dba9ee645f7afdd45
5
5
  SHA512:
6
- metadata.gz: e901b165f5fa1da7678057e04217b90558f7ef19f788b575e1dd3e1a5af825615e46040c33c24135899af5fa1ca1d8b150b83f225aeff568facc3498a2092f95
7
- data.tar.gz: 9bd2103be29ad1026863b39df46a33d2a9618343d06ce517a01558087d6f18a85501c9a3a12fb04ab526ac6a22b56a9d8f29f0ee4269cf5b4ba013da3c5a1b58
6
+ metadata.gz: a30f3228f4a66df89fb8e9d0f55e7dbfa02aaf81cd5f241103130ca27d2c26463618b95dda82cb13c53c6c7b71312afff7ef0940c6a98a31d4f330aee34a7f3e
7
+ data.tar.gz: 6bcf014ce80d9a2e302978be707f33b1f493d37bef77e360fd30928681dbacce8cb1c19948d759265a920440a6c5bb240fd3f30d2ba3c556ecf37d44bbae22ff
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lino (3.2.0.pre.8)
4
+ lino (3.2.0.pre.9)
5
5
  childprocess (~> 5.0.0)
6
6
  hamster (~> 3.0)
7
7
  open4 (~> 1.3)
@@ -11,7 +11,7 @@ module Lino
11
11
  end
12
12
 
13
13
  def execute(command_line, opts = {})
14
- execution = { command_line:, opts:, exit_code: @exit_code }
14
+ execution = Execution.new(command_line:, opts:, exit_code: @exit_code)
15
15
  execution = process_streams(execution, opts)
16
16
 
17
17
  @executions << execution
@@ -53,7 +53,7 @@ module Lino
53
53
  def process_stdout(execution, stdout)
54
54
  if stdout && stdout_contents
55
55
  stdout.write(stdout_contents)
56
- return execution.merge(stdout_contents:)
56
+ return execution.with_stdout_contents(stdout_contents)
57
57
  end
58
58
 
59
59
  execution
@@ -62,17 +62,82 @@ module Lino
62
62
  def process_stderr(execution, stderr)
63
63
  if stderr && stderr_contents
64
64
  stderr.write(stderr_contents)
65
- return execution.merge(stderr_contents:)
65
+ return execution.with_stderr_contents(stderr_contents)
66
66
  end
67
67
 
68
68
  execution
69
69
  end
70
70
 
71
71
  def process_stdin(execution, stdin)
72
- return execution.merge(stdin_contents: stdin.read) if stdin
72
+ return execution.with_stdin_contents(stdin.read) if stdin
73
73
 
74
74
  execution
75
75
  end
76
+
77
+ class Execution
78
+ attr_reader :command_line,
79
+ :opts,
80
+ :exit_code,
81
+ :stdin_contents,
82
+ :stdout_contents,
83
+ :stderr_contents
84
+
85
+ def initialize(state)
86
+ @command_line = state[:command_line]
87
+ @opts = state[:opts]
88
+ @exit_code = state[:exit_code]
89
+ @stdin_contents = state[:stdin_contents]
90
+ @stdout_contents = state[:stdout_contents]
91
+ @stderr_contents = state[:stderr_contents]
92
+ end
93
+
94
+ def with_stdin_contents(contents)
95
+ Execution.new(state_hash.merge(stdin_contents: contents))
96
+ end
97
+
98
+ def with_stdout_contents(contents)
99
+ Execution.new(state_hash.merge(stdout_contents: contents))
100
+ end
101
+
102
+ def with_stderr_contents(contents)
103
+ Execution.new(state_hash.merge(stderr_contents: contents))
104
+ end
105
+
106
+ def ==(other)
107
+ self.class == other.class &&
108
+ state_array == other.state_array
109
+ end
110
+
111
+ alias eql? ==
112
+
113
+ def hash
114
+ [self.class, state_array].hash
115
+ end
116
+
117
+ protected
118
+
119
+ def state_array
120
+ [
121
+ @command_line,
122
+ @opts,
123
+ @exit_code,
124
+ @stdin_contents,
125
+ @stdout_contents,
126
+ @stderr_contents
127
+ ]
128
+ end
129
+
130
+ def state_hash
131
+ {
132
+ command_line: @command_line,
133
+ opts: @opts,
134
+ exit_code: @exit_code,
135
+ stdin_contents: @stdin_contents,
136
+ stdout_contents: @stdout_contents,
137
+ stderr_contents: @stderr_contents
138
+ }
139
+ end
140
+ end
76
141
  end
77
142
  end
78
143
  end
data/lib/lino/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lino
4
- VERSION = '3.2.0.pre.8'
4
+ VERSION = '3.2.0.pre.9'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lino
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0.pre.8
4
+ version: 3.2.0.pre.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - InfraBlocks Maintainers