stax 0.0.5 → 0.0.6

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
  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