aws-cfn-decompiler 0.6.0 → 0.7.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 +4 -4
- data/Gemfile +1 -1
- data/aws-cfn-decompiler.gemspec +5 -5
- data/aws-cfn-decompiler.iml +1 -0
- data/lib/aws/cfn/decompiler/base.rb +10 -36
- data/lib/aws/cfn/decompiler/main.rb +12 -34
- data/lib/aws/cfn/decompiler/mixins/options.rb +35 -0
- data/lib/aws/cfn/decompiler/version.rb +1 -1
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db417aafff50d73c42de66f4c80097d530653369
|
4
|
+
data.tar.gz: 833fa918eeabce35b42a09e2bce5a523d0b0c864
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48d6d134e7fa7f1aad5452a44c1fdad1173ec2c9005fdb127673aa405223993abee503f3c9695b0832973917ab64bc8e6e1c690da9c5ac50c61840089d9f1a9c
|
7
|
+
data.tar.gz: c280a5cc7784e25fcc2568b530bbfb050429fe3a54887453caae78a4b84e55e8bca8cb3484e9a6b7e75fbb331df02a3fc49fc3e12e6edfb93bc3898aef80e6da
|
data/Gemfile
CHANGED
@@ -8,10 +8,10 @@ gem 'cloudformation-ruby-dsl', :path => '../cloudformation-ruby-dsl', :group =>
|
|
8
8
|
gem 'dldinternet-mixlib-logging', :path => '../dldinternet-mixlib-logging', :group => :development
|
9
9
|
gem 'dldinternet-mixlib-cli', :path => '../dldinternet-mixlib-cli', :group => :development
|
10
10
|
gem 'aws-cfn-dsl', :path => '../aws-cfn-dsl', :group => :development
|
11
|
-
gem 'aws-cfn-decompiler', :path => '../aws-cfn-decompiler', :group => :development
|
12
11
|
gem 'aws-cfn-compiler', :path => '../aws-cfn-compiler', :group => :development
|
13
12
|
gem 'aws-cfn-yats', :path => '../aws-cfn-yats', :group => :development
|
14
13
|
gem 'aws-cfn-stacker', :path => '../aws-cfn-stacker', :group => :development
|
15
14
|
|
15
|
+
gem 'json_pure', :group => :development
|
16
16
|
gem 'bundler', "~> 1.6", :group => :development
|
17
17
|
gem 'rake', :group => :development
|
data/aws-cfn-decompiler.gemspec
CHANGED
@@ -18,10 +18,10 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency
|
22
|
-
spec.add_dependency
|
23
|
-
spec.add_dependency
|
24
|
-
spec.add_dependency
|
25
|
-
spec.add_dependency 'aws-cfn-compiler', '>= 0.
|
21
|
+
spec.add_dependency 'awesome_print', '~> 1.2', '>= 1.2.0'
|
22
|
+
spec.add_dependency 'psych'
|
23
|
+
spec.add_dependency 'json'
|
24
|
+
spec.add_dependency 'slop'
|
25
|
+
spec.add_dependency 'aws-cfn-compiler', '>= 0.7.0', '~> 0.7'
|
26
26
|
|
27
27
|
end
|
data/aws-cfn-decompiler.iml
CHANGED
@@ -53,6 +53,7 @@
|
|
53
53
|
<orderEntry type="library" scope="PROVIDED" name="detabulator (v0.1.0, RVM: ruby-1.9.3-p547 [aws-cfn-decompiler]) [gem]" level="application" />
|
54
54
|
<orderEntry type="library" scope="PROVIDED" name="inifile (v2.0.2, RVM: ruby-1.9.3-p547 [aws-cfn-decompiler]) [gem]" level="application" />
|
55
55
|
<orderEntry type="library" scope="PROVIDED" name="json (v1.8.1, RVM: ruby-1.9.3-p547 [aws-cfn-decompiler]) [gem]" level="application" />
|
56
|
+
<orderEntry type="library" scope="PROVIDED" name="json_pure (v1.8.1, RVM: ruby-1.9.3-p547 [aws-cfn-decompiler]) [gem]" level="application" />
|
56
57
|
<orderEntry type="library" scope="PROVIDED" name="little-plugger (v1.1.3, RVM: ruby-1.9.3-p547 [aws-cfn-decompiler]) [gem]" level="application" />
|
57
58
|
<orderEntry type="library" scope="PROVIDED" name="logging (v1.8.2, RVM: ruby-1.9.3-p547 [aws-cfn-decompiler]) [gem]" level="application" />
|
58
59
|
<orderEntry type="library" scope="PROVIDED" name="mixlib-cli (v1.5.0, RVM: ruby-1.9.3-p547 [aws-cfn-decompiler]) [gem]" level="application" />
|
@@ -11,15 +11,18 @@ module Aws
|
|
11
11
|
class Base < ::Aws::Cfn::Compiler::Base
|
12
12
|
attr_accessor :template
|
13
13
|
|
14
|
-
|
14
|
+
require "aws/cfn/decompiler/mixins/options"
|
15
|
+
include Aws::Cfn::DeCompiler::Options
|
16
|
+
|
17
|
+
def save_dsl(output_dir, decompiled=@items)
|
15
18
|
|
16
19
|
specification = {}
|
17
|
-
format = @
|
20
|
+
format = @config[:format] rescue 'yaml'
|
18
21
|
ruby = (not format.match(%r'^ruby|rb$').nil?)
|
19
22
|
if ruby
|
20
|
-
pprint_cfn_template simplify(
|
23
|
+
pprint_cfn_template simplify(decompiled)
|
21
24
|
end
|
22
|
-
|
25
|
+
decompiled.each do |section, section_items|
|
23
26
|
case section
|
24
27
|
when /Mappings|Parameters|Resources|Outputs/
|
25
28
|
specification[section] = []
|
@@ -44,45 +47,16 @@ module Aws
|
|
44
47
|
end
|
45
48
|
|
46
49
|
# Save specification
|
47
|
-
unless @
|
48
|
-
dir = File.dirname(@
|
50
|
+
unless @config[:specification].nil?
|
51
|
+
dir = File.dirname(@config[:specification])
|
49
52
|
dir = output_dir unless dir
|
50
|
-
save_section(dir, File.basename(@
|
53
|
+
save_section(dir, File.basename(@config[:specification]), format, '', specification, '', "specification")
|
51
54
|
end
|
52
55
|
|
53
56
|
end
|
54
57
|
|
55
58
|
protected
|
56
59
|
|
57
|
-
def save_section(dir, file, format, section, hash, join='/')
|
58
|
-
logStep "Saving section #{hash.keys[0]} to #{section}/#{file} "
|
59
|
-
path = File.join(dir, file)
|
60
|
-
|
61
|
-
begin
|
62
|
-
if i_am_maintainer(path)
|
63
|
-
# File.delete path if File.exists? path
|
64
|
-
File.open path, File::CREAT|File::TRUNC|File::RDWR, 0644 do |f|
|
65
|
-
case format
|
66
|
-
when /ruby|rb|yaml|yml/
|
67
|
-
f.write maintainer_comment('')
|
68
|
-
f.write hash.to_yaml line_width: 1024, indentation: 4, canonical: false
|
69
|
-
when /json|js/
|
70
|
-
# You wish ... f.write maintainer_comment('')
|
71
|
-
f.write JSON.pretty_generate(hash)
|
72
|
-
else
|
73
|
-
abort! "Internal: Unsupported format #{format}. Should have noticed this earlier!"
|
74
|
-
end
|
75
|
-
f.close
|
76
|
-
end
|
77
|
-
@logger.info " decompiled #{section}#{join}#{file}."
|
78
|
-
else
|
79
|
-
@logger.warn " Did not overwrite #{section}#{join}#{file}."
|
80
|
-
end
|
81
|
-
rescue
|
82
|
-
abort! "!!! Could not write compiled file #{path}: #{$!}"
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
60
|
end
|
87
61
|
end
|
88
62
|
end
|
@@ -11,49 +11,27 @@ module Aws
|
|
11
11
|
|
12
12
|
def run
|
13
13
|
|
14
|
-
|
15
|
-
# command File.basename(__FILE__,'.rb')
|
16
|
-
on :j, :template=, 'The template to decompile', as: String
|
17
|
-
on :o, :output=, 'The directory to output the components to.', as: String
|
18
|
-
on :f, :format=, 'The output format of the components. [JSON|YAML|Ruby]', as: String, match: %r/ruby|rb|yaml|yml|json|js/i
|
19
|
-
on :s, :specification=, 'The specification file to create.', as: String
|
20
|
-
on :n, :functions=, 'Enable function use.', as: String, match: %r/0|1|yes|no|on|off|enable|disable|set|unset|true|false|raw/i
|
21
|
-
on :O, :overwrite, 'Overwrite existing generated source files. (HINT: Think twice ...)', { as: String, optional_argument: true, default: 'off', match: %r/0|1|yes|no|on|off|enable|disable|set|unset|true|false|raw/i }
|
22
|
-
end
|
14
|
+
parse_options
|
23
15
|
|
24
|
-
|
25
|
-
true
|
26
|
-
else
|
27
|
-
false
|
28
|
-
end
|
29
|
-
@config[:functions] = if @opts[:functions]
|
30
|
-
(not @opts[:functions].downcase.match(%r'^(1|true|on|yes|enable|set)$').nil?)
|
31
|
-
else
|
32
|
-
false
|
33
|
-
end
|
34
|
-
@config[:directory] = @opts[:output]
|
16
|
+
set_config_options
|
35
17
|
|
36
|
-
unless @
|
37
|
-
|
38
|
-
|
39
|
-
end
|
40
|
-
unless @opts[:output].nil?
|
41
|
-
unless File.directory?(@opts[:output])
|
42
|
-
Dir.mkdir(@opts[:output])
|
18
|
+
unless @config[:directory].nil?
|
19
|
+
unless File.directory?(@config[:directory])
|
20
|
+
Dir.mkdir(@config[:directory])
|
43
21
|
end
|
44
|
-
unless File.directory?(@
|
45
|
-
@logger.error "Cannot see output directory: #{@
|
46
|
-
@logger.error @
|
22
|
+
unless File.directory?(@config[:directory])
|
23
|
+
@logger.error "Cannot see output directory: #{@config[:directory]}"
|
24
|
+
@logger.error @config.to_s
|
47
25
|
exit
|
48
26
|
end
|
49
27
|
end
|
50
28
|
|
51
|
-
load_template @
|
29
|
+
decompiled = load_template @config[:template]
|
52
30
|
|
53
|
-
validate(
|
31
|
+
validate(decompiled)
|
54
32
|
|
55
|
-
output_dir = @
|
56
|
-
save_dsl(output_dir)
|
33
|
+
output_dir = @config[:directory] || Dir.pwd
|
34
|
+
save_dsl(output_dir,decompiled)
|
57
35
|
|
58
36
|
@logger.step '*** Decompiled Successfully ***'
|
59
37
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Aws
|
2
|
+
module Cfn
|
3
|
+
module DeCompiler
|
4
|
+
module Options
|
5
|
+
|
6
|
+
def parse_options
|
7
|
+
# noinspection RubySuperCallWithoutSuperclassInspection
|
8
|
+
setup_options
|
9
|
+
|
10
|
+
@opts.on :F, :format=, 'The output format of the components. [JSON|YAML|Ruby]', { as: String, match: @format_regex, default: 'yaml' }
|
11
|
+
@opts.on :s, :specification=, 'The specification file to create.', as: String
|
12
|
+
|
13
|
+
@opts.parse!
|
14
|
+
|
15
|
+
unless @opts[:directory]
|
16
|
+
puts @opts
|
17
|
+
abort! "Missing required option --directory"
|
18
|
+
end
|
19
|
+
|
20
|
+
unless @opts[:template]
|
21
|
+
puts @opts
|
22
|
+
abort! "Missing required option --template"
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
def set_config_options
|
28
|
+
setup_config
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-cfn-decompiler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christo De Lange
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: awesome_print
|
@@ -78,20 +78,20 @@ dependencies:
|
|
78
78
|
requirements:
|
79
79
|
- - ">="
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: 0.
|
81
|
+
version: 0.7.0
|
82
82
|
- - "~>"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: '0.
|
84
|
+
version: '0.7'
|
85
85
|
type: :runtime
|
86
86
|
prerelease: false
|
87
87
|
version_requirements: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
89
|
- - ">="
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: 0.
|
91
|
+
version: 0.7.0
|
92
92
|
- - "~>"
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version: '0.
|
94
|
+
version: '0.7'
|
95
95
|
description: The idea is to extract a big CloudFormation template into a folder structure
|
96
96
|
to better manage pieces of a CloudFormation deployment. Additionally, writing in
|
97
97
|
JSON is hard, so the decompiler can create YAML files as well.
|
@@ -129,6 +129,7 @@ files:
|
|
129
129
|
- lib/aws/cfn/decompiler.rb
|
130
130
|
- lib/aws/cfn/decompiler/base.rb
|
131
131
|
- lib/aws/cfn/decompiler/main.rb
|
132
|
+
- lib/aws/cfn/decompiler/mixins/options.rb
|
132
133
|
- lib/aws/cfn/decompiler/version.rb
|
133
134
|
homepage: https://github.com/dldinternet/aws-cfn-decompiler
|
134
135
|
licenses:
|