stax-examples 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
  SHA256:
3
- metadata.gz: d669a796308bcd43166322278d29913ebbc202adf14c8a2ebcfdfa74bec475c3
4
- data.tar.gz: e29411fd19241a5e028baf1c7d5a9abf11f8c5507e1d9ac19dd8ce98f2bcc4b7
3
+ metadata.gz: 24633f07dfc8e723207c73df66cc4177a4d7013f6f2d41349ce1cf8baeed28ad
4
+ data.tar.gz: 47dda42ed26b9555691b1ea2abdfcee2d6c42cd808cd668c1fe753f23017bf07
5
5
  SHA512:
6
- metadata.gz: 3094ab81cb6bad2f91b1a1d7157c93eebafb2f2f920543124b7003054fe5768e0490c82fbd27e3e0ae1d3643688d489dee91434fd9b4bef034d86464cccb97a0
7
- data.tar.gz: 9ca80e5c7079e4b7bf5d7138b85c843d8028665e34df2506b8825741f296b00b95e545f4f7e292f531689b9e61268e8d77dcad30515e82a2d5fc5aa2bc8cdfc6
6
+ metadata.gz: 07c517ecf8372a860bd62e66e0299bcea8684fa7cce6ea5e9ba5918bd3d24314953058d63e8bff6a1f7e3e8efb478d0ea5ece0570cff2670fe22842f7de1d0d5
7
+ data.tar.gz: 36a6fee26fc2421707121f4b9b45440cadc3e45184d072329312db9de295ceb20166875a55df04be8f915baea63dbe08e24fae4680e322a8680d6f29f6429cf3
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- stax-examples (0.0.1)
4
+ stax-examples (0.0.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -60,7 +60,7 @@ GEM
60
60
  addressable (>= 2.3.5, < 2.6)
61
61
  faraday (~> 0.8, < 1.0)
62
62
  semantic (1.6.1)
63
- stax (0.0.6)
63
+ stax (0.0.7)
64
64
  aws-sdk (~> 2)
65
65
  cfer
66
66
  git_clone_url
data/Staxfile CHANGED
@@ -1,2 +1,4 @@
1
1
  # require_relative 'lib/stax/examples'
2
2
  stack :vpc
3
+ stack :app
4
+ stack :dynamo, include: %w[DynamoDB]
@@ -0,0 +1,75 @@
1
+ module Stax
2
+ module Generators
3
+ class DynamoGenerator < Base
4
+ desc 'dynamo generator.'
5
+
6
+ class_option :stack, type: :string, default: nil, desc: 'stack to install table'
7
+
8
+ source_root File.expand_path('templates', __dir__)
9
+
10
+ attr_accessor :stack, :table, :id, :attributes, :hash, :range
11
+
12
+ def check_args
13
+ usage! unless args.size == 1
14
+ @table = args.first
15
+ @id = "Dyn#{table.capitalize}"
16
+ end
17
+
18
+ def ask_for_options
19
+ @stack = options[:stack] || ask('stack to use or create', default: 'dynamo')
20
+ end
21
+
22
+ def ask_for_attributes
23
+ @attributes = []
24
+ loop do
25
+ name = ask('attribute name (blank when done)?')
26
+ break if name.empty?
27
+ type = ask('attribute type?', default: 'S')
28
+ @attributes << [name, type]
29
+ end
30
+ end
31
+
32
+ def ask_for_key_schema
33
+ @hash = ask('hash key?', default: attributes[0].first)
34
+ @range = ask('range key?', default: attributes[1].first)
35
+ end
36
+
37
+ def add_to_staxfile
38
+ append_to_file 'Staxfile', "stack :#{@stack}, include: %w[DynamoDB]\n"
39
+ end
40
+
41
+ def append_include_template
42
+ file = File.join('cf', "#{stack}.rb")
43
+ create_file file, "description 'Dynamo tables'\n" unless File.exists?(file)
44
+ append_to_file file, "include_template '#{stack}/dyn_#{table}.rb'\n"
45
+ end
46
+
47
+ def create_table_template
48
+ template('dyn.rb.tt', File.join('cf', stack, "dyn_#{table}.rb"))
49
+ end
50
+
51
+ private
52
+
53
+ def self.banner(*args)
54
+ "#{basename} generate #{command_name} TABLENAME"
55
+ end
56
+
57
+ # see https://www.rubydoc.info/github/wycats/thor/Thor/Actions for methods
58
+
59
+ # def create_file
60
+ # create_file(filename) do
61
+ # content
62
+ # end
63
+ # end
64
+
65
+ # def create_template
66
+ # template(src, dest)
67
+ # end
68
+
69
+ # def create_dir
70
+ # empty_directory(path)
71
+ # end
72
+
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,41 @@
1
+ resource :<%= id %>, 'AWS::DynamoDB::Table' do
2
+ attribute_definitions [
3
+ <%- attributes.each do |a| -%>
4
+ { AttributeName: :<%= a[0].to_sym %>, AttributeType: :<%= a[1].upcase.to_sym %> },
5
+ <%- end -%>
6
+ ]
7
+ key_schema [
8
+ { AttributeName: :<%= hash %>, KeyType: :HASH },
9
+ { AttributeName: :<%= range %>, KeyType: :RANGE },
10
+ ]
11
+ # global_secondary_indexes [
12
+ # {
13
+ # IndexName: :by_indexName,
14
+ # KeySchema: [
15
+ # { AttributeName: :indexName, KeyType: :HASH }
16
+ # ],
17
+ # Projection: {
18
+ # NonKeyAttributes: [ :a, :b ],
19
+ # ProjectionType: :INCLUDE,
20
+ # },
21
+ # ProvisionedThroughput: {
22
+ # ReadCapacityUnits: 1,
23
+ # WriteCapacityUnits: 1,
24
+ # }
25
+ # }
26
+ # ]
27
+ provisioned_throughput do
28
+ read_capacity_units 1
29
+ write_capacity_units 1
30
+ end
31
+ # stream_specification do
32
+ # stream_view_type :NEW_IMAGE
33
+ # end
34
+ SSE_specification(
35
+ SSEEnabled: true
36
+ )
37
+ tag :Stack, Fn::ref('AWS::StackName')
38
+ end
39
+
40
+ output :<%= id %>, Fn::ref(:<%= id %>), export: Fn::sub('${AWS::StackName}-<%= id %>')
41
+ output :<%= id %>Arn, Fn::get_att(:<%= id %>, :Arn), export: Fn::sub('${AWS::StackName}-<%= id %>Arn')
@@ -1,5 +1,5 @@
1
1
  module Stax
2
2
  module Examples
3
- VERSION = '0.0.2'
3
+ VERSION = '0.0.3'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stax-examples
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
  - Richard Lister
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-06 00:00:00.000000000 Z
11
+ date: 2018-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,8 @@ files:
80
80
  - README.md
81
81
  - Rakefile
82
82
  - Staxfile
83
+ - lib/generators/dynamo/dynamo_generator.rb
84
+ - lib/generators/dynamo/templates/dyn.rb.tt
83
85
  - lib/generators/vpc/templates/%stack_name%.rb.tt
84
86
  - lib/generators/vpc/templates/%stack_name%/endpoints.rb
85
87
  - lib/generators/vpc/templates/%stack_name%/subnets.rb.tt