hashipack 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bad7a4163d44985247790a4318629ceef091c75741cb92dd222d9cc34841ea45
4
- data.tar.gz: 612a8f92ff96680ec3e92c48ef1e9c5183203811191d8367f146533db2c52f5b
3
+ metadata.gz: 0a97072d2fd6b4702a2fce358d21b149551cc190b4fc782231c59bab036c9b68
4
+ data.tar.gz: e765c7c6cf65fcb219e52527dcf530c430dda4d3337a352431f957ae8986f2cb
5
5
  SHA512:
6
- metadata.gz: 6d89c910f7daac9f11748ecd0fd6d8e8dc847a84806059373371e37aa5ca1e0f1eba9a334904bd0f44b483f18494758e3ec2bd980c86e2e5d3b74d23ae06e422
7
- data.tar.gz: 2b947c3a9fe0508320f3bc6c64ab571d9b2f1df9ceeef1fd982460927c439912b787ea92d84ca2160175fdb9c256386fb537a2e342e008825062da22114a9e7c
6
+ metadata.gz: bea07df2852be1ae4066c0bba8ae70b013212391db6bb1f840b6596557a889e6bb5e6a0ff57979a7c43085c8539dc625cb529fba67ddac9a860fd2a81421324a
7
+ data.tar.gz: c5880b968204a7682afa8f8f82f7172e6ec5c6a0ae1515aab55ffa26efdf970f217b5f163f2c54a41e66852d75188b2100daf6b256a3e93ee4ce64cf4817bb3a
@@ -0,0 +1,7 @@
1
+ FROM mcr.microsoft.com/devcontainers/ruby:1-3.3-bullseye
2
+
3
+ # Install packages needed to build gems
4
+ RUN curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
5
+ RUN sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
6
+ RUN apt-get update -qq && \
7
+ apt-get install --no-install-recommends -y packer
@@ -3,16 +3,20 @@
3
3
  {
4
4
  "name": "Ruby",
5
5
  // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6
- "image": "mcr.microsoft.com/devcontainers/ruby:1-3.3-bullseye",
6
+ "build": {
7
+ "dockerfile": "Dockerfile"
8
+ },
7
9
 
8
10
  // Features to add to the dev container. More info: https://containers.dev/features.
9
- // "features": {},
11
+ "features": {
12
+ "ghcr.io/devcontainers/features/docker-in-docker:2": {}
13
+ },
10
14
 
11
15
  // Use 'forwardPorts' to make a list of ports inside the container available locally.
12
16
  // "forwardPorts": [],
13
17
 
14
18
  // Use 'postCreateCommand' to run commands after the container is created.
15
- // "postCreateCommand": "ruby --version",
19
+ "postCreateCommand": "packer init spec/docker.pkr.hcl",
16
20
 
17
21
  // Configure tool-specific properties.
18
22
  "customizations": {
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hashipack (0.1.4)
4
+ hashipack (0.1.5)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -20,7 +20,7 @@ GEM
20
20
  rainbow (3.1.1)
21
21
  rake (13.0.6)
22
22
  regexp_parser (2.8.2)
23
- rexml (3.3.3)
23
+ rexml (3.3.6)
24
24
  strscan
25
25
  rspec (3.12.0)
26
26
  rspec-core (~> 3.12.0)
@@ -1,8 +1,10 @@
1
1
  require 'tempfile'
2
+ require 'open3'
2
3
 
3
4
  module Hashipack
4
5
  class Client
5
- def build(filename, on_output: lambda {}, on_progress: lambda {}, estimated_duration: 300)
6
+ def build(path, on_output: lambda {}, on_progress: lambda {}, estimated_duration: 300)
7
+ directory, filename = File.split(path)
6
8
  command = "packer -machine-readable build #{filename}"
7
9
 
8
10
  initial_timestamp = 99999999999
@@ -10,27 +12,35 @@ module Hashipack
10
12
 
11
13
  artifacts = []
12
14
 
13
- IO.popen(command).each do |line|
14
- message = Message.parse(line)
15
+ Open3.popen3(command, chdir: directory) do |stdin, stdout, stderr, wait_thr|
16
+ stdout.each do |line|
17
+ message = Message.parse(line)
15
18
 
16
- if message.type == :ui
17
- initial_timestamp = message.timestamp if message.timestamp < initial_timestamp
19
+ if message.type == :ui
20
+ initial_timestamp = message.timestamp if message.timestamp < initial_timestamp
18
21
 
19
- if message.timestamp > last_timestamp
20
- last_timestamp = message.timestamp
21
- running_duration = message.timestamp - initial_timestamp
22
- progress = running_duration / estimated_duration.to_f
23
- on_progress.call(progress)
24
- end
22
+ if message.timestamp > last_timestamp
23
+ last_timestamp = message.timestamp
24
+ running_duration = message.timestamp - initial_timestamp
25
+ progress = running_duration / estimated_duration.to_f
26
+ on_progress.call(progress)
27
+ end
28
+
29
+ on_output.call(message.text)
25
30
 
26
- on_output.call(message.text)
31
+ elsif message.type == :artifact
27
32
 
28
- elsif message.type == :artifact
33
+ artifacts[message.number] ||= Artifact.new
34
+ artifacts[message.number].append_info(message.key, message.value)
29
35
 
30
- artifacts[message.number] ||= Artifact.new
31
- artifacts[message.number].append_info(message.key, message.value)
36
+ end
37
+ end
32
38
 
39
+ stderr.each do |line|
40
+ puts "Error: #{line}"
33
41
  end
42
+
43
+ puts "Exit status: #{wait_thr.value}"
34
44
  end
35
45
 
36
46
  artifacts
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Hashipack
4
- VERSION = "0.1.4"
4
+ VERSION = "0.1.5"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hashipack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lukas_Skywalker
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-08-21 00:00:00.000000000 Z
11
+ date: 2024-08-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: None.
14
14
  email:
@@ -17,6 +17,7 @@ executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
+ - ".devcontainer/Dockerfile"
20
21
  - ".devcontainer/devcontainer.json"
21
22
  - ".rspec"
22
23
  - ".standard.yml"