jets 0.8.18 → 0.9.0

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.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +0 -3
  3. data/CHANGELOG.md +20 -1
  4. data/Gemfile.lock +6 -2
  5. data/README/prerelease.md +6 -0
  6. data/README/testing.md +41 -0
  7. data/Rakefile +9 -1
  8. data/jets.gemspec +1 -0
  9. data/lib/jets.rb +17 -18
  10. data/lib/jets/application.rb +26 -3
  11. data/lib/jets/aws_services.rb +26 -59
  12. data/lib/jets/aws_services/stack_status.rb +52 -0
  13. data/lib/jets/builders.rb +3 -2
  14. data/lib/jets/builders/handler_generator.rb +38 -2
  15. data/lib/jets/builders/shared_deducer.rb +32 -0
  16. data/lib/jets/cfn/builders.rb +3 -1
  17. data/lib/jets/cfn/builders/api_deployment_builder.rb +1 -1
  18. data/lib/jets/cfn/builders/api_gateway_builder.rb +1 -1
  19. data/lib/jets/cfn/builders/base_child_builder.rb +37 -7
  20. data/lib/jets/cfn/builders/controller_builder.rb +6 -1
  21. data/lib/jets/cfn/builders/function_builder.rb +5 -0
  22. data/lib/jets/cfn/builders/interface.rb +5 -6
  23. data/lib/jets/cfn/builders/job_builder.rb +5 -0
  24. data/lib/jets/cfn/builders/parent_builder.rb +17 -16
  25. data/lib/jets/cfn/builders/rule_builder.rb +6 -1
  26. data/lib/jets/cfn/builders/shared_builder.rb +14 -0
  27. data/lib/jets/commands.rb +9 -8
  28. data/lib/jets/commands/build.rb +36 -14
  29. data/lib/jets/commands/console.rb +1 -0
  30. data/lib/jets/commands/help/runner.md +17 -0
  31. data/lib/jets/commands/main.rb +7 -0
  32. data/lib/jets/commands/new.rb +39 -19
  33. data/lib/jets/commands/runner.rb +18 -0
  34. data/lib/jets/commands/sequence.rb +27 -1
  35. data/lib/jets/commands/templates/skeleton/.rspec +3 -0
  36. data/lib/jets/commands/templates/skeleton/Gemfile.tt +0 -1
  37. data/lib/jets/commands/templates/skeleton/app/jobs/application_job.rb +2 -0
  38. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +2 -1
  39. data/lib/jets/commands/templates/skeleton/config/routes.rb +5 -1
  40. data/lib/jets/commands/templates/skeleton/spec/spec_helper.rb.tt +5 -4
  41. data/lib/jets/core.rb +8 -6
  42. data/lib/jets/default/application.rb +1 -0
  43. data/lib/jets/generator.rb +1 -1
  44. data/lib/jets/inflections.rb +23 -0
  45. data/lib/jets/job/dsl.rb +69 -47
  46. data/lib/jets/klass.rb +6 -1
  47. data/lib/jets/lambda/dsl.rb +102 -34
  48. data/lib/jets/lambda/function_constructor.rb +2 -2
  49. data/lib/jets/lambda/task.rb +10 -5
  50. data/lib/jets/naming.rb +13 -2
  51. data/lib/jets/processors/deducer.rb +13 -2
  52. data/lib/jets/processors/main_processor.rb +1 -1
  53. data/lib/jets/rails_overrides.rb +1 -1
  54. data/lib/jets/resource.rb +20 -5
  55. data/lib/jets/resource/api_gateway/deployment.rb +0 -1
  56. data/lib/jets/resource/associated.rb +26 -0
  57. data/lib/jets/resource/base.rb +12 -0
  58. data/lib/jets/resource/child_stack.rb +2 -0
  59. data/lib/jets/resource/child_stack/api_deployment.rb +9 -15
  60. data/lib/jets/resource/child_stack/api_gateway.rb +8 -8
  61. data/lib/jets/resource/child_stack/app_class.rb +41 -16
  62. data/lib/jets/resource/child_stack/base.rb +24 -0
  63. data/lib/jets/resource/child_stack/shared.rb +90 -0
  64. data/lib/jets/resource/config.rb +4 -0
  65. data/lib/jets/resource/config/config_rule.rb +66 -0
  66. data/lib/jets/resource/config/managed_rule.rb +15 -0
  67. data/lib/jets/resource/events.rb +3 -0
  68. data/lib/jets/resource/events/rule.rb +31 -0
  69. data/lib/jets/resource/iam/application_role.rb +2 -2
  70. data/lib/jets/resource/iam/base_role_definition.rb +4 -2
  71. data/lib/jets/resource/iam/class_role.rb +50 -2
  72. data/lib/jets/resource/iam/function_role.rb +28 -0
  73. data/lib/jets/resource/iam/policy_document.rb +0 -4
  74. data/lib/jets/resource/permission.rb +12 -6
  75. data/lib/jets/resource/replacer.rb +4 -0
  76. data/lib/jets/resource/sns.rb +3 -0
  77. data/lib/jets/resource/standardizer.rb +42 -0
  78. data/lib/jets/router.rb +9 -1
  79. data/lib/jets/rule/dsl.rb +51 -78
  80. data/lib/jets/stack.rb +105 -0
  81. data/lib/jets/stack/builder.rb +38 -0
  82. data/lib/jets/stack/definition.rb +50 -0
  83. data/lib/jets/stack/function.rb +60 -0
  84. data/lib/jets/stack/main.rb +5 -0
  85. data/lib/jets/stack/main/dsl.rb +33 -0
  86. data/lib/jets/stack/main/extensions/base.rb +45 -0
  87. data/lib/jets/stack/main/extensions/cloudwatch.rb +19 -0
  88. data/lib/jets/stack/main/extensions/lambda.rb +69 -0
  89. data/lib/jets/stack/main/extensions/sns.rb +12 -0
  90. data/lib/jets/stack/main/extensions/sqs.rb +8 -0
  91. data/lib/jets/stack/output.rb +38 -0
  92. data/lib/jets/stack/output/dsl.rb +19 -0
  93. data/lib/jets/stack/output/lookup.rb +36 -0
  94. data/lib/jets/stack/parameter.rb +38 -0
  95. data/lib/jets/stack/parameter/dsl.rb +42 -0
  96. data/lib/jets/stack/resource.rb +30 -0
  97. data/lib/jets/stack/resource/dsl.rb +19 -0
  98. data/lib/jets/version.rb +1 -1
  99. metadata +53 -4
  100. data/support/clean +0 -3
  101. data/support/console +0 -3
@@ -0,0 +1,38 @@
1
+ # Implements:
2
+ #
3
+ # template - uses @definition to build a CloudFormation template section
4
+ #
5
+ class Jets::Stack
6
+ class Parameter
7
+ autoload :Dsl, "jets/stack/parameter/dsl"
8
+ include Definition
9
+
10
+ def template
11
+ camelize(add_required(standarize(@definition)))
12
+ end
13
+
14
+ # Type is the only required property: https://amzn.to/2x8W5aD
15
+ def standarize(definition)
16
+ first, second, _ = definition
17
+ if definition.size == 1 && first.is_a?(Hash) # long form
18
+ first # pass through
19
+ elsif definition.size == 2 && second.is_a?(Hash) # medium form
20
+ logical_id, properties = first, second
21
+ { logical_id => properties }
22
+ elsif (definition.size == 2 && second.is_a?(String)) || # short form
23
+ definition.size == 1
24
+ logical_id = first
25
+ properties = second.is_a?(String) ? { default: second } : {}
26
+ { logical_id => properties }
27
+ else # I dont know what form
28
+ raise "Invalid form provided. definition #{definition.inspect}"
29
+ end
30
+ end
31
+
32
+ def add_required(attributes)
33
+ properties = attributes.values.first
34
+ properties[:type] ||= 'String'
35
+ attributes
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,42 @@
1
+ class Jets::Stack
2
+ class Parameter
3
+ module Dsl
4
+ extend ActiveSupport::Concern
5
+ extend Memoist
6
+
7
+ def parameters
8
+ add_common_parameters
9
+ add_depends_on_parameters
10
+ Parameter.definitions(self.class)
11
+ end
12
+
13
+ def add_common_parameters
14
+ self.class.parameter(:iam_role)
15
+ self.class.parameter(:s3_bucket)
16
+ end
17
+
18
+ def add_depends_on_parameters
19
+ depends_on = self.class.depends_on
20
+ depends_on.each do |dependency|
21
+ dependency_outputs(dependency).each do |output|
22
+ self.class.parameter(output)
23
+ end
24
+ end if depends_on
25
+ end
26
+ memoize :add_depends_on_parameters # only run once
27
+
28
+ # Returns output keys associated with the stack. They are the resource logical ids.
29
+ def dependency_outputs(dependency)
30
+ dependency.to_s.classify.constantize.output_keys
31
+ end
32
+
33
+ class_methods do
34
+ def parameter(*definition)
35
+ # self is subclass is the stack that inherits from Jets::Stack
36
+ # IE: ExampleStack < Jets::Stack
37
+ Parameter.new(self, *definition).register
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,30 @@
1
+ # Implements:
2
+ #
3
+ # template - uses @definition to build a CloudFormation template section
4
+ #
5
+ class Jets::Stack
6
+ class Resource
7
+ autoload :Dsl, "jets/stack/resource/dsl"
8
+ include Definition
9
+
10
+ def template
11
+ template = camelize(standarize(@definition))
12
+ template = replace_placeholers(template)
13
+ template
14
+ end
15
+
16
+ # CloudFormation Resources reference: https://amzn.to/2NKg6ip
17
+ def standarize(definition)
18
+ Jets::Resource::Standardizer.new(definition).template
19
+ end
20
+
21
+ def replace_placeholers(template)
22
+ attributes = template.values.first
23
+ s3_key = attributes.dig('Properties','Code','S3Key')
24
+ if s3_key == "code_s3_key_placeholder"
25
+ attributes['Properties']['Code']['S3Key'] = Jets::Naming.code_s3_key
26
+ end
27
+ template
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,19 @@
1
+ class Jets::Stack
2
+ class Resource
3
+ module Dsl
4
+ extend ActiveSupport::Concern
5
+
6
+ def resources
7
+ Resource.definitions(self.class)
8
+ end
9
+
10
+ class_methods do
11
+ def resource(*definition)
12
+ # self is subclass is the stack that inherits from Jets::Stack
13
+ # IE: ExampleStack < Jets::Stack
14
+ Resource.new(self, *definition).register
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,3 +1,3 @@
1
1
  module Jets
2
- VERSION = "0.8.18"
2
+ VERSION = "0.9.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.18
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-09-24 00:00:00.000000000 Z
11
+ date: 2018-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: aws-sdk-sns
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: colorize
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -409,6 +423,8 @@ files:
409
423
  - LICENSE.txt
410
424
  - Procfile
411
425
  - README.md
426
+ - README/prerelease.md
427
+ - README/testing.md
412
428
  - Rakefile
413
429
  - bin/release
414
430
  - buildspec.yml
@@ -419,6 +435,7 @@ files:
419
435
  - lib/jets/application/middleware.rb
420
436
  - lib/jets/aws_info.rb
421
437
  - lib/jets/aws_services.rb
438
+ - lib/jets/aws_services/stack_status.rb
422
439
  - lib/jets/booter.rb
423
440
  - lib/jets/builders.rb
424
441
  - lib/jets/builders/code_builder.rb
@@ -427,6 +444,7 @@ files:
427
444
  - lib/jets/builders/handler_generator.rb
428
445
  - lib/jets/builders/node-hello.js
429
446
  - lib/jets/builders/node-shim.js
447
+ - lib/jets/builders/shared_deducer.rb
430
448
  - lib/jets/camelizer.rb
431
449
  - lib/jets/cfn.rb
432
450
  - lib/jets/cfn/builders.rb
@@ -439,6 +457,7 @@ files:
439
457
  - lib/jets/cfn/builders/job_builder.rb
440
458
  - lib/jets/cfn/builders/parent_builder.rb
441
459
  - lib/jets/cfn/builders/rule_builder.rb
460
+ - lib/jets/cfn/builders/shared_builder.rb
442
461
  - lib/jets/cfn/ship.rb
443
462
  - lib/jets/cfn/status.rb
444
463
  - lib/jets/cli.rb
@@ -479,6 +498,7 @@ files:
479
498
  - lib/jets/commands/help/generate.md
480
499
  - lib/jets/commands/help/new.md
481
500
  - lib/jets/commands/help/routes.md
501
+ - lib/jets/commands/help/runner.md
482
502
  - lib/jets/commands/help/server.md
483
503
  - lib/jets/commands/help/status.md
484
504
  - lib/jets/commands/help/url.md
@@ -491,6 +511,7 @@ files:
491
511
  - lib/jets/commands/new.rb
492
512
  - lib/jets/commands/rake_command.rb
493
513
  - lib/jets/commands/rake_tasks.rb
514
+ - lib/jets/commands/runner.rb
494
515
  - lib/jets/commands/sequence.rb
495
516
  - lib/jets/commands/stack_info.rb
496
517
  - lib/jets/commands/templates/skeleton/.env
@@ -498,6 +519,7 @@ files:
498
519
  - lib/jets/commands/templates/skeleton/.env.test
499
520
  - lib/jets/commands/templates/skeleton/.gitignore
500
521
  - lib/jets/commands/templates/skeleton/.jetskeep
522
+ - lib/jets/commands/templates/skeleton/.rspec
501
523
  - lib/jets/commands/templates/skeleton/Gemfile.tt
502
524
  - lib/jets/commands/templates/skeleton/Procfile
503
525
  - lib/jets/commands/templates/skeleton/README.md
@@ -562,6 +584,7 @@ files:
562
584
  - lib/jets/generator/templates/rails/scaffold/scaffold.css
563
585
  - lib/jets/generator/templates/rails/scaffold_controller/api_controller.rb
564
586
  - lib/jets/generator/templates/rails/scaffold_controller/controller.rb
587
+ - lib/jets/inflections.rb
565
588
  - lib/jets/internal/app/controllers/jets/public_controller.rb
566
589
  - lib/jets/internal/app/controllers/jets/public_controller/python/show.py
567
590
  - lib/jets/internal/app/controllers/jets/public_controller/python/show.pyc
@@ -605,11 +628,19 @@ files:
605
628
  - lib/jets/resource/api_gateway/method.rb
606
629
  - lib/jets/resource/api_gateway/resource.rb
607
630
  - lib/jets/resource/api_gateway/rest_api.rb
631
+ - lib/jets/resource/associated.rb
608
632
  - lib/jets/resource/base.rb
609
633
  - lib/jets/resource/child_stack.rb
610
634
  - lib/jets/resource/child_stack/api_deployment.rb
611
635
  - lib/jets/resource/child_stack/api_gateway.rb
612
636
  - lib/jets/resource/child_stack/app_class.rb
637
+ - lib/jets/resource/child_stack/base.rb
638
+ - lib/jets/resource/child_stack/shared.rb
639
+ - lib/jets/resource/config.rb
640
+ - lib/jets/resource/config/config_rule.rb
641
+ - lib/jets/resource/config/managed_rule.rb
642
+ - lib/jets/resource/events.rb
643
+ - lib/jets/resource/events/rule.rb
613
644
  - lib/jets/resource/function.rb
614
645
  - lib/jets/resource/iam.rb
615
646
  - lib/jets/resource/iam/application_role.rb
@@ -621,6 +652,8 @@ files:
621
652
  - lib/jets/resource/permission.rb
622
653
  - lib/jets/resource/replacer.rb
623
654
  - lib/jets/resource/s3.rb
655
+ - lib/jets/resource/sns.rb
656
+ - lib/jets/resource/standardizer.rb
624
657
  - lib/jets/route.rb
625
658
  - lib/jets/router.rb
626
659
  - lib/jets/ruby_server.rb
@@ -633,12 +666,28 @@ files:
633
666
  - lib/jets/server/route_matcher.rb
634
667
  - lib/jets/server/timing_middleware.rb
635
668
  - lib/jets/server/webpacker_setup.rb
669
+ - lib/jets/stack.rb
670
+ - lib/jets/stack/builder.rb
671
+ - lib/jets/stack/definition.rb
672
+ - lib/jets/stack/function.rb
673
+ - lib/jets/stack/main.rb
674
+ - lib/jets/stack/main/dsl.rb
675
+ - lib/jets/stack/main/extensions/base.rb
676
+ - lib/jets/stack/main/extensions/cloudwatch.rb
677
+ - lib/jets/stack/main/extensions/lambda.rb
678
+ - lib/jets/stack/main/extensions/sns.rb
679
+ - lib/jets/stack/main/extensions/sqs.rb
680
+ - lib/jets/stack/output.rb
681
+ - lib/jets/stack/output/dsl.rb
682
+ - lib/jets/stack/output/lookup.rb
683
+ - lib/jets/stack/parameter.rb
684
+ - lib/jets/stack/parameter/dsl.rb
685
+ - lib/jets/stack/resource.rb
686
+ - lib/jets/stack/resource/dsl.rb
636
687
  - lib/jets/timing.rb
637
688
  - lib/jets/timing/report.rb
638
689
  - lib/jets/util.rb
639
690
  - lib/jets/version.rb
640
- - support/clean
641
- - support/console
642
691
  - vendor/dynomite/CHANGELOG.md
643
692
  - vendor/dynomite/Gemfile
644
693
  - vendor/dynomite/README.md
@@ -1,3 +0,0 @@
1
- #!/bin/bash
2
-
3
- rm -rf spec/fixtures/project/bundled
@@ -1,3 +0,0 @@
1
- #!/bin/bash
2
-
3
- irb -r "./lib/jets"