stax 0.0.5 → 0.0.6

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: f67200ba2fe96d677017c4c8b7fd8cdaeb96c64c2b460a772e792b002002e99c
4
- data.tar.gz: 73ca26f1f17f37249fd3a472445234c157ab91634187f6d9037e0a20ff131af6
3
+ metadata.gz: 24b118344e504720f05bc0cf2ece8718f239f62be0c1108798e3b0ae293e824b
4
+ data.tar.gz: 7320e11f8631f087861934243b7eec97d17a992ebcb74b43512a345fe4423ef4
5
5
  SHA512:
6
- metadata.gz: 4ab6c6a8e26b26d4886c2b1ee296c01d966ca67a1562853c88ecb65888b5de91fecd86edd036f7867e3f91a50f7e85595eb359f393de73be6345285f62c93e78
7
- data.tar.gz: 1035345699f80580901023c0a1462f3407bb46778714c0e649e08136ad6518ed749add006ac18426e8835d8f0238d6424129cbb58a05b83a78f4538833c8a8d8
6
+ metadata.gz: 36ded65f2ff9dedc05b985c0e9af6bf290ae8f301f32ba3653d439b7bbe406ba69b413ed0548a88f168d0603246a32b13e5feddc5a1c2656027aaff569c1f6d2
7
+ data.tar.gz: 1178754545a2d18103dbc0c87308c30de5d0a765e97e00542393e91567ebc33acaefc7ad86ae5d8331cbb8e9bbe6986130b1ffb1382d5f4edc1491acabd14c13
data/lib/stax.rb CHANGED
@@ -21,7 +21,6 @@ require 'stax/stack/imports'
21
21
  require 'stax/stack/resources'
22
22
 
23
23
  require 'stax/generators'
24
- require 'stax/generators/stack_generator'
25
24
  require 'stax/generate'
26
25
  require 'stax/mixin/ec2'
27
26
  require 'stax/mixin/alb'
data/lib/stax/generate.rb CHANGED
@@ -3,7 +3,7 @@ module Stax
3
3
 
4
4
  desc 'generate NAME [ARGS]', 'run code generators'
5
5
  def generate(generator, *args)
6
- Stax::const_get(generator.capitalize + 'Generator').start(args)
6
+ Stax::Generators.invoke(generator, *args)
7
7
  rescue NameError => e
8
8
  fail_task(e.message)
9
9
  end
@@ -1,20 +1,13 @@
1
+ require 'stax/generators/base'
2
+ require 'stax/generators/stack/stack_generator'
3
+ require 'stax/generators/generator/generator_generator'
4
+
1
5
  module Stax
2
6
  module Generators
3
- class Base < Thor::Group
4
- include Thor::Actions
5
-
6
- protected
7
-
8
- ## name for invoking this generator
9
- def self.command_name
10
- self.to_s.split('::').last.delete_suffix('Generator').downcase
11
- end
12
-
13
- ## override help banner to make sense for generators
14
- def self.banner(*args)
15
- "#{basename} generate #{command_name} ARGS"
16
- end
17
7
 
8
+ def self.invoke(name, *args)
9
+ Stax::Generators::const_get(name.capitalize + 'Generator').start(args)
18
10
  end
11
+
19
12
  end
20
13
  end
@@ -0,0 +1,29 @@
1
+ module Stax
2
+ module Generators
3
+ class Base < Thor::Group
4
+ include Thor::Actions
5
+
6
+ protected
7
+
8
+ def self.subclasses
9
+ ObjectSpace.each_object(singleton_class).map do |klass|
10
+ klass == self ? nil : klass
11
+ end.compact
12
+ end
13
+
14
+ ## name for invoking this generator
15
+ def self.command_name
16
+ self.to_s.split('::').last.delete_suffix('Generator').downcase
17
+ end
18
+
19
+ def self.invoke(name, args = ARGV)
20
+ end
21
+
22
+ ## override help banner to make sense for generators
23
+ def self.banner(*args)
24
+ "#{basename} generate #{command_name} ARGS"
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,36 @@
1
+ module Stax
2
+ module Generators
3
+ class GeneratorGenerator < Base
4
+ desc 'Create new generator with given name.'
5
+
6
+ source_root File.expand_path('templates', __dir__)
7
+
8
+ def check_args
9
+ abort('Give name of generator, e.g. FooBar or foo_bar') if args.size != 1
10
+ end
11
+
12
+ def create_generator_file
13
+ template('generator.rb.erb', File.join(generator_path, generator_name + '_generator.rb'))
14
+ end
15
+
16
+ def create_templates_dir
17
+ create_file File.join(generator_path, 'templates', '.empty_directory')
18
+ end
19
+
20
+ private
21
+
22
+ def generator_name
23
+ @_generator_name ||= args.first.underscore
24
+ end
25
+
26
+ def class_name
27
+ @_class_name ||= args.first.camelize + 'Generator'
28
+ end
29
+
30
+ def generator_path
31
+ @_generator_path ||= File.join('lib', 'generators', args.first.underscore)
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,26 @@
1
+ module Stax
2
+ module Generators
3
+ class <%= class_name %> < Base
4
+ desc '<%= generator_name %> generator.'
5
+
6
+ source_root File.expand_path('templates', __dir__)
7
+
8
+ # see https://www.rubydoc.info/github/wycats/thor/Thor/Actions for methods
9
+
10
+ # def create_file
11
+ # create_file(filename) do
12
+ # content
13
+ # end
14
+ # end
15
+
16
+ # def create_template
17
+ # template(src, dest)
18
+ # end
19
+
20
+ # def create_dir
21
+ # empty_directory(path)
22
+ # end
23
+
24
+ end
25
+ end
26
+ end
@@ -4,27 +4,28 @@
4
4
  ## - cfer/json/yaml template outline in cf/
5
5
 
6
6
  module Stax
7
- class StackGenerator < Stax::Generators::Base
8
- desc 'Create new stacks with given names.'
7
+ module Generators
8
+ class StackGenerator < Base
9
+ desc 'Create new stacks with given names.'
9
10
 
10
- class_option :json, type: :boolean, default: false, desc: 'create json templates'
11
- class_option :yaml, type: :boolean, default: false, desc: 'create yaml templates'
11
+ class_option :json, type: :boolean, default: false, desc: 'create json templates'
12
+ class_option :yaml, type: :boolean, default: false, desc: 'create yaml templates'
12
13
 
13
- def check_args
14
- abort('List one or more stacks to create') if args.empty?
15
- end
14
+ def check_args
15
+ abort('List one or more stacks to create') if args.empty?
16
+ end
16
17
 
17
- def create_staxfile
18
- create_file 'Staxfile' unless File.exist?('Staxfile')
19
- append_to_file 'Staxfile' do
20
- args.map { |s| "stack :#{s}" }.join("\n").concat("\n")
18
+ def create_staxfile
19
+ create_file 'Staxfile' unless File.exist?('Staxfile')
20
+ append_to_file 'Staxfile' do
21
+ args.map { |s| "stack :#{s}" }.join("\n").concat("\n")
22
+ end
21
23
  end
22
- end
23
24
 
24
- def create_lib_files
25
- args.each do |s|
26
- create_file "lib/stack/#{s}.rb" do
27
- <<~FILE
25
+ def create_lib_files
26
+ args.each do |s|
27
+ create_file "lib/stack/#{s}.rb" do
28
+ <<~FILE
28
29
  module Stax
29
30
  class #{s.capitalize} < Stack
30
31
  # include Logs
@@ -39,40 +40,40 @@ module Stax
39
40
  end
40
41
  end
41
42
  FILE
43
+ end
42
44
  end
43
45
  end
44
- end
45
46
 
46
- def create_templates
47
- if options[:json]
48
- create_json_templates
49
- elsif options[:yaml]
50
- create_yaml_templates
51
- else
52
- create_cfer_templates
47
+ def create_templates
48
+ if options[:json]
49
+ create_json_templates
50
+ elsif options[:yaml]
51
+ create_yaml_templates
52
+ else
53
+ create_cfer_templates
54
+ end
53
55
  end
54
- end
55
56
 
56
- private
57
+ private
57
58
 
58
- def create_cfer_templates
59
- args.each do |s|
60
- create_file "cf/#{s}.rb" do
61
- <<~FILE
59
+ def create_cfer_templates
60
+ args.each do |s|
61
+ create_file "cf/#{s}.rb" do
62
+ <<~FILE
62
63
  description '#{s} stack'
63
64
 
64
65
  # parameter :foo, type: :String, default: ''
65
66
  # mappings()
66
67
  # include_template()
67
68
  FILE
69
+ end
68
70
  end
69
71
  end
70
- end
71
72
 
72
- def create_json_templates
73
- args.each do |s|
74
- create_file "cf/#{s}.json" do
75
- <<~FILE
73
+ def create_json_templates
74
+ args.each do |s|
75
+ create_file "cf/#{s}.json" do
76
+ <<~FILE
76
77
  {
77
78
  "AWSTemplateFormatVersion": "2010-09-09",
78
79
  "Description": "#{s} stack",
@@ -83,14 +84,14 @@ module Stax
83
84
  "Outputs": {}
84
85
  }
85
86
  FILE
87
+ end
86
88
  end
87
89
  end
88
- end
89
90
 
90
- def create_yaml_templates
91
- args.each do |s|
92
- create_file "cf/#{s}.yaml" do
93
- <<~FILE
91
+ def create_yaml_templates
92
+ args.each do |s|
93
+ create_file "cf/#{s}.yaml" do
94
+ <<~FILE
94
95
  AWSTemplateFormatVersion: '2010-09-09'
95
96
  Description: Stax test stack
96
97
  Parameters: {}
@@ -99,8 +100,10 @@ module Stax
99
100
  Resources:
100
101
  Outputs: {}
101
102
  FILE
103
+ end
102
104
  end
103
105
  end
106
+
104
107
  end
105
108
  end
106
109
  end
data/lib/stax/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Stax
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stax
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Lister
@@ -161,7 +161,10 @@ files:
161
161
  - lib/stax/dsl.rb
162
162
  - lib/stax/generate.rb
163
163
  - lib/stax/generators.rb
164
- - lib/stax/generators/stack_generator.rb
164
+ - lib/stax/generators/base.rb
165
+ - lib/stax/generators/generator/generator_generator.rb
166
+ - lib/stax/generators/generator/templates/generator.rb.erb
167
+ - lib/stax/generators/stack/stack_generator.rb
165
168
  - lib/stax/git.rb
166
169
  - lib/stax/github.rb
167
170
  - lib/stax/iam.rb