jets 0.8.18 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
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"