pack_rb 0.1.0 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f65fc75dcf838baeccbb94bcdf3501939611b96c
4
- data.tar.gz: 3a2a1392b3708a5d2441a3f4517270b60046f9b1
3
+ metadata.gz: 9fa9a2e4e584f27505b9c844749b682d7ec2d735
4
+ data.tar.gz: 10ca1ecf02e460a16ed096aeae8cd5bcf56dd9f1
5
5
  SHA512:
6
- metadata.gz: 643b458325d3d61049f7ae01bd1024705bf2101aa99f37a5f0682edc20630bdd1302167164ef2d252ffb6882f7bfbe4e9be62c837ec52571054d6ea31ffd141b
7
- data.tar.gz: 3505a8f2c6a9d65ae8bb0f4028c1923e7e0178bb33fb2501354e6e3a50fa8fc8f7edeb58c55c2d8aa664ca907431006941934c236fc4f2b879f2df2219226d59
6
+ metadata.gz: 85d6ca9698e520df0ae4a1e365fa621dcdb2884c1aa8cc25f7ff2af1e6fca45da1a239720085484bf2238c510594e3b6e147074a9f081b029890b49cfaa838b7
7
+ data.tar.gz: d801cb47c6f6f96b0dfa23a378709e20ac9e910cb152709bd311e5a7ddcc7b8648518e71e61ba2009724547391ff793245f2d6116c5ae233e4720c8a8092144a
data/README.md CHANGED
@@ -73,7 +73,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
73
73
 
74
74
  ## Contributing
75
75
 
76
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/pack_rb.
76
+ Bug reports and pull requests are welcome on GitHub at https://github.com/manheim/pack_rb.
77
77
 
78
78
 
79
79
  ## License
@@ -0,0 +1,47 @@
1
+ require 'open3'
2
+
3
+ module PackRb
4
+ class Executor
5
+ # popen3 wrapper to simultaneously stream command output to the
6
+ # appropriate file descriptor, and capture it.
7
+ #
8
+ # @param cmd [String] command to run
9
+ # @param tpl [String] the template content
10
+ # @return [Array] - stdout [String], stderr [String], exit code [Fixnum]
11
+ def self.run_cmd_stream_output(cmd, tpl)
12
+ all_out = ''
13
+ all_err = ''
14
+ exit_status = nil
15
+ Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thread|
16
+ stdin.write(tpl)
17
+ stdin.close_write
18
+ begin
19
+ files = [stdout, stderr]
20
+ until files.find { |f| !f.eof }.nil?
21
+ ready = IO.select(files)
22
+ next unless ready
23
+ readable = ready[0]
24
+ readable.each do |f|
25
+ begin
26
+ data = f.read_nonblock(512)
27
+ if f.fileno == stdout.fileno
28
+ puts data
29
+ all_out << data
30
+ else
31
+ STDERR.puts data
32
+ all_err << data
33
+ end
34
+ rescue EOFError
35
+ nil
36
+ end
37
+ end
38
+ end
39
+ rescue IOError => e
40
+ STDERR.puts "IOError: #{e}"
41
+ end
42
+ exit_status = wait_thread.value.exitstatus
43
+ end
44
+ [all_out, all_err, exit_status]
45
+ end
46
+ end
47
+ end
@@ -1,5 +1,4 @@
1
- require 'open3'
2
-
1
+ require 'pack_rb/executor'
3
2
  require 'pack_rb/sub_commands/build'
4
3
  require 'pack_rb/sub_commands/inspect'
5
4
  require 'pack_rb/sub_commands/validate'
@@ -10,16 +9,16 @@ module PackRb
10
9
  include PackRb::SubCommands::Inspect
11
10
  include PackRb::SubCommands::Validate
12
11
 
12
+ # Execute a Packer command via {PackRb::Executor.run_cmd_stream_output}
13
+ #
14
+ # @param opts [Hash] options passed to the Packer class
15
+ #
16
+ # @return [Array] - stdout [String], stderr [String], exit code [Fixnum]
13
17
  def execute(opts)
14
18
  cmd = opts[:cmd]
15
19
  tpl = opts[:tpl]
16
20
 
17
- out, err, status = Open3.capture3("#{cmd} -", stdin_data: tpl)
18
-
19
- if status.exitstatus != 0
20
- puts out if out
21
- puts err if err
22
- end
21
+ PackRb::Executor.run_cmd_stream_output("#{cmd} -", tpl)
23
22
  end
24
23
  end
25
24
  end
@@ -1,3 +1,3 @@
1
1
  module PackRb
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pack_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Niesen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-08 00:00:00.000000000 Z
11
+ date: 2016-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: guard
@@ -100,6 +100,7 @@ files:
100
100
  - bin/setup
101
101
  - circle.yml
102
102
  - lib/pack_rb.rb
103
+ - lib/pack_rb/executor.rb
103
104
  - lib/pack_rb/packer.rb
104
105
  - lib/pack_rb/sub_commands.rb
105
106
  - lib/pack_rb/sub_commands/build.rb