jets_bb_fork 0.0.4
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 +84 -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 +0 -0
- data/.python-version +1 -0
- data/.rspec +4 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +734 -0
- data/CONDUCT.md +1 -0
- data/CONTRIBUTING.md +1 -0
- data/Dockerfile +16 -0
- data/Dockerfile.base +53 -0
- data/Gemfile +14 -0
- data/Guardfile +22 -0
- data/LICENSE.txt +22 -0
- data/Procfile +2 -0
- data/README.md +203 -0
- data/Rakefile +24 -0
- data/backers.md +16 -0
- data/bin/release +9 -0
- data/buildspec.yml +18 -0
- data/exe/jets_bb_fork +14 -0
- data/jets.gemspec +68 -0
- data/lib/jets.rb +27 -0
- data/lib/jets/application.rb +216 -0
- data/lib/jets/application/defaults.rb +172 -0
- data/lib/jets/autoloaders.rb +97 -0
- data/lib/jets/aws_info.rb +113 -0
- data/lib/jets/aws_services.rb +65 -0
- data/lib/jets/aws_services/global_memoist.rb +57 -0
- data/lib/jets/aws_services/s3_bucket.rb +34 -0
- data/lib/jets/aws_services/stack_status.rb +59 -0
- data/lib/jets/booter.rb +119 -0
- data/lib/jets/builders/code_builder.rb +399 -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 +186 -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/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/bundle.rb +82 -0
- data/lib/jets/camelizer.rb +71 -0
- data/lib/jets/cfn/builders/api_deployment_builder.rb +63 -0
- data/lib/jets/cfn/builders/api_gateway_builder.rb +157 -0
- data/lib/jets/cfn/builders/base_child_builder.rb +75 -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 +137 -0
- data/lib/jets/cfn/builders/job_builder.rb +14 -0
- data/lib/jets/cfn/builders/paged.rb +37 -0
- data/lib/jets/cfn/builders/parent_builder.rb +100 -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 +185 -0
- data/lib/jets/cfn/status.rb +212 -0
- data/lib/jets/cfn/upload.rb +139 -0
- data/lib/jets/cli.rb +194 -0
- data/lib/jets/commands/base.rb +146 -0
- data/lib/jets/commands/build.rb +234 -0
- data/lib/jets/commands/call.rb +169 -0
- data/lib/jets/commands/call/anonymous_guesser.rb +96 -0
- data/lib/jets/commands/call/autoload_guesser.rb +136 -0
- data/lib/jets/commands/call/base_guesser.rb +60 -0
- data/lib/jets/commands/call/guesser.rb +48 -0
- data/lib/jets/commands/clean.rb +19 -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 +12 -0
- data/lib/jets/commands/db.rb +13 -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 +141 -0
- data/lib/jets/commands/dynamodb.rb +19 -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/destroy.md +16 -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 +12 -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/rails.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 +157 -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 +46 -0
- data/lib/jets/commands/runner.rb +16 -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 +38 -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 +67 -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 +7 -0
- data/lib/jets/commands/templates/skeleton/config/environments/production.rb +9 -0
- data/lib/jets/commands/templates/skeleton/config/environments/test.rb +7 -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 +145 -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 +3 -0
- data/lib/jets/controller/base.rb +108 -0
- data/lib/jets/controller/callbacks.rb +68 -0
- data/lib/jets/controller/cookies.rb +38 -0
- data/lib/jets/controller/cookies/jar.rb +269 -0
- data/lib/jets/controller/layout.rb +17 -0
- data/lib/jets/controller/middleware/cors.rb +60 -0
- data/lib/jets/controller/middleware/local.rb +116 -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 +106 -0
- data/lib/jets/controller/middleware/main.rb +46 -0
- data/lib/jets/controller/middleware/reloader.rb +15 -0
- data/lib/jets/controller/middleware/webpacker_setup.rb +6 -0
- data/lib/jets/controller/params.rb +87 -0
- data/lib/jets/controller/rack/adapter.rb +88 -0
- data/lib/jets/controller/rack/env.rb +105 -0
- data/lib/jets/controller/redirection.rb +55 -0
- data/lib/jets/controller/rendering.rb +79 -0
- data/lib/jets/controller/rendering/rack_renderer.rb +250 -0
- data/lib/jets/controller/request.rb +29 -0
- data/lib/jets/controller/response.rb +61 -0
- data/lib/jets/controller/stage.rb +33 -0
- data/lib/jets/core.rb +149 -0
- data/lib/jets/core_ext/kernel.rb +13 -0
- data/lib/jets/db.rb +15 -0
- data/lib/jets/dotenv.rb +48 -0
- data/lib/jets/dotenv/ssm.rb +48 -0
- data/lib/jets/erb.rb +51 -0
- data/lib/jets/generator.rb +48 -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/mailers_controller.rb +97 -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 +157 -0
- data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +9 -0
- data/lib/jets/internal/app/jobs/jets/preheat_job.rb +70 -0
- data/lib/jets/internal/app/shared/functions/jets/s3_bucket_config.rb +43 -0
- data/lib/jets/internal/app/views/jets/mailers/email.html.erb +145 -0
- data/lib/jets/internal/app/views/jets/mailers/index.html.erb +8 -0
- data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +6 -0
- data/lib/jets/internal/turbines/jets/mailer.rb +51 -0
- data/lib/jets/job/base.rb +39 -0
- data/lib/jets/job/dsl.rb +40 -0
- data/lib/jets/job/dsl/dynamodb_event.rb +65 -0
- data/lib/jets/job/dsl/event_source_mapping.rb +11 -0
- data/lib/jets/job/dsl/iot_event.rb +24 -0
- data/lib/jets/job/dsl/kinesis_event.rb +46 -0
- data/lib/jets/job/dsl/log_event.rb +15 -0
- data/lib/jets/job/dsl/rule_event.rb +75 -0
- data/lib/jets/job/dsl/s3_event.rb +36 -0
- data/lib/jets/job/dsl/sns_event.rb +54 -0
- data/lib/jets/job/dsl/sqs_event.rb +96 -0
- data/lib/jets/job/helpers/kinesis_event_helper.rb +13 -0
- data/lib/jets/job/helpers/log_event_helper.rb +17 -0
- data/lib/jets/job/helpers/s3_event_helper.rb +13 -0
- data/lib/jets/klass.rb +109 -0
- data/lib/jets/lambda/dsl.rb +419 -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 +21 -0
- data/lib/jets/mega/hash_converter.rb +25 -0
- data/lib/jets/mega/request.rb +139 -0
- data/lib/jets/mega/request/source.rb +21 -0
- data/lib/jets/middleware.rb +33 -0
- data/lib/jets/middleware/configurator.rb +84 -0
- data/lib/jets/middleware/default_stack.rb +51 -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 +13 -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 +73 -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/deducer.rb +65 -0
- data/lib/jets/processors/main_processor.rb +61 -0
- data/lib/jets/rack_server.rb +86 -0
- data/lib/jets/rdoc.rb +30 -0
- data/lib/jets/resource.rb +71 -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 +101 -0
- data/lib/jets/resource/api_gateway/rest_api.rb +56 -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 +7 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +8 -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 +121 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/collision/variable_exception.rb +7 -0
- data/lib/jets/resource/associated.rb +37 -0
- data/lib/jets/resource/base.rb +28 -0
- data/lib/jets/resource/child_stack/api_deployment.rb +56 -0
- data/lib/jets/resource/child_stack/api_gateway.rb +53 -0
- data/lib/jets/resource/child_stack/app_class.rb +107 -0
- data/lib/jets/resource/child_stack/base.rb +24 -0
- data/lib/jets/resource/child_stack/shared.rb +92 -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/rule.rb +31 -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/iot/topic_rule.rb +34 -0
- data/lib/jets/resource/lambda/event_source_mapping.rb +31 -0
- data/lib/jets/resource/lambda/function.rb +214 -0
- data/lib/jets/resource/lambda/function/environment.rb +62 -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/logs/subscription_filter.rb +31 -0
- data/lib/jets/resource/permission.rb +45 -0
- data/lib/jets/resource/replacer.rb +85 -0
- data/lib/jets/resource/route53/record_set.rb +70 -0
- data/lib/jets/resource/s3/bucket.rb +24 -0
- data/lib/jets/resource/sns/subscription.rb +29 -0
- data/lib/jets/resource/sns/topic.rb +35 -0
- data/lib/jets/resource/sns/topic_policy.rb +40 -0
- data/lib/jets/resource/sqs/queue.rb +21 -0
- data/lib/jets/resource/standardizer.rb +42 -0
- data/lib/jets/route.rb +166 -0
- data/lib/jets/router.rb +177 -0
- data/lib/jets/router/scope.rb +30 -0
- data/lib/jets/rule/base.rb +19 -0
- data/lib/jets/rule/dsl.rb +110 -0
- data/lib/jets/spec_helpers.rb +54 -0
- data/lib/jets/spec_helpers/params.rb +10 -0
- data/lib/jets/spec_helpers/request.rb +78 -0
- data/lib/jets/spec_helpers/response.rb +5 -0
- data/lib/jets/stack.rb +88 -0
- data/lib/jets/stack/builder.rb +43 -0
- data/lib/jets/stack/definition.rb +50 -0
- data/lib/jets/stack/depends.rb +34 -0
- data/lib/jets/stack/depends/item.rb +9 -0
- data/lib/jets/stack/function.rb +69 -0
- data/lib/jets/stack/main.rb +4 -0
- data/lib/jets/stack/main/dsl.rb +28 -0
- data/lib/jets/stack/main/dsl/base.rb +49 -0
- data/lib/jets/stack/main/dsl/cloudwatch.rb +19 -0
- data/lib/jets/stack/main/dsl/iam.rb +8 -0
- data/lib/jets/stack/main/dsl/lambda.rb +83 -0
- data/lib/jets/stack/main/dsl/s3.rb +12 -0
- data/lib/jets/stack/main/dsl/sns.rb +16 -0
- data/lib/jets/stack/main/dsl/sqs.rb +10 -0
- data/lib/jets/stack/output.rb +35 -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 +37 -0
- data/lib/jets/stack/parameter/dsl.rb +42 -0
- data/lib/jets/stack/resource.rb +31 -0
- data/lib/jets/stack/resource/dsl.rb +19 -0
- data/lib/jets/stack/s3_event.rb +87 -0
- data/lib/jets/tmp_loader.rb +52 -0
- data/lib/jets/turbine.rb +41 -0
- data/lib/jets/turbo.rb +55 -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/rails.rb +127 -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 +1004 -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
|
+
module 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
|
+
module 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
|
data/lib/jets/bundle.rb
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
require "jets/turbo"
|
|
2
|
+
|
|
3
|
+
module Jets
|
|
4
|
+
# Named Bundle vs Bundler to avoid having to fully qualify ::Bundler
|
|
5
|
+
module Bundle
|
|
6
|
+
# Looks like for zeitwerk module autovivification to work `bundle exec` must be called.
|
|
7
|
+
# This allows zeitwork module autovivification to work even if the user has not called jets with `bundle exec jets`.
|
|
8
|
+
# Bundler.setup is essentially the same as `bundle exec`
|
|
9
|
+
# Reference: https://www.justinweiss.com/articles/what-are-the-differences-between-irb/
|
|
10
|
+
#
|
|
11
|
+
# The Bundler.setup is only necessary because we use Bundler.require after require "zeitwerk" is called.
|
|
12
|
+
#
|
|
13
|
+
# Note, this is called super early right before require "zeitwerk"
|
|
14
|
+
# The initially Bundler.setup does not include the Jets.env group.
|
|
15
|
+
# Later in Jets::Booter, Bundle.require is called and includes the Jets.env group.
|
|
16
|
+
#
|
|
17
|
+
def setup
|
|
18
|
+
return unless bundler_enabled?
|
|
19
|
+
Kernel.require "bundler/setup"
|
|
20
|
+
Bundler.setup # Same as Bundler.setup(:default)
|
|
21
|
+
rescue LoadError => e
|
|
22
|
+
handle_error(e)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Bundler.require called when environment boots up via Jets.boot. This will eagerly require all gems in the
|
|
26
|
+
# Gemfile. This means the user will not have to explictly require dependencies.
|
|
27
|
+
#
|
|
28
|
+
# It also useful for when to loading Rake tasks in Jets::Commands::RakeTasks.load! For example, some gems like
|
|
29
|
+
# webpacker that load rake tasks are specified with a git based source:
|
|
30
|
+
#
|
|
31
|
+
# gem "webpacker", git: "https://github.com/tongueroo/webpacker.git"
|
|
32
|
+
#
|
|
33
|
+
# This results in the user having to specific bundle exec in front of jets for those rake tasks to show up in
|
|
34
|
+
# jets help. Instead, when the user is within the project folder, jets automatically requires bundler for the
|
|
35
|
+
# user. So the rake tasks show up when calling jets help.
|
|
36
|
+
#
|
|
37
|
+
# When the user calls jets help from outside the project folder, bundler is not used and the load errors get
|
|
38
|
+
# rescued gracefully. This is done in Jets::Commands::RakeTasks.load! In the case when user is in another
|
|
39
|
+
# project with another Gemfile, the load errors will also be rescued.
|
|
40
|
+
def require
|
|
41
|
+
return unless bundler_enabled?
|
|
42
|
+
Kernel.require "bundler/setup"
|
|
43
|
+
Bundler.require(*bundler_groups)
|
|
44
|
+
rescue LoadError => e
|
|
45
|
+
handle_error(e)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def handle_error(e)
|
|
49
|
+
puts e.message
|
|
50
|
+
puts <<~EOL.color(:yellow)
|
|
51
|
+
WARNING: Unable to require "bundler/setup"
|
|
52
|
+
There may be something funny with your ruby and bundler setup.
|
|
53
|
+
You can try upgrading bundler and rubygems:
|
|
54
|
+
|
|
55
|
+
gem update --system
|
|
56
|
+
gem install bundler
|
|
57
|
+
|
|
58
|
+
Here are some links that may be helpful:
|
|
59
|
+
|
|
60
|
+
* https://bundler.io/blog/2019/01/03/announcing-bundler-2.html
|
|
61
|
+
* https://community.rubyonjets.com/t/jets-1-9-8-install-issue-bundler-setup-missing/185/2
|
|
62
|
+
|
|
63
|
+
Also, running bundle exec in front of your command may remove this message.
|
|
64
|
+
EOL
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Also check for Afterburner mode since in that mode jets is a standalone tool.
|
|
68
|
+
def bundler_enabled?
|
|
69
|
+
!Jets::Turbo.afterburner? && gemfile?
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def gemfile?
|
|
73
|
+
ENV['BUNDLE_GEMFILE'] || File.exist?("Gemfile")
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def bundler_groups
|
|
77
|
+
[:default, Jets.env.to_sym]
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
extend self
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
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, parent_keys) }
|
|
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
|
+
# do not transform keys anything under these special keys
|
|
38
|
+
parent_keys.include?("Variables") ||
|
|
39
|
+
parent_keys.include?("ResponseParameters") ||
|
|
40
|
+
parent_keys.include?("Fn::Sub") ||
|
|
41
|
+
k.include?('-') || k.include?('/')
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def camelize(value)
|
|
45
|
+
return value if value.is_a?(Integer)
|
|
46
|
+
|
|
47
|
+
value = value.to_s.camelize
|
|
48
|
+
special_map[value] || value
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def pascalize(value)
|
|
52
|
+
new_value = value.camelize
|
|
53
|
+
first_char = new_value[0..0].downcase
|
|
54
|
+
new_value[0] = first_char
|
|
55
|
+
new_value
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Some keys have special mappings
|
|
59
|
+
def special_map
|
|
60
|
+
{
|
|
61
|
+
"TemplateUrl" => "TemplateURL",
|
|
62
|
+
"Ttl" => "TTL",
|
|
63
|
+
"MaxReceiveCount" => "maxReceiveCount",
|
|
64
|
+
"DeadLetterTargetArn" => "deadLetterTargetArn",
|
|
65
|
+
"DbSubnetGroupDescription" => "DBSubnetGroupDescription",
|
|
66
|
+
"DbSubnetGroupName" => "DBSubnetGroupName",
|
|
67
|
+
}
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|