cloudit 0.0.2 → 0.0.3

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: 780b583f7f5295837b2a0e331c77cad8e6cd5a02
4
- data.tar.gz: 96559c2b7b70bcb276a180ab5cd5f54b4674802d
3
+ metadata.gz: c668f56969001a73c0ca0df7d5c5d9336b8d3bb2
4
+ data.tar.gz: b882f0ad4625a9eff7de0b394ad688bf15ca252b
5
5
  SHA512:
6
- metadata.gz: a32a506e54fce26769c79634ca4ed16130fc0e5f54f37e281a440d2c084ebbd157bef4818323783bb5a6dadeb5f8f736a132376b300af4307fb7f17f3e2dccef
7
- data.tar.gz: 43e17214d3994c56b1581271f92e1ec97422d24e8424097f8929514aebdcf7b995a907796d2fe33a52e58c4dcf91fd2c472520afb89a7e7e2f9ff6b911863c73
6
+ metadata.gz: 316d6063727d2cdc87612764a3a6a995f58d7b14592fe9be4a942b4acd78eb9c61cc0321ecdaed3d7881924a4c696a539182fc7996bb3970321031cd46ab1039
7
+ data.tar.gz: 827c215133829429b81ab3cd49f53e9ef005c3d4f6b627830a8c196dd09b07dd6e7d56b5cf3bf90a0ed47287dfd094038ab17a971e488ad0e82a8d32f3a2fbd8
data/cloudit.gemspec CHANGED
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = "cloudit"
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.required_ruby_version = '>= 2.0'
22
+
21
23
  spec.add_dependency "slop"
22
24
 
23
25
  spec.add_development_dependency "bundler", "~> 1.12"
@@ -7,6 +7,7 @@ class Cloudit::Command::Base
7
7
  end
8
8
 
9
9
  VALID_METHODS = []
10
+ OPTION_NAME_OFFSET = 6
10
11
 
11
12
  def initialize(args=[])
12
13
  @method = if args[0].is_a?(String) && args[0].include?('-')
@@ -29,6 +30,10 @@ class Cloudit::Command::Base
29
30
  end
30
31
  end
31
32
 
33
+ def invalid_method
34
+ $stdout.puts "cloudit: '#{@method}' is not a cloudit command\nSee 'cloudit --help'"
35
+ end
36
+
32
37
  def help
33
38
  $stdout.puts slop_opts
34
39
  end
@@ -6,6 +6,9 @@ require 'json'
6
6
  class Cloudit::Command::Generate < Cloudit::Command::Base
7
7
  VALID_METHODS = ['help']
8
8
  SECTIONS = ['Metadata', 'Parameters', 'Mappings', 'Conditions', 'Resources', 'Outputs']
9
+ DEFAULT_OUT_FILE = 'out.json'
10
+ DEFAULT_MAIN_CFN_EXTENSION = 'cfn.yml'
11
+ DEFAULT_DIRECTORY = './'
9
12
 
10
13
  def index
11
14
  if @opts.help?
@@ -15,18 +18,33 @@ class Cloudit::Command::Generate < Cloudit::Command::Base
15
18
  end
16
19
  end
17
20
 
18
- def invalid_method
19
- # TODO write method
20
- help
21
- end
22
-
23
21
  private
24
22
 
25
23
  def generate_json
26
24
  hash = {}
27
25
  hash_sections = {}
26
+ out = @opts[:output]
27
+ dir = normalize_directory @opts[:directory]
28
+
29
+ if File.exist? out
30
+ if out.eql? DEFAULT_OUT_FILE
31
+ i = 1
32
+ while File.exist? out
33
+ i += 1
34
+ out = "out#{i}.json"
35
+ end
36
+ else
37
+ $stdout.puts "cloudit: output file '#{out}' already exists"
38
+ return
39
+ end
40
+ end
28
41
 
29
- for file in Dir.glob(Dir['**/*.cfn.yml']) do
42
+ unless File.directory? dir
43
+ $stdout.puts "cloudit: '#{dir}' must be a directory"
44
+ return
45
+ end
46
+
47
+ for file in Dir.glob(Dir["#{dir}**/*.#{DEFAULT_MAIN_CFN_EXTENSION}"]) do
30
48
  yml = YAML::load_file(file)
31
49
  if yml.is_a?(Hash)
32
50
  hash.merge! YAML::load_file(file)
@@ -37,7 +55,7 @@ class Cloudit::Command::Generate < Cloudit::Command::Base
37
55
  section_file = section.downcase
38
56
  hash_sections[section] = {}
39
57
 
40
- for file in Dir.glob(Dir["**/*.#{section_file}.yml"]) do
58
+ for file in Dir.glob(Dir["#{dir}**/*.#{section_file}.yml"]) do
41
59
  yml = YAML::load_file(file)
42
60
 
43
61
  if yml.is_a?(Hash)
@@ -49,6 +67,15 @@ class Cloudit::Command::Generate < Cloudit::Command::Base
49
67
  hash.merge! hash_sections
50
68
 
51
69
  $stdout.puts hash.to_json
70
+ File.new(out, 'w').write "#{hash.to_json}\n"
71
+ end
72
+
73
+ def normalize_directory(dir)
74
+ if dir.end_with? '/'
75
+ dir
76
+ else
77
+ dir + '/'
78
+ end
52
79
  end
53
80
 
54
81
  def self.setup_options
@@ -56,8 +83,9 @@ class Cloudit::Command::Generate < Cloudit::Command::Base
56
83
  opts.banner = 'Usage: cloudit generate [options]'
57
84
  opts.separator ''
58
85
  opts.separator 'Generate options:'
59
- opts.string '-o', '--output', 'a filename', default: 'out.json'
86
+ opts.string '-o', '--output', 'output filename', default: DEFAULT_OUT_FILE
60
87
  opts.bool '-h', '--help', 'print options', default: false
88
+ opts.string '-d', '--directory', 'root directory to generate', default: DEFAULT_DIRECTORY
61
89
 
62
90
  self.slop_opts = opts
63
91
  self.parser = Slop::Parser.new(opts)
@@ -1,3 +1,3 @@
1
1
  module Cloudit
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zachary Chai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-30 00:00:00.000000000 Z
11
+ date: 2016-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slop
@@ -104,7 +104,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
104
104
  requirements:
105
105
  - - ">="
106
106
  - !ruby/object:Gem::Version
107
- version: '0'
107
+ version: '2.0'
108
108
  required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  requirements:
110
110
  - - ">="