dockerfile2bash 0.1.3 → 0.1.4

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: 6d714ab2466fba00c96e0846b76de01e14219d5e
4
- data.tar.gz: d48f47819f7218f4a289de1ed4b5264dac6e0538
3
+ metadata.gz: b9c633936731960c4cf35eb14144e5b815c8b291
4
+ data.tar.gz: cf21d1b038b052ac0700977a5894186bc9c8a8c0
5
5
  SHA512:
6
- metadata.gz: 57ea14e232c46d3624d13eb66cb48acb6be9b8ea0ff5980862c48f43a6ae524d305310a0ddf9f2b943d4bf1fc0d136f2b08ab4c61374c894e4e7caf88f74f327
7
- data.tar.gz: '08c1a8b4e4e3a99ff34f3fe338384133f903e70bd6b516d0d0ca6f7da5b5759a849f250d2e63e536a605104512d80eaf9cae10d38cc3f60b3d21f781fba4659f'
6
+ metadata.gz: 7942ccb417cde2902f4347f5dda183a0f9b3c8f33f84e036265d15b411383638d6bdcc6e620088e85c760415bdf7b7b9371b352539b1ca940081dc6fce573b11
7
+ data.tar.gz: 9d3d809c1bd42fe247985ebc30024b6f1a09252f2e27b5faa1d1bcda30dab1180afe50cf078ffbbb1b0b25376ca1c15ee965abf65657209978719051b26470f9
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
7
7
  spec.version = Dockerfile2bash::VERSION
8
8
  spec.authors = ["B1nj0y"]
9
9
  spec.email = ["idegorepl@gmail.com"]
10
-
10
+ spec.date = '2018-01-30'
11
11
  spec.summary = %q{Parse and Convert a Dockerfile to Bash.}
12
12
  spec.description = %q{The Gem can be used to parse and convert a Dockerfile to a Bash script.}
13
13
  spec.homepage = "https://github.com/beijingrb/dockerfile2bash"
@@ -17,6 +17,7 @@ Gem::Specification.new do |spec|
17
17
  spec.executables = %w[df2sh]
18
18
  spec.require_paths = %w[lib]
19
19
 
20
+ spec.add_dependency "rest-client", "~> 2.0"
20
21
  spec.add_development_dependency "bundler", "~> 1.16.a"
21
22
  spec.add_development_dependency "rake", "~> 10.0"
22
23
  end
@@ -1,25 +1,27 @@
1
1
  require 'json'
2
+ require 'rest-client'
2
3
 
3
4
  class Dockerfile2bash
4
- VERSION = '0.1.3'
5
+ VERSION = '0.1.4'
5
6
  attr_reader :commands
6
7
  FIELDS = %w(from user run add copy arg env expose cmd onbuild)
7
8
 
8
9
  def initialize(dockerfile)
9
10
  @dockerfile = dockerfile
10
- @content = File.read(@dockerfile)
11
+ @content = get_content
11
12
  @commands = []
12
13
  end
13
14
 
14
15
  def parse
16
+ return unless @content || @content.empty?
15
17
  @content.gsub!("\\\n", "")
16
18
  lines = @content.split(/\r?\n+/) || []
17
19
 
18
- lines.each do |ln|
20
+ lines.each do |line|
19
21
  # ignore blank and comment lines
20
- next if /^\s*$/ =~ ln
21
- next if /^\s*#/ =~ ln
22
- segments = ln.split(" ", 2)
22
+ next if /^\s*$/ =~ line
23
+ next if /^\s*#/ =~ line
24
+ segments = line.split(" ", 2)
23
25
  next if segments.length < 2 or !FIELDS.include?(segments[0].downcase)
24
26
 
25
27
  case segments[0].downcase!
@@ -63,7 +65,7 @@ class Dockerfile2bash
63
65
 
64
66
  def generate_bash()
65
67
  return unless @commands
66
- bash = "#!/bin/bash \n\n# The script is generated from a Dockerfile via Dockerfile2bash(v#{VERSION})\n# By B1nj0y <idegorepl@gmail.com>\n\n"
68
+ bash = "#!/usr/bin/env bash \n\n# The script is generated from a Dockerfile via Dockerfile2bash(v#{VERSION})\n# By B1nj0y <idegorepl@gmail.com>\n\n"
67
69
  @commands.each do |cmd|
68
70
  case cmd.keys[0]
69
71
  when "from"
@@ -80,4 +82,18 @@ class Dockerfile2bash
80
82
  end
81
83
  bash
82
84
  end
85
+
86
+ def get_content
87
+ if @dockerfile =~ /^https:\/\/raw\.githubusercontent\.com\/.+$/
88
+ content = RestClient.get(@dockerfile)
89
+ elsif @dockerfile =~ /^https:\/\/github\.com\/(.+)$/
90
+ # convert to its corresponding raw url
91
+ url = "https://raw.githubusercontent.com/#{$1.sub('/blob/', '/')}"
92
+ content = RestClient.get(url)
93
+ else
94
+ # local file
95
+ content = File.read(@dockerfile)
96
+ end
97
+ content
98
+ end
83
99
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dockerfile2bash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - B1nj0y
@@ -10,6 +10,20 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2018-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest-client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement