pipa 0.1.1 → 0.2.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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/pipa +1 -1
  3. data/lib/pipa.rb +25 -8
  4. metadata +29 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b9984a1186d0dcef2d457a4ed11d2ba94dc362a2
4
- data.tar.gz: a1c63d6b8d8bed3bcc1e873819a42d2340228860
3
+ metadata.gz: 739e80022d97ef80911bf04e812d0c62d83ce610
4
+ data.tar.gz: c597038968f7cc7089f79bf974e0b48a2687c331
5
5
  SHA512:
6
- metadata.gz: 195419e18c8fda04a154fead718a36658c3c0e216f7e0512f933efb548c38a9776fa3de10c10da9a59a4ed1428e7a69a146f7fd6ce8a16fbffe5b62764bab7ca
7
- data.tar.gz: 565f18551e74782db149084f3c17e10c51a2527e1679bce62c2aa618c545232d8cfe67b2890097d6c9064ca816690b8e3958f2930233ddcd483150716c5ce2da
6
+ metadata.gz: fc7c054e93523e26813e58e94e6953170c814c6738b2faa0fbe8499fa5c489eb3f28ddb3c6474fb9f1922ab640d05eea7772388b27e16caa98e7786de098175a
7
+ data.tar.gz: 304bfc233259407a08d984b3db52c6f617e243bacb0e4a35b8c0fd9e151192165ed7c18c872aeca7db0a9973179c9cae45fa5d2177300be877ce93eff4707794
data/bin/pipa CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'pipa'
3
+ require_relative '../lib/pipa'
4
4
  require 'yaml'
5
5
 
6
6
  config = YAML.load(IO.read(ARGV[0]))
@@ -60,6 +60,8 @@ class Pipa
60
60
  end
61
61
 
62
62
  def execute_stage(stage)
63
+ log_info "Executing #{stage}."
64
+
63
65
  @threads << Thread.new do
64
66
  t = Time.now
65
67
 
@@ -76,8 +78,9 @@ class Pipa
76
78
 
77
79
  Open3.popen2e("bash", "-e", "-c", #{@stages[stage][mode].dump}) do |stdin, stdout_err, wait_thr|
78
80
  ret = ""
79
- while line = stdout_err.gets
81
+ while line = stdout_err.readpartial(4096) rescue nil
80
82
  print line
83
+ $stdout.flush
81
84
  ret += line
82
85
  end
83
86
 
@@ -93,9 +96,14 @@ class Pipa
93
96
  when "ruby"
94
97
  ["ruby", "-e", %Q(
95
98
  require 'json'
99
+ def ___deserialize(val)
100
+ JSON.parse("[\#{val}]")[0]
101
+ end
96
102
  #{@stages[stage][mode]};
97
- ___deserialize = JSON.instance_method(:parse)
98
- ___ret = main(#{input});
103
+ ___n_args = method(:main).arity
104
+ ___input = [#{input}]
105
+ ___input = ___input.take(___n_args) if ___n_args >= 0
106
+ ___ret = main(*___input)
99
107
  ___ret_fd = IO.open(3, 'w')
100
108
  ___ret_fd.write(___ret.to_json);
101
109
  ___ret_fd.close
@@ -122,16 +130,25 @@ class Pipa
122
130
  @ret[stage] = ""
123
131
 
124
132
  Open3.popen2e(*cmd, 3 => writer.fileno) do |stdin, stdout_err, wait_thr|
125
- while line = stdout_err.gets
126
- puts line
133
+ ret_thread = Thread.new do
134
+ while line = reader.readpartial(4096) rescue nil
135
+ @ret[stage] << line
136
+ end
137
+ reader.close
138
+ end
139
+
140
+ while line = stdout_err.readpartial(4096) rescue nil
141
+ print line
127
142
  @log[stage] << line
128
143
  end
129
144
 
145
+ exit_status = wait_thr.value
146
+
147
+ writer.close
148
+ ret_thread.join
149
+
130
150
  exit_status = wait_thr.value
131
151
  if exit_status.success?
132
- writer.close
133
- @ret[stage] = reader.read
134
- reader.close
135
152
  @executed.add(stage)
136
153
  log_info "Stage '#{stage}' took #{Time.now - t}s."
137
154
  else
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pipa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Cantón Cortés
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.8.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: httpclient
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 2.8.3
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 2.8.3
41
+ - !ruby/object:Gem::Dependency
42
+ name: json
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 2.1.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 2.1.0
27
55
  description: Define and execute pipelines
28
56
  email: miwelc@gmail.com
29
57
  executables: