jets-fs 1.6.10
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 +7 -0
- data/.circleci/bin/commit_docs.sh +26 -0
- data/.circleci/config.yml +126 -0
- data/.codebuild/README.md +68 -0
- data/.codebuild/bin/jets +3 -0
- data/.codebuild/buildspec-base.yml +14 -0
- data/.codebuild/integration.sh +72 -0
- data/.codebuild/jets.postman_collection.json +323 -0
- data/.codebuild/scripts/install-docker.sh +12 -0
- data/.codebuild/scripts/install-dynamodb-local.sh +22 -0
- data/.codebuild/scripts/install-java.sh +22 -0
- data/.codebuild/scripts/install-node.sh +4 -0
- data/.github/ISSUE_TEMPLATE.md +7 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +73 -0
- data/.github/ISSUE_TEMPLATE/documentation.md +27 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +64 -0
- data/.github/ISSUE_TEMPLATE/question.md +16 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +42 -0
- data/.gitignore +24 -0
- data/.gitmodules +6 -0
- data/.python-version +1 -0
- data/.rspec +4 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +533 -0
- data/Dockerfile +16 -0
- data/Dockerfile.base +53 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +190 -0
- data/Guardfile +22 -0
- data/LICENSE.txt +22 -0
- data/Procfile +2 -0
- data/README.md +203 -0
- data/Rakefile +21 -0
- data/backers.md +16 -0
- data/bin/release +9 -0
- data/buildspec.yml +18 -0
- data/exe/jets +14 -0
- data/jets.gemspec +61 -0
- data/lib/jets.rb +71 -0
- data/lib/jets/application.rb +308 -0
- data/lib/jets/aws_info.rb +111 -0
- data/lib/jets/aws_services.rb +60 -0
- data/lib/jets/aws_services/stack_status.rb +59 -0
- data/lib/jets/booter.rb +130 -0
- data/lib/jets/builders.rb +16 -0
- data/lib/jets/builders/code_builder.rb +379 -0
- data/lib/jets/builders/code_size.rb +57 -0
- data/lib/jets/builders/gem_replacer.rb +76 -0
- data/lib/jets/builders/handler_generator.rb +172 -0
- data/lib/jets/builders/lambda_layer.rb +69 -0
- data/lib/jets/builders/md5.rb +60 -0
- data/lib/jets/builders/md5_zip.rb +61 -0
- data/lib/jets/builders/purger.rb +35 -0
- data/lib/jets/builders/rack_packager.rb +51 -0
- data/lib/jets/builders/rackup_wrappers/rackup +19 -0
- data/lib/jets/builders/rackup_wrappers/rackup.rb +7 -0
- data/lib/jets/builders/reconfigure_rails.rb +114 -0
- data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +16 -0
- data/lib/jets/builders/ruby_packager.rb +207 -0
- data/lib/jets/builders/shim_vars.rb +5 -0
- data/lib/jets/builders/shim_vars/app.rb +78 -0
- data/lib/jets/builders/shim_vars/base.rb +25 -0
- data/lib/jets/builders/shim_vars/shared.rb +37 -0
- data/lib/jets/builders/templates/handler.rb +12 -0
- data/lib/jets/builders/tidy.rb +107 -0
- data/lib/jets/builders/util.rb +31 -0
- data/lib/jets/camelizer.rb +67 -0
- data/lib/jets/cfn.rb +6 -0
- data/lib/jets/cfn/builders.rb +20 -0
- data/lib/jets/cfn/builders/api_deployment_builder.rb +58 -0
- data/lib/jets/cfn/builders/api_gateway_builder.rb +80 -0
- data/lib/jets/cfn/builders/base_child_builder.rb +82 -0
- data/lib/jets/cfn/builders/controller_builder.rb +42 -0
- data/lib/jets/cfn/builders/function_builder.rb +14 -0
- data/lib/jets/cfn/builders/interface.rb +127 -0
- data/lib/jets/cfn/builders/job_builder.rb +14 -0
- data/lib/jets/cfn/builders/parent_builder.rb +93 -0
- data/lib/jets/cfn/builders/rule_builder.rb +24 -0
- data/lib/jets/cfn/builders/shared_builder.rb +14 -0
- data/lib/jets/cfn/ship.rb +189 -0
- data/lib/jets/cfn/status.rb +212 -0
- data/lib/jets/cfn/upload.rb +139 -0
- data/lib/jets/cli.rb +189 -0
- data/lib/jets/commands.rb +27 -0
- data/lib/jets/commands/base.rb +164 -0
- data/lib/jets/commands/build.rb +217 -0
- data/lib/jets/commands/call.rb +174 -0
- data/lib/jets/commands/call/anonymous_guesser.rb +96 -0
- data/lib/jets/commands/call/autoload_guesser.rb +112 -0
- data/lib/jets/commands/call/base_guesser.rb +33 -0
- data/lib/jets/commands/call/guesser.rb +48 -0
- data/lib/jets/commands/clean.rb +23 -0
- data/lib/jets/commands/clean/base.rb +24 -0
- data/lib/jets/commands/clean/build.rb +13 -0
- data/lib/jets/commands/clean/log.rb +107 -0
- data/lib/jets/commands/console.rb +13 -0
- data/lib/jets/commands/db.rb +15 -0
- data/lib/jets/commands/db/environment-task.rake +3 -0
- data/lib/jets/commands/db/tasks.rb +44 -0
- data/lib/jets/commands/dbconsole.rb +131 -0
- data/lib/jets/commands/delete.rb +143 -0
- data/lib/jets/commands/deploy.rb +131 -0
- data/lib/jets/commands/dynamodb.rb +22 -0
- data/lib/jets/commands/dynamodb/migrate.rb +9 -0
- data/lib/jets/commands/dynamodb/migrator.rb +36 -0
- data/lib/jets/commands/gems.rb +21 -0
- data/lib/jets/commands/help.rb +9 -0
- data/lib/jets/commands/help/build.md +6 -0
- data/lib/jets/commands/help/call.md +61 -0
- data/lib/jets/commands/help/clean/build.md +5 -0
- data/lib/jets/commands/help/clean/log.md +5 -0
- data/lib/jets/commands/help/console.md +18 -0
- data/lib/jets/commands/help/db/generate.md +8 -0
- data/lib/jets/commands/help/dbconsole.md +9 -0
- data/lib/jets/commands/help/delete.md +22 -0
- data/lib/jets/commands/help/deploy.md +32 -0
- data/lib/jets/commands/help/dynamodb/generate.md +52 -0
- data/lib/jets/commands/help/dynamodb/migrate.md +4 -0
- data/lib/jets/commands/help/gems/check.md +8 -0
- data/lib/jets/commands/help/generate.md +22 -0
- data/lib/jets/commands/help/import/rack.md +13 -0
- data/lib/jets/commands/help/import/rails.md +11 -0
- data/lib/jets/commands/help/new.md +42 -0
- data/lib/jets/commands/help/routes.md +16 -0
- data/lib/jets/commands/help/runner.md +17 -0
- data/lib/jets/commands/help/server.md +15 -0
- data/lib/jets/commands/help/status.md +14 -0
- data/lib/jets/commands/help/upgrade.md +5 -0
- data/lib/jets/commands/help/url.md +6 -0
- data/lib/jets/commands/import.rb +18 -0
- data/lib/jets/commands/import/base.rb +49 -0
- data/lib/jets/commands/import/cheatsheet.rb +35 -0
- data/lib/jets/commands/import/rack.rb +16 -0
- data/lib/jets/commands/import/rail.rb +74 -0
- data/lib/jets/commands/import/sequence.rb +90 -0
- data/lib/jets/commands/import/templates/config/database.yml +26 -0
- data/lib/jets/commands/import/templates/submodules-cheatsheet.md +89 -0
- data/lib/jets/commands/main.rb +152 -0
- data/lib/jets/commands/markdown.rb +8 -0
- data/lib/jets/commands/markdown/creator.rb +58 -0
- data/lib/jets/commands/markdown/index.rb +27 -0
- data/lib/jets/commands/markdown/page.rb +125 -0
- data/lib/jets/commands/markdown/shell.rb +11 -0
- data/lib/jets/commands/new.rb +157 -0
- data/lib/jets/commands/rake_command.rb +61 -0
- data/lib/jets/commands/rake_tasks.rb +45 -0
- data/lib/jets/commands/runner.rb +18 -0
- data/lib/jets/commands/sequence.rb +99 -0
- data/lib/jets/commands/stack_info.rb +30 -0
- data/lib/jets/commands/templates/skeleton/.gitignore +12 -0
- data/lib/jets/commands/templates/skeleton/.jetskeep +1 -0
- data/lib/jets/commands/templates/skeleton/.rspec +3 -0
- data/lib/jets/commands/templates/skeleton/Gemfile.tt +35 -0
- data/lib/jets/commands/templates/skeleton/Procfile +7 -0
- data/lib/jets/commands/templates/skeleton/README.md +11 -0
- data/lib/jets/commands/templates/skeleton/Rakefile +2 -0
- data/lib/jets/commands/templates/skeleton/app/controllers/application_controller.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/helpers/application_helper.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/jobs/application_job.rb +4 -0
- data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/models/application_record.rb +3 -0
- data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +25 -0
- data/lib/jets/commands/templates/skeleton/config.ru +5 -0
- data/lib/jets/commands/templates/skeleton/config/application.rb.tt +66 -0
- data/lib/jets/commands/templates/skeleton/config/database.yml.tt +26 -0
- data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +22 -0
- data/lib/jets/commands/templates/skeleton/config/environments/development.rb +4 -0
- data/lib/jets/commands/templates/skeleton/config/environments/production.rb +4 -0
- data/lib/jets/commands/templates/skeleton/config/routes.rb +9 -0
- data/lib/jets/commands/templates/skeleton/db/.gitkeep +0 -0
- data/lib/jets/commands/templates/skeleton/public/404.html +67 -0
- data/lib/jets/commands/templates/skeleton/public/422.html +67 -0
- data/lib/jets/commands/templates/skeleton/public/500.html +66 -0
- data/lib/jets/commands/templates/skeleton/public/favicon.ico +0 -0
- data/lib/jets/commands/templates/skeleton/public/index.html.tt +91 -0
- data/lib/jets/commands/templates/skeleton/spec/controllers/posts_controller_spec.rb +15 -0
- data/lib/jets/commands/templates/skeleton/spec/fixtures/payloads/posts-index.json +51 -0
- data/lib/jets/commands/templates/skeleton/spec/fixtures/payloads/posts-show.json +53 -0
- data/lib/jets/commands/templates/skeleton/spec/spec_helper.rb.tt +30 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +14 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +24 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/src/jets/crud.js +87 -0
- data/lib/jets/commands/upgrade.rb +146 -0
- data/lib/jets/commands/upgrade/templates/bin/webpack +19 -0
- data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +19 -0
- data/lib/jets/commands/url.rb +68 -0
- data/lib/jets/commands/webpacker_template.rb +18 -0
- data/lib/jets/controller.rb +16 -0
- data/lib/jets/controller/base.rb +103 -0
- data/lib/jets/controller/callbacks.rb +62 -0
- data/lib/jets/controller/cookies.rb +40 -0
- data/lib/jets/controller/cookies/jar.rb +269 -0
- data/lib/jets/controller/layout.rb +17 -0
- data/lib/jets/controller/middleware.rb +5 -0
- data/lib/jets/controller/middleware/cors.rb +60 -0
- data/lib/jets/controller/middleware/local.rb +119 -0
- data/lib/jets/controller/middleware/local/api_gateway.rb +93 -0
- data/lib/jets/controller/middleware/local/mimic_aws_call.rb +38 -0
- data/lib/jets/controller/middleware/local/route_matcher.rb +97 -0
- data/lib/jets/controller/middleware/main.rb +46 -0
- data/lib/jets/controller/middleware/webpacker_setup.rb +6 -0
- data/lib/jets/controller/params.rb +87 -0
- data/lib/jets/controller/rack.rb +5 -0
- data/lib/jets/controller/rack/adapter.rb +63 -0
- data/lib/jets/controller/rack/env.rb +105 -0
- data/lib/jets/controller/redirection.rb +55 -0
- data/lib/jets/controller/rendering.rb +84 -0
- data/lib/jets/controller/rendering/rack_renderer.rb +238 -0
- data/lib/jets/controller/request.rb +29 -0
- data/lib/jets/controller/response.rb +61 -0
- data/lib/jets/core.rb +211 -0
- data/lib/jets/core_ext/kernel.rb +56 -0
- data/lib/jets/db.rb +15 -0
- data/lib/jets/dotenv.rb +39 -0
- data/lib/jets/erb.rb +51 -0
- data/lib/jets/generator.rb +41 -0
- data/lib/jets/generator/templates/erb/controller/view.html.erb +2 -0
- data/lib/jets/generator/templates/erb/scaffold/_form.html.erb +39 -0
- data/lib/jets/generator/templates/erb/scaffold/edit.html.erb +6 -0
- data/lib/jets/generator/templates/erb/scaffold/index.html.erb +29 -0
- data/lib/jets/generator/templates/erb/scaffold/new.html.erb +5 -0
- data/lib/jets/generator/templates/erb/scaffold/show.html.erb +9 -0
- data/lib/jets/generator/templates/rails/assets/javascript.js +2 -0
- data/lib/jets/generator/templates/rails/assets/stylesheet.css +4 -0
- data/lib/jets/generator/templates/rails/controller/controller.rb +13 -0
- data/lib/jets/generator/templates/rails/helper/helper.rb +4 -0
- data/lib/jets/generator/templates/rails/scaffold/scaffold.css +80 -0
- data/lib/jets/generator/templates/rails/scaffold_controller/api_controller.rb +62 -0
- data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +79 -0
- data/lib/jets/inflections.rb +32 -0
- data/lib/jets/internal/app/controllers/jets/public_controller.rb +31 -0
- data/lib/jets/internal/app/controllers/jets/rack_controller.rb +25 -0
- data/lib/jets/internal/app/functions/jets/base_path.rb +153 -0
- data/lib/jets/internal/app/jobs/jets/preheat_job.rb +62 -0
- data/lib/jets/io.rb +14 -0
- data/lib/jets/job.rb +4 -0
- data/lib/jets/job/base.rb +29 -0
- data/lib/jets/job/dsl.rb +108 -0
- data/lib/jets/klass.rb +109 -0
- data/lib/jets/lambda.rb +18 -0
- data/lib/jets/lambda/dsl.rb +384 -0
- data/lib/jets/lambda/function.rb +29 -0
- data/lib/jets/lambda/function_constructor.rb +55 -0
- data/lib/jets/lambda/functions.rb +34 -0
- data/lib/jets/lambda/task.rb +111 -0
- data/lib/jets/logger.rb +24 -0
- data/lib/jets/mega.rb +7 -0
- data/lib/jets/mega/hash_converter.rb +25 -0
- data/lib/jets/mega/request.rb +140 -0
- data/lib/jets/mega/request/source.rb +21 -0
- data/lib/jets/middleware.rb +38 -0
- data/lib/jets/middleware/configurator.rb +84 -0
- data/lib/jets/middleware/default_stack.rb +49 -0
- data/lib/jets/middleware/layer.rb +34 -0
- data/lib/jets/middleware/stack.rb +77 -0
- data/lib/jets/naming.rb +49 -0
- data/lib/jets/overrides/lambda.rb +1 -0
- data/lib/jets/overrides/lambda/marshaller.rb +31 -0
- data/lib/jets/overrides/rails.rb +4 -0
- data/lib/jets/overrides/rails/asset_tag_helper.rb +114 -0
- data/lib/jets/overrides/rails/common_methods.rb +20 -0
- data/lib/jets/overrides/rails/rendering_helper.rb +26 -0
- data/lib/jets/overrides/rails/url_helper.rb +25 -0
- data/lib/jets/poly_fun.rb +82 -0
- data/lib/jets/poly_fun/base_executor.rb +125 -0
- data/lib/jets/poly_fun/lambda_executor.rb +16 -0
- data/lib/jets/poly_fun/node_error.rb +8 -0
- data/lib/jets/poly_fun/node_executor.rb +54 -0
- data/lib/jets/poly_fun/python_error.rb +8 -0
- data/lib/jets/poly_fun/python_executor.rb +23 -0
- data/lib/jets/preheat.rb +117 -0
- data/lib/jets/processors.rb +4 -0
- data/lib/jets/processors/deducer.rb +65 -0
- data/lib/jets/processors/main_processor.rb +59 -0
- data/lib/jets/rack_server.rb +80 -0
- data/lib/jets/rdoc.rb +30 -0
- data/lib/jets/resource.rb +74 -0
- data/lib/jets/resource/api_gateway.rb +9 -0
- data/lib/jets/resource/api_gateway/base_path.rb +5 -0
- data/lib/jets/resource/api_gateway/base_path/function.rb +42 -0
- data/lib/jets/resource/api_gateway/base_path/mapping.rb +44 -0
- data/lib/jets/resource/api_gateway/base_path/role.rb +76 -0
- data/lib/jets/resource/api_gateway/cors.rb +61 -0
- data/lib/jets/resource/api_gateway/deployment.rb +78 -0
- data/lib/jets/resource/api_gateway/domain_name.rb +59 -0
- data/lib/jets/resource/api_gateway/method.rb +98 -0
- data/lib/jets/resource/api_gateway/resource.rb +78 -0
- data/lib/jets/resource/api_gateway/rest_api.rb +60 -0
- data/lib/jets/resource/api_gateway/rest_api/change_detection.rb +42 -0
- data/lib/jets/resource/api_gateway/rest_api/logical_id.rb +63 -0
- data/lib/jets/resource/api_gateway/rest_api/routes.rb +11 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +12 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/base.rb +130 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/to.rb +29 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/variable.rb +39 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/collision.rb +123 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/collision/variable_exception.rb +7 -0
- data/lib/jets/resource/associated.rb +26 -0
- data/lib/jets/resource/base.rb +28 -0
- data/lib/jets/resource/child_stack.rb +7 -0
- data/lib/jets/resource/child_stack/api_deployment.rb +56 -0
- data/lib/jets/resource/child_stack/api_gateway.rb +29 -0
- data/lib/jets/resource/child_stack/app_class.rb +112 -0
- data/lib/jets/resource/child_stack/base.rb +24 -0
- data/lib/jets/resource/child_stack/shared.rb +90 -0
- data/lib/jets/resource/config.rb +4 -0
- data/lib/jets/resource/config/config_rule.rb +74 -0
- data/lib/jets/resource/config/managed_rule.rb +15 -0
- data/lib/jets/resource/events.rb +3 -0
- data/lib/jets/resource/events/rule.rb +31 -0
- data/lib/jets/resource/iam.rb +8 -0
- data/lib/jets/resource/iam/application_role.rb +27 -0
- data/lib/jets/resource/iam/base_role_definition.rb +47 -0
- data/lib/jets/resource/iam/class_role.rb +74 -0
- data/lib/jets/resource/iam/function_role.rb +54 -0
- data/lib/jets/resource/iam/managed_policy.rb +22 -0
- data/lib/jets/resource/iam/policy_document.rb +41 -0
- data/lib/jets/resource/lambda.rb +5 -0
- data/lib/jets/resource/lambda/function.rb +216 -0
- data/lib/jets/resource/lambda/function/environment.rb +61 -0
- data/lib/jets/resource/lambda/gem_layer.rb +17 -0
- data/lib/jets/resource/lambda/layer_version.rb +44 -0
- data/lib/jets/resource/permission.rb +45 -0
- data/lib/jets/resource/replacer.rb +77 -0
- data/lib/jets/resource/route53.rb +3 -0
- data/lib/jets/resource/route53/record_set.rb +70 -0
- data/lib/jets/resource/s3.rb +17 -0
- data/lib/jets/resource/sns.rb +3 -0
- data/lib/jets/resource/sqs.rb +3 -0
- data/lib/jets/resource/standardizer.rb +42 -0
- data/lib/jets/route.rb +166 -0
- data/lib/jets/router.rb +175 -0
- data/lib/jets/router/scope.rb +30 -0
- data/lib/jets/rule.rb +4 -0
- data/lib/jets/rule/base.rb +19 -0
- data/lib/jets/rule/dsl.rb +110 -0
- data/lib/jets/spec_helpers.rb +52 -0
- data/lib/jets/spec_helpers/params.rb +10 -0
- data/lib/jets/spec_helpers/request.rb +98 -0
- data/lib/jets/spec_helpers/response.rb +5 -0
- data/lib/jets/stack.rb +103 -0
- data/lib/jets/stack/builder.rb +38 -0
- data/lib/jets/stack/definition.rb +50 -0
- data/lib/jets/stack/function.rb +60 -0
- data/lib/jets/stack/main.rb +5 -0
- data/lib/jets/stack/main/dsl.rb +33 -0
- data/lib/jets/stack/main/extensions/base.rb +45 -0
- data/lib/jets/stack/main/extensions/cloudwatch.rb +19 -0
- data/lib/jets/stack/main/extensions/lambda.rb +71 -0
- data/lib/jets/stack/main/extensions/sns.rb +12 -0
- data/lib/jets/stack/main/extensions/sqs.rb +36 -0
- data/lib/jets/stack/output.rb +38 -0
- data/lib/jets/stack/output/dsl.rb +19 -0
- data/lib/jets/stack/output/lookup.rb +36 -0
- data/lib/jets/stack/parameter.rb +38 -0
- data/lib/jets/stack/parameter/dsl.rb +42 -0
- data/lib/jets/stack/resource.rb +32 -0
- data/lib/jets/stack/resource/dsl.rb +19 -0
- data/lib/jets/tmp_loader.rb +52 -0
- data/lib/jets/turbine.rb +30 -0
- data/lib/jets/turbo.rb +47 -0
- data/lib/jets/turbo/database_yaml.rb +41 -0
- data/lib/jets/turbo/project/.gitignore +12 -0
- data/lib/jets/turbo/project/.jetskeep +1 -0
- data/lib/jets/turbo/project/Gemfile +16 -0
- data/lib/jets/turbo/project/Rakefile +2 -0
- data/lib/jets/turbo/project/app/controllers/application_controller.rb +2 -0
- data/lib/jets/turbo/project/app/helpers/application_helper.rb +2 -0
- data/lib/jets/turbo/project/app/jobs/application_job.rb +4 -0
- data/lib/jets/turbo/project/config.ru +5 -0
- data/lib/jets/turbo/project/config/application.rb +4 -0
- data/lib/jets/turbo/project/config/routes.rb +4 -0
- data/lib/jets/turbo/rail.rb +113 -0
- data/lib/jets/turbo/templates/config/database.yml +26 -0
- data/lib/jets/util.rb +38 -0
- data/lib/jets/version.rb +3 -0
- data/readme/prerelease.md +6 -0
- data/readme/testing.md +60 -0
- metadata +859 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Jets::Builders::ShimVars::Shared.new(path)
|
|
2
|
+
#
|
|
3
|
+
# @vars.functions.each do |function_name|
|
|
4
|
+
# @vars.handler_for(function_name)
|
|
5
|
+
# end
|
|
6
|
+
#
|
|
7
|
+
# Implements:
|
|
8
|
+
#
|
|
9
|
+
# functions: IE [:index, :show]
|
|
10
|
+
# handler_for(function_name): IE handlers/controllers/posts_controller.index
|
|
11
|
+
# dest_path: IE: handlers/controllers/posts_controller.js
|
|
12
|
+
#
|
|
13
|
+
module Jets::Builders::ShimVars
|
|
14
|
+
class App < Base
|
|
15
|
+
# Allow user to specify relative or full path. The right path gets used
|
|
16
|
+
# internally. Example paths:
|
|
17
|
+
# app/controllers/posts_controller.rb
|
|
18
|
+
# app/jobs/hard_job.rb
|
|
19
|
+
# /tmp/jets/build/app_root/app/jobs/hard_job.rb
|
|
20
|
+
# /tmp/jets/build/app_root/app/functions/hello.rb
|
|
21
|
+
def initialize(path)
|
|
22
|
+
@full_path = full(path)
|
|
23
|
+
@relative_path = relative(path)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def full(path)
|
|
27
|
+
path = "#{Jets.root}/#{path}" unless path.starts_with?("/")
|
|
28
|
+
path
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def relative(path)
|
|
32
|
+
full_path = full(path)
|
|
33
|
+
full_path.sub("#{Jets.root}/", "")
|
|
34
|
+
.sub(/.*internal\/app/, "app")
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# process_type is key, it will either "controller" or "job".
|
|
39
|
+
# It is used to deduce klass, etc.
|
|
40
|
+
# We get the process_type from the path.
|
|
41
|
+
# Example paths:
|
|
42
|
+
# app/controllers/posts_controller.rb
|
|
43
|
+
# app/jobs/hard_job.rb
|
|
44
|
+
def process_type
|
|
45
|
+
@relative_path.split('/')[1].singularize # controller or job
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Returns the public methods of the child_class.
|
|
49
|
+
# Example: [:create, :update]
|
|
50
|
+
def functions
|
|
51
|
+
klass.lambda_functions
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Examples: PostsController, HardJob, Hello, HelloFunction
|
|
55
|
+
def klass
|
|
56
|
+
@klass ||= Jets::Klass.from_path(@relative_path)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def lang(meth)
|
|
60
|
+
klass.tasks.find
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# This gets called in the node shim js template
|
|
64
|
+
# IE handlers/controllers/posts_controller.index
|
|
65
|
+
def handler_for(meth)
|
|
66
|
+
# possibly not include _function
|
|
67
|
+
underscored_name = @relative_path.sub(%r{app/(\w+)/},'').sub('.rb','')
|
|
68
|
+
"handlers/#{process_type.pluralize}/#{underscored_name}.#{meth}"
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Example return: "handlers/controllers/posts.js"
|
|
72
|
+
# TODO: rename this to dest_path or something better now since using native ruby
|
|
73
|
+
def dest_path
|
|
74
|
+
@relative_path
|
|
75
|
+
.sub("app", "handlers")
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Jets::Builders::ShimVars
|
|
2
|
+
class Base
|
|
3
|
+
include Jets::AwsServices
|
|
4
|
+
extend Memoist
|
|
5
|
+
|
|
6
|
+
def s3_bucket
|
|
7
|
+
Jets.aws.s3_bucket
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def rack_zip
|
|
11
|
+
checksum_zip(:rack)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def bundled_zip
|
|
15
|
+
checksum_zip(:bundled)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
def checksum_zip(name)
|
|
20
|
+
checksum = Jets::Builders::Md5.checksums["stage/#{name}"]
|
|
21
|
+
return unless checksum
|
|
22
|
+
"#{name}-#{checksum}.zip"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Jets::Builders::ShimVars::Shared.new(fun)
|
|
2
|
+
#
|
|
3
|
+
# @deducer.functions.each do |function_name|
|
|
4
|
+
# @deducer.handler_for(function_name)
|
|
5
|
+
# end
|
|
6
|
+
#
|
|
7
|
+
# Implements:
|
|
8
|
+
#
|
|
9
|
+
# functions: IE [:index, :show]
|
|
10
|
+
# handler_for(function_name): IE handlers/controllers/posts_controller.index
|
|
11
|
+
# dest_path: IE: handlers/controllers/posts_controller.js
|
|
12
|
+
#
|
|
13
|
+
module Jets::Builders::ShimVars
|
|
14
|
+
class Shared < Base
|
|
15
|
+
# fun is a Jets::Stack::Function
|
|
16
|
+
def initialize(fun)
|
|
17
|
+
@fun = fun
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Always only one element for shared functions
|
|
21
|
+
# functions: IE [:handle]
|
|
22
|
+
def functions
|
|
23
|
+
[@fun.meth] # function_names
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Dont need function_name arg but keeping the same interface as parent class
|
|
27
|
+
# IE handlers/shared/functions/bob.handle
|
|
28
|
+
def handler_for(function_name)
|
|
29
|
+
@fun.handler_dest
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# IE handlers/shared/functions/bob.js
|
|
33
|
+
def dest_path
|
|
34
|
+
@fun.handler_dest
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require "bundler/setup"
|
|
2
|
+
require "jets"
|
|
3
|
+
Jets.once # runs once in lambda execution context
|
|
4
|
+
|
|
5
|
+
<% @vars.functions.each do |function_name|
|
|
6
|
+
handler = @vars.handler_for(function_name)
|
|
7
|
+
meth = handler.split('.').last
|
|
8
|
+
-%>
|
|
9
|
+
def <%= meth -%>(event:, context:)
|
|
10
|
+
Jets.process(event, context, "<%= handler -%>")
|
|
11
|
+
end
|
|
12
|
+
<% end %>
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
class Jets::Builders
|
|
2
|
+
class Tidy
|
|
3
|
+
include Util
|
|
4
|
+
|
|
5
|
+
def initialize(project_root, noop: false)
|
|
6
|
+
@project_root = project_root
|
|
7
|
+
@noop = noop
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def cleanup!
|
|
11
|
+
removals.each do |removal|
|
|
12
|
+
removal = removal.sub(%r{^/},'') # remove leading slash
|
|
13
|
+
path = "#{@project_root}/#{removal}"
|
|
14
|
+
rm_rf(path)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
clean_vendor_gems
|
|
18
|
+
clean_webpack_assets
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Clean out unnecessary src and compiled packs because Jets serves them out of s3.
|
|
22
|
+
# This keeps the code size down to help keep it in size limit so we can use the
|
|
23
|
+
# live Lambda console editor.
|
|
24
|
+
def clean_webpack_assets
|
|
25
|
+
FileUtils.rm_rf("#{@project_root}/app/javascript/src")
|
|
26
|
+
|
|
27
|
+
return unless File.exist?("#{@project_root}/public/packs") # this class works for rack subfolder too
|
|
28
|
+
FileUtils.mv("#{@project_root}/public/packs/manifest.json", "#{stage_area}/manifest.json")
|
|
29
|
+
FileUtils.rm_rf("#{@project_root}/public/packs")
|
|
30
|
+
FileUtils.mkdir_p("#{@project_root}/public/packs")
|
|
31
|
+
FileUtils.mv("#{stage_area}/manifest.json", "#{@project_root}/public/packs/manifest.json")
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def removals
|
|
35
|
+
removals = always_removals
|
|
36
|
+
removals += get_removals("#{@project_root}/.gitignore")
|
|
37
|
+
removals += get_removals("#{@project_root}/.dockerignore")
|
|
38
|
+
removals = removals.reject do |p|
|
|
39
|
+
jetskeep.find do |keep|
|
|
40
|
+
p.include?(keep)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
removals.uniq
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def get_removals(file)
|
|
47
|
+
path = file
|
|
48
|
+
return [] unless File.exist?(path)
|
|
49
|
+
|
|
50
|
+
removal = File.read(path).split("\n")
|
|
51
|
+
removal.map {|i| i.strip}.reject {|i| i =~ /^#/ || i.empty?}
|
|
52
|
+
# IE: ["/handlers", "/bundled*", "/vendor/jets]
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# We clean out ignored files pretty aggressively. So provide
|
|
56
|
+
# a way for users to keep files from being cleaned out.
|
|
57
|
+
def jetskeep
|
|
58
|
+
always = %w[.bundle packs]
|
|
59
|
+
path = "#{@project_root}/.jetskeep"
|
|
60
|
+
return always unless File.exist?(path)
|
|
61
|
+
|
|
62
|
+
keep = IO.readlines(path)
|
|
63
|
+
keep = keep.map {|i| i.strip}.reject { |i| i =~ /^#/ || i.empty? }
|
|
64
|
+
(always + keep).uniq
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# folders to remove in the vendor/gems folder regardless of the level of the folder
|
|
68
|
+
def clean_vendor_gems
|
|
69
|
+
# Thanks: https://stackoverflow.com/questions/11385795/ruby-list-directory-with-dir-including-dotfiles-but-not-and
|
|
70
|
+
Dir.glob("#{@project_root}/vendor/gems/**/*", File::FNM_DOTMATCH).each do |path|
|
|
71
|
+
next unless File.directory?(path)
|
|
72
|
+
dir = File.basename(path)
|
|
73
|
+
next unless always_removals.include?(dir)
|
|
74
|
+
|
|
75
|
+
rm_rf(path)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
remove_gem_cache
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Reason do not remove the cache folder generally is because some gems have
|
|
82
|
+
# actual cache folders that they used.
|
|
83
|
+
def remove_gem_cache
|
|
84
|
+
ruby_minor_version = Jets::RUBY_VERSION.split('.')[0..1].join('.') + '.0'
|
|
85
|
+
cache_path = "#{@project_root}/vendor/gems/ruby/#{ruby_minor_version}/cache"
|
|
86
|
+
FileUtils.rm_rf(cache_path)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def rm_rf(path)
|
|
90
|
+
exists = File.exist?("#{path}/.gitkeep") || File.exist?("#{path}/.keep")
|
|
91
|
+
return if exists
|
|
92
|
+
|
|
93
|
+
# say " rm -rf #{path}".color(:yellow) # uncomment to debug
|
|
94
|
+
system("rm -rf #{path}") unless @noop
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# These directories will be removed regardless of dir level
|
|
98
|
+
def always_removals
|
|
99
|
+
%w[.git spec tmp]
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def say(message)
|
|
103
|
+
message = "NOOP #{message}" if @noop
|
|
104
|
+
puts message
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
class Jets::Builders
|
|
2
|
+
module Util
|
|
3
|
+
private
|
|
4
|
+
def sh(command)
|
|
5
|
+
puts "=> #{command}".color(:green)
|
|
6
|
+
success = system(command)
|
|
7
|
+
unless success
|
|
8
|
+
puts "#{command} failed to run.".color(:red)
|
|
9
|
+
puts caller[0]
|
|
10
|
+
exit 1
|
|
11
|
+
end
|
|
12
|
+
success
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def headline(message)
|
|
16
|
+
puts "=> #{message}".color(:cyan)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def build_area
|
|
20
|
+
Jets.build_root
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def stage_area
|
|
24
|
+
"#{build_area}/stage"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def cache_area
|
|
28
|
+
"#{build_area}/cache" # cleaner to use full path for this setting
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Custom Camelizer with CloudFormation specific handling.
|
|
2
|
+
# Based on: https://stackoverflow.com/questions/8706930/converting-nested-hash-keys-from-camelcase-to-snake-case-in-ruby
|
|
3
|
+
module Jets
|
|
4
|
+
class Camelizer
|
|
5
|
+
class << self
|
|
6
|
+
def transform(value, parent_keys=[])
|
|
7
|
+
case value
|
|
8
|
+
when Array
|
|
9
|
+
value.map { |v| transform(v) }
|
|
10
|
+
when Hash
|
|
11
|
+
initializer = value.map do |k, v|
|
|
12
|
+
new_key = camelize_key(k, parent_keys)
|
|
13
|
+
[new_key, transform(v, parent_keys+[new_key])]
|
|
14
|
+
end
|
|
15
|
+
Hash[initializer]
|
|
16
|
+
else
|
|
17
|
+
value # do not transform values
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def camelize_key(k, parent_keys=[])
|
|
22
|
+
k = k.to_s
|
|
23
|
+
|
|
24
|
+
if passthrough?(k, parent_keys)
|
|
25
|
+
k # pass through untouch
|
|
26
|
+
elsif parent_keys.last == "EventPattern" # top-level
|
|
27
|
+
k.dasherize
|
|
28
|
+
elsif parent_keys.include?("EventPattern")
|
|
29
|
+
# Any keys at 2nd level under EventPattern will be pascalized
|
|
30
|
+
pascalize(k)
|
|
31
|
+
else
|
|
32
|
+
camelize(k)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def passthrough?(k, parent_keys)
|
|
37
|
+
parent_keys.include?("Variables") || # do not transform keys anything under Variables
|
|
38
|
+
parent_keys.include?("ResponseParameters") || # do not transform keys anything under Variables
|
|
39
|
+
k.include?('-') || k.include?('/')
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def camelize(value)
|
|
43
|
+
return value if value.is_a?(Integer)
|
|
44
|
+
|
|
45
|
+
value = value.to_s.camelize
|
|
46
|
+
special_map[value] || value
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def pascalize(value)
|
|
50
|
+
new_value = value.camelize
|
|
51
|
+
first_char = new_value[0..0].downcase
|
|
52
|
+
new_value[0] = first_char
|
|
53
|
+
new_value
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Some keys have special mappings
|
|
57
|
+
def special_map
|
|
58
|
+
{
|
|
59
|
+
"TemplateUrl" => "TemplateURL",
|
|
60
|
+
"Ttl" => "TTL",
|
|
61
|
+
"MaxReceiveCount" => "maxReceiveCount",
|
|
62
|
+
"DeadLetterTargetArn" => "deadLetterTargetArn",
|
|
63
|
+
}
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
data/lib/jets/cfn.rb
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'yaml'
|
|
2
|
+
|
|
3
|
+
class Jets::Cfn
|
|
4
|
+
class Builders
|
|
5
|
+
autoload :Interface, "jets/cfn/builders/interface"
|
|
6
|
+
autoload :ParentBuilder, "jets/cfn/builders/parent_builder"
|
|
7
|
+
|
|
8
|
+
# These build the app/controllers, app/jobs, and app/functions
|
|
9
|
+
autoload :BaseChildBuilder, "jets/cfn/builders/base_child_builder"
|
|
10
|
+
autoload :ControllerBuilder, "jets/cfn/builders/controller_builder"
|
|
11
|
+
autoload :FunctionBuilder, "jets/cfn/builders/function_builder"
|
|
12
|
+
autoload :JobBuilder, "jets/cfn/builders/job_builder"
|
|
13
|
+
autoload :RuleBuilder, "jets/cfn/builders/rule_builder"
|
|
14
|
+
|
|
15
|
+
autoload :ApiGatewayBuilder, "jets/cfn/builders/api_gateway_builder"
|
|
16
|
+
autoload :ApiDeploymentBuilder, "jets/cfn/builders/api_deployment_builder"
|
|
17
|
+
|
|
18
|
+
autoload :SharedBuilder, "jets/cfn/builders/shared_builder"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
class Jets::Cfn::Builders
|
|
2
|
+
class ApiDeploymentBuilder
|
|
3
|
+
include Interface
|
|
4
|
+
include Jets::AwsServices
|
|
5
|
+
|
|
6
|
+
def initialize(options={})
|
|
7
|
+
@options = options
|
|
8
|
+
@template = ActiveSupport::HashWithIndifferentAccess.new(Resources: {})
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# compose is an interface method
|
|
12
|
+
def compose
|
|
13
|
+
return unless @options[:templates] || @options[:stack_type] != :minimal
|
|
14
|
+
|
|
15
|
+
deployment = Jets::Resource::ApiGateway::Deployment.new
|
|
16
|
+
add_resource(deployment)
|
|
17
|
+
add_parameters(deployment.parameters)
|
|
18
|
+
add_outputs(deployment.outputs)
|
|
19
|
+
|
|
20
|
+
add_base_path_mapping
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Because Jets generates a new timestamped logical id for the API Deployment
|
|
24
|
+
# resource it also creates a new root base path mapping and fails. Additionally,
|
|
25
|
+
# the base path mapping depends on the API Deploy for the stage name.
|
|
26
|
+
#
|
|
27
|
+
# We resolve this by using a custom resource that does an in-place update.
|
|
28
|
+
#
|
|
29
|
+
# Note, also tried to change the domain name of to something like demo-dev-[random].mydomain.com
|
|
30
|
+
# but that does not work because the domain name has to match the route53 record exactly.
|
|
31
|
+
#
|
|
32
|
+
def add_base_path_mapping
|
|
33
|
+
return unless Jets.custom_domain?
|
|
34
|
+
|
|
35
|
+
function = Jets::Resource::ApiGateway::BasePath::Function.new
|
|
36
|
+
add_resource(function)
|
|
37
|
+
add_outputs(function.outputs)
|
|
38
|
+
|
|
39
|
+
mapping = Jets::Resource::ApiGateway::BasePath::Mapping.new
|
|
40
|
+
add_resource(mapping)
|
|
41
|
+
add_outputs(mapping.outputs)
|
|
42
|
+
|
|
43
|
+
iam_role = Jets::Resource::ApiGateway::BasePath::Role.new
|
|
44
|
+
add_resource(iam_role)
|
|
45
|
+
add_outputs(iam_role.outputs)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# template_path is an interface method
|
|
49
|
+
def template_path
|
|
50
|
+
Jets::Naming.api_deployment_template_path
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# do not bother writing a template if routes are empty
|
|
54
|
+
def write
|
|
55
|
+
super unless Jets::Router.routes.empty?
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|