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 +4 -4
- data/lib/stax.rb +0 -1
- data/lib/stax/generate.rb +1 -1
- data/lib/stax/generators.rb +7 -14
- data/lib/stax/generators/base.rb +29 -0
- data/lib/stax/generators/generator/generator_generator.rb +36 -0
- data/lib/stax/generators/generator/templates/generator.rb.erb +26 -0
- data/lib/stax/generators/{stack_generator.rb → stack/stack_generator.rb} +43 -40
- data/lib/stax/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24b118344e504720f05bc0cf2ece8718f239f62be0c1108798e3b0ae293e824b
|
4
|
+
data.tar.gz: 7320e11f8631f087861934243b7eec97d17a992ebcb74b43512a345fe4423ef4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36ded65f2ff9dedc05b985c0e9af6bf290ae8f301f32ba3653d439b7bbe406ba69b413ed0548a88f168d0603246a32b13e5feddc5a1c2656027aaff569c1f6d2
|
7
|
+
data.tar.gz: 1178754545a2d18103dbc0c87308c30de5d0a765e97e00542393e91567ebc33acaefc7ad86ae5d8331cbb8e9bbe6986130b1ffb1382d5f4edc1491acabd14c13
|
data/lib/stax.rb
CHANGED
data/lib/stax/generate.rb
CHANGED
data/lib/stax/generators.rb
CHANGED
@@ -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
|
-
|
8
|
-
|
7
|
+
module Generators
|
8
|
+
class StackGenerator < Base
|
9
|
+
desc 'Create new stacks with given names.'
|
9
10
|
|
10
|
-
|
11
|
-
|
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
|
-
|
14
|
-
|
15
|
-
|
14
|
+
def check_args
|
15
|
+
abort('List one or more stacks to create') if args.empty?
|
16
|
+
end
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
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
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
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
|
-
|
57
|
+
private
|
57
58
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
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
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
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
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
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
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.
|
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/
|
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
|