jets 3.1.0 → 5.0.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.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +1 -0
- data/.gitignore +5 -1
- data/CHANGELOG.md +141 -0
- data/Gemfile +1 -5
- data/LICENSE.txt +1 -1
- data/README.md +21 -43
- data/Rakefile +3 -3
- data/backers.md +0 -5
- data/engines/internal/app/controllers/jets/application_controller.rb +28 -0
- data/engines/internal/app/controllers/jets/bare_controller.rb +6 -0
- data/engines/internal/app/controllers/jets/health_controller.rb +55 -0
- data/engines/internal/app/controllers/jets/info_controller.rb +45 -0
- data/{lib/jets → engines}/internal/app/controllers/jets/mailers_controller.rb +12 -14
- data/{lib/jets → engines}/internal/app/controllers/jets/mount_controller.rb +6 -10
- data/{lib/jets → engines}/internal/app/controllers/jets/public_controller.rb +6 -2
- data/engines/internal/app/controllers/jets/welcome_controller.rb +9 -0
- data/engines/internal/app/functions/jets/base_path.rb +109 -0
- data/engines/internal/app/functions/jets/base_path_mapping.rb +191 -0
- data/engines/internal/app/jobs/jets/preheat_job.rb +67 -0
- data/engines/internal/app/views/jets/info/properties.html.erb +1 -0
- data/engines/internal/app/views/jets/info/routes.html.erb +10 -0
- data/{lib/jets → engines}/internal/app/views/jets/mailers/email.html.erb +37 -17
- data/engines/internal/app/views/jets/mailers/index.html.erb +8 -0
- data/engines/internal/app/views/jets/mailers/mailer.html.erb +6 -0
- data/{lib/jets/commands/templates/skeleton/public/index.html.tt → engines/internal/app/views/jets/welcome/index.html.erb} +8 -4
- data/engines/internal/app/views/layouts/application.html.erb +51 -0
- data/engines/internal/lib/internal/actiondispatch.rb +39 -0
- data/engines/internal/lib/internal/actionmailer.rb +51 -0
- data/engines/internal/lib/internal/actionview.rb +152 -0
- data/engines/internal/lib/internal/activerecord.rb +37 -0
- data/engines/internal/lib/internal/activesupport.rb +47 -0
- data/engines/internal/lib/internal/engine.rb +13 -0
- data/engines/internal/lib/internal/i18n_engine.rb +19 -0
- data/engines/internal/lib/internal/jets_controller.rb +46 -0
- data/engines/internal/lib/internal/overrides/debug_exceptions.rb +40 -0
- data/engines/internal/lib/internal/templates/rescues/_trace.html.erb +62 -0
- data/engines/internal/lib/internal/templates/rescues/_trace.text.erb +9 -0
- data/engines/internal/lib/internal/turbines/asset_tag_helper.rb +70 -0
- data/engines/internal/lib/internal/turbines/helpers.rb +18 -0
- data/engines/internal/lib/internal/turbines/routes_helpers.rb +42 -0
- data/exe/jets +1 -10
- data/jets.gemspec +16 -13
- data/lib/jets/app_loader.rb +77 -0
- data/lib/jets/application/bootstrap.rb +100 -0
- data/lib/jets/application/configuration/defaults.rb +256 -0
- data/lib/jets/application/configuration.rb +494 -0
- data/lib/jets/application/default_middleware_stack.rb +140 -0
- data/lib/jets/application/dummy_erb_compiler.rb +18 -0
- data/lib/jets/application/finisher.rb +266 -0
- data/lib/jets/application/routes_reloader.rb +80 -0
- data/lib/jets/application.rb +515 -199
- data/lib/jets/authorizer/base.rb +1 -0
- data/lib/jets/authorizer/dsl.rb +15 -11
- data/lib/jets/authorizer/helpers/iam_helper.rb +13 -11
- data/lib/jets/autoloaders/gem.rb +70 -0
- data/lib/jets/autoloaders/inflector.rb +21 -0
- data/lib/jets/autoloaders.rb +38 -101
- data/lib/jets/aws_info.rb +2 -2
- data/lib/jets/aws_services/stack_status.rb +1 -1
- data/lib/jets/aws_services.rb +8 -0
- data/lib/jets/backtrace_cleaner.rb +27 -0
- data/lib/jets/booter.rb +30 -118
- data/lib/jets/builders/code_builder.rb +64 -122
- data/lib/jets/builders/code_size.rb +1 -0
- data/lib/jets/builders/gem_replacer.rb +6 -12
- data/lib/jets/builders/handler_generator.rb +34 -14
- data/lib/jets/builders/lambda_layer.rb +2 -7
- data/lib/jets/builders/purger.rb +1 -1
- data/lib/jets/builders/rack_packager.rb +1 -1
- data/lib/jets/builders/ruby_packager.rb +54 -10
- data/lib/jets/builders/shim_vars/app.rb +10 -6
- data/lib/jets/builders/templates/handlers/one_lambda_for_all_controllers.rb +33 -0
- data/lib/jets/builders/templates/handlers/one_lambda_per_controller.rb +20 -0
- data/lib/jets/builders/templates/{handler.rb → handlers/one_lambda_per_method.rb} +6 -0
- data/lib/jets/bundle.rb +2 -9
- data/lib/jets/cfn/base.rb +82 -0
- data/lib/jets/cfn/builder/api/base.rb +12 -0
- data/lib/jets/cfn/{builders/api_deployment_builder.rb → builder/api/deployment.rb} +11 -21
- data/lib/jets/cfn/builder/api/gateway.rb +104 -0
- data/lib/jets/cfn/builder/api/mapping.rb +54 -0
- data/lib/jets/cfn/builder/api/methods.rb +72 -0
- data/lib/jets/cfn/builder/api/paged.rb +30 -0
- data/lib/jets/cfn/builder/api/pages/base.rb +105 -0
- data/lib/jets/cfn/builder/api/pages/methods.rb +17 -0
- data/lib/jets/cfn/builder/api/pages/page.rb +19 -0
- data/lib/jets/cfn/builder/api/pages/resources.rb +21 -0
- data/lib/jets/cfn/builder/api/resources.rb +40 -0
- data/lib/jets/cfn/{builders/authorizer_builder.rb → builder/authorizer.rb} +16 -19
- data/lib/jets/cfn/builder/controller.rb +28 -0
- data/lib/jets/cfn/builder/function.rb +9 -0
- data/lib/jets/cfn/builder/interface.rb +146 -0
- data/lib/jets/cfn/builder/job.rb +10 -0
- data/lib/jets/cfn/builder/nested.rb +130 -0
- data/lib/jets/cfn/builder/one_controller.rb +53 -0
- data/lib/jets/cfn/{builders/parent_builder → builder/parent}/stagger.rb +1 -1
- data/lib/jets/cfn/builder/parent.rb +149 -0
- data/lib/jets/cfn/builder/post_process.rb +25 -0
- data/lib/jets/cfn/{builders/rule_builder.rb → builder/rule.rb} +4 -8
- data/lib/jets/cfn/{builders/shared_builder.rb → builder/shared.rb} +5 -4
- data/lib/jets/cfn/{builders → builder}/util/source.rb +1 -1
- data/lib/jets/{commands/build.rb → cfn/builder.rb} +50 -78
- data/lib/jets/cfn/deployment.rb +45 -0
- data/lib/jets/cfn/download.rb +39 -0
- data/lib/jets/cfn/params/api/base.rb +39 -0
- data/lib/jets/cfn/params/api/cors.rb +10 -0
- data/lib/jets/cfn/params/api/methods.rb +69 -0
- data/lib/jets/cfn/params/api/resources.rb +28 -0
- data/lib/jets/{resource/child_stack/common_parameters.rb → cfn/params/common.rb} +3 -3
- data/lib/jets/{resource → cfn/resource}/api_gateway/authorizer.rb +21 -21
- data/lib/jets/cfn/resource/api_gateway/base_path/function.rb +57 -0
- data/lib/jets/{resource → cfn/resource}/api_gateway/base_path/mapping.rb +13 -12
- data/lib/jets/cfn/resource/api_gateway/base_path/role.rb +70 -0
- data/lib/jets/{resource → cfn/resource}/api_gateway/deployment.rb +13 -20
- data/lib/jets/{resource → cfn/resource}/api_gateway/domain_name.rb +11 -11
- data/lib/jets/{resource → cfn/resource}/api_gateway/method/authorization.rb +1 -1
- data/lib/jets/cfn/resource/api_gateway/method.rb +92 -0
- data/lib/jets/{resource → cfn/resource}/api_gateway/resource.rb +14 -10
- data/lib/jets/cfn/resource/api_gateway/resource_id.rb +25 -0
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/change_detection.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id/message.rb +14 -4
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id.rb +2 -2
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/base.rb +15 -41
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/media_types.rb +3 -3
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/page.rb +6 -6
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/to.rb +8 -3
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/variable.rb +2 -2
- data/lib/jets/cfn/resource/api_gateway/rest_api/routes/change.rb +27 -0
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision/variable_exception.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/collision.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api.rb +22 -12
- data/lib/jets/{resource → cfn/resource}/associated.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/config/config_rule.rb +18 -18
- data/lib/jets/{resource → cfn/resource}/config/managed_rule.rb +5 -5
- data/lib/jets/{resource → cfn/resource}/events/rule.rb +10 -10
- data/lib/jets/{resource → cfn/resource}/iam/application_role.rb +4 -4
- data/lib/jets/cfn/resource/iam/base_role_definition.rb +56 -0
- data/lib/jets/{resource → cfn/resource}/iam/class_role.rb +5 -5
- data/lib/jets/{resource → cfn/resource}/iam/function_role.rb +6 -6
- data/lib/jets/{resource → cfn/resource}/iam/managed_policy.rb +1 -1
- data/lib/jets/cfn/resource/iam/policy.rb +31 -0
- data/lib/jets/{resource → cfn/resource}/iam/policy_document.rb +10 -9
- data/lib/jets/{resource → cfn/resource}/iot/topic_rule.rb +10 -10
- data/lib/jets/{resource → cfn/resource}/lambda/event_source_mapping.rb +9 -9
- data/lib/jets/cfn/resource/lambda/function/controller.rb +21 -0
- data/lib/jets/{resource → cfn/resource}/lambda/function/environment.rb +9 -7
- data/lib/jets/cfn/resource/lambda/function.rb +266 -0
- data/lib/jets/{resource → cfn/resource}/lambda/gem_layer.rb +2 -2
- data/lib/jets/{resource → cfn/resource}/lambda/layer_version.rb +10 -10
- data/lib/jets/cfn/resource/lambda/permission.rb +51 -0
- data/lib/jets/cfn/resource/logs/subscription_filter.rb +31 -0
- data/lib/jets/cfn/resource/nested/api/base.rb +4 -0
- data/lib/jets/cfn/resource/nested/api/deployment.rb +53 -0
- data/lib/jets/cfn/resource/nested/api/gateway.rb +15 -0
- data/lib/jets/cfn/resource/nested/api/mapping.rb +33 -0
- data/lib/jets/cfn/resource/nested/api/methods.rb +30 -0
- data/lib/jets/cfn/resource/nested/api/page.rb +8 -0
- data/lib/jets/cfn/resource/nested/api/resources.rb +22 -0
- data/lib/jets/{resource/child_stack → cfn/resource/nested}/app_class.rb +15 -48
- data/lib/jets/{resource/child_stack → cfn/resource/nested}/authorizer.rb +8 -14
- data/lib/jets/cfn/resource/nested/base.rb +38 -0
- data/lib/jets/cfn/resource/nested/one_controller.rb +48 -0
- data/lib/jets/{resource/child_stack → cfn/resource/nested}/shared.rb +10 -16
- data/lib/jets/cfn/resource/one/function.rb +66 -0
- data/lib/jets/cfn/resource/one/permission.rb +17 -0
- data/lib/jets/{resource → cfn/resource}/replacer.rb +26 -27
- data/lib/jets/{resource → cfn/resource}/route53/record_set.rb +18 -18
- data/lib/jets/{resource → cfn/resource}/s3/bucket.rb +4 -4
- data/lib/jets/cfn/resource/s3/jets_bucket.rb +68 -0
- data/lib/jets/{resource → cfn/resource}/sns/subscription.rb +8 -8
- data/lib/jets/{resource → cfn/resource}/sns/topic.rb +10 -10
- data/lib/jets/{resource → cfn/resource}/sns/topic_policy.rb +13 -13
- data/lib/jets/{resource → cfn/resource}/sqs/queue.rb +5 -5
- data/lib/jets/{resource → cfn/resource}/standardizer.rb +8 -9
- data/lib/jets/cfn/resource.rb +8 -0
- data/lib/jets/cfn/ship.rb +30 -16
- data/lib/jets/cfn/status.rb +1 -1
- data/lib/jets/cfn/template.rb +89 -0
- data/lib/jets/cfn/upload.rb +26 -23
- data/lib/jets/cli.rb +28 -203
- data/lib/jets/command/actions.rb +49 -0
- data/lib/jets/command/api_helpers.rb +41 -0
- data/lib/jets/command/aws_helpers.rb +26 -0
- data/lib/jets/command/base.rb +204 -0
- data/lib/jets/command/behavior.rb +83 -0
- data/lib/jets/command/environment_argument.rb +42 -0
- data/lib/jets/command/help/call.md +48 -0
- data/lib/jets/{commands → command}/help/deploy.md +1 -1
- data/lib/jets/command/help/logs.md +21 -0
- data/lib/jets/{commands → command}/help/new.md +3 -4
- data/lib/jets/command/help/projects.md +6 -0
- data/lib/jets/command/help/releases.md +37 -0
- data/lib/jets/command/help/rollback.md +5 -0
- data/lib/jets/command/help/routes.md +15 -0
- data/lib/jets/command/help/runner.md +40 -0
- data/lib/jets/command/help/stacks.md +6 -0
- data/lib/jets/command/help.rb +17 -0
- data/lib/jets/command/helpers/editor.rb +35 -0
- data/lib/jets/command.rb +133 -0
- data/lib/jets/commands/application/application_command.rb +40 -0
- data/lib/jets/commands/build/build_command.rb +33 -0
- data/lib/jets/commands/call/anonymous_guesser.rb +1 -1
- data/lib/jets/commands/call/autoload_guesser.rb +2 -2
- data/lib/jets/commands/call/base_guesser.rb +5 -5
- data/lib/jets/commands/call/call_command.rb +27 -0
- data/lib/jets/commands/call/caller.rb +184 -0
- data/lib/jets/commands/call/guesser.rb +1 -1
- data/lib/jets/commands/clean/base.rb +1 -1
- data/lib/jets/commands/clean/build.rb +1 -1
- data/lib/jets/commands/clean/clean_command.rb +15 -0
- data/lib/jets/commands/clean/log.rb +4 -4
- data/lib/jets/commands/configure/configure_command.rb +9 -0
- data/lib/jets/commands/console/console_command.rb +38 -0
- data/lib/jets/commands/credentials/USAGE +103 -0
- data/lib/jets/commands/credentials/credentials_command/diffing.rb +51 -0
- data/lib/jets/commands/credentials/credentials_command.rb +139 -0
- data/lib/jets/commands/db/system/change/change_command.rb +24 -0
- data/lib/jets/commands/dbconsole/dbconsole_command.rb +184 -0
- data/lib/jets/commands/degenerate/degenerate_command.rb +21 -0
- data/lib/jets/commands/delete/delete_command.rb +155 -0
- data/lib/jets/commands/{deploy.rb → deploy/deploy_command.rb} +30 -49
- data/lib/jets/commands/dev/dev_command.rb +19 -0
- data/lib/jets/commands/{dotenv.rb → dotenv/dotenv_command.rb} +2 -2
- data/lib/jets/commands/encrypted/USAGE +46 -0
- data/lib/jets/commands/encrypted/encrypted_command.rb +87 -0
- data/lib/jets/commands/gems/gems_command.rb +14 -0
- data/lib/jets/commands/generate/generate_command.rb +95 -0
- data/lib/jets/commands/help/USAGE +20 -0
- data/lib/jets/commands/help/help_command.rb +15 -0
- data/lib/jets/commands/initializers/initializers_command.rb +19 -0
- data/lib/jets/commands/logs/logs_command.rb +45 -0
- data/lib/jets/commands/new/new_command.rb +19 -0
- data/lib/jets/commands/notes/notes_command.rb +30 -0
- data/lib/jets/commands/plugin/plugin_command.rb +45 -0
- data/lib/jets/commands/projects/projects_command.rb +30 -0
- data/lib/jets/commands/rake/rake_command.rb +59 -0
- data/lib/jets/commands/releases/releases_command.rb +72 -0
- data/lib/jets/commands/rollback/rollback_command.rb +41 -0
- data/lib/jets/commands/routes/routes_command.rb +19 -0
- data/lib/jets/commands/runner/runner_command.rb +60 -0
- data/lib/jets/commands/server/server_command.rb +291 -0
- data/lib/jets/commands/stacks/stacks_command.rb +39 -0
- data/lib/jets/commands/status/status_command.rb +9 -0
- data/lib/jets/commands/url/url_command.rb +92 -0
- data/lib/jets/commands/version/version_command.rb +11 -0
- data/lib/jets/commands.rb +17 -0
- data/lib/jets/configuration.rb +166 -0
- data/lib/jets/controller/base.rb +105 -183
- data/lib/jets/controller/compat/abstract_controller/base.rb +126 -0
- data/lib/jets/controller/compat/action_controller/metal.rb +99 -0
- data/lib/jets/controller/compat/caching.rb +13 -0
- data/lib/jets/controller/compat/future.rb +13 -0
- data/lib/jets/controller/compat/route_set.rb +47 -0
- data/lib/jets/controller/decorate/apigw_stage.rb +39 -0
- data/lib/jets/controller/{authorization.rb → decorate/authorization.rb} +1 -1
- data/lib/jets/controller/decorate/logging.rb +90 -0
- data/lib/jets/controller/decorate/redirecting.rb +16 -0
- data/lib/jets/controller/decorate/url_for.rb +10 -0
- data/lib/jets/controller/{rack/adapter.rb → handler/apigw.rb} +36 -37
- data/lib/jets/controller/handler.rb +41 -0
- data/lib/jets/controller/middleware/main.rb +16 -8
- data/lib/jets/controller/middleware/{local/api_gateway.rb → mimic/apigw.rb} +41 -4
- data/lib/jets/controller/middleware/mimic/lambda_context.rb +44 -0
- data/lib/jets/controller/middleware/{local.rb → mimic.rb} +36 -51
- data/lib/jets/controller/rack_adapter/action.rb +35 -0
- data/lib/jets/controller/{rack → rack_adapter}/env.rb +39 -18
- data/lib/jets/controller/request/compat/params.rb +144 -0
- data/lib/jets/controller/request/compat/request.rb +125 -0
- data/lib/jets/controller/request.rb +35 -18
- data/lib/jets/controller/response/compat/response.rb +67 -0
- data/lib/jets/controller/response.rb +91 -8
- data/lib/jets/core.rb +153 -50
- data/lib/jets/core_ext/file.rb +9 -0
- data/lib/jets/core_ext/kernel.rb +2 -2
- data/lib/jets/core_ext/symbol.rb +5 -0
- data/lib/jets/core_ext.rb +4 -0
- data/lib/jets/dev_caching.rb +44 -0
- data/lib/jets/dotenv/ssm.rb +5 -2
- data/lib/jets/dotenv.rb +4 -3
- data/lib/jets/engine/configuration.rb +96 -0
- data/lib/jets/engine/turbines.rb +23 -0
- data/lib/jets/engine.rb +380 -0
- data/lib/jets/erb.rb +1 -1
- data/lib/jets/exception_reporting.rb +43 -0
- data/lib/jets/generators/job/job_generator.rb +41 -0
- data/lib/jets/generators/job/templates/event_types/dynamodb.rb.tt +8 -0
- data/lib/jets/generators/job/templates/event_types/iot.rb.tt +8 -0
- data/lib/jets/generators/job/templates/event_types/kinesis.rb.tt +9 -0
- data/lib/jets/generators/job/templates/event_types/log.rb.tt +9 -0
- data/lib/jets/generators/job/templates/event_types/rule.rb.tt +23 -0
- data/lib/jets/generators/job/templates/event_types/s3.rb.tt +11 -0
- data/lib/jets/{generator/templates/active_job/job/templates/job.rb.tt → generators/job/templates/event_types/scheduled.rb.tt} +3 -3
- data/lib/jets/generators/job/templates/event_types/sns.rb.tt +9 -0
- data/lib/jets/generators/job/templates/event_types/sqs.rb.tt +9 -0
- data/lib/jets/generators/overrides/app/USAGE +38 -0
- data/lib/jets/generators/overrides/app/app_generator.rb +148 -0
- data/lib/jets/generators/overrides/app/helpers.rb +139 -0
- data/lib/jets/generators/overrides/app/templates/.env +10 -0
- data/lib/jets/{commands/templates/skeleton/.gitignore → generators/overrides/app/templates/.gitignore.tt} +2 -1
- data/lib/jets/generators/overrides/app/templates/Gemfile.tt +25 -0
- data/lib/jets/generators/overrides/app/templates/Rakefile +2 -0
- data/lib/jets/generators/overrides/app/templates/app/assets/config/manifest.js +3 -0
- data/lib/jets/generators/overrides/app/templates/app/assets/stylesheets/application.css +15 -0
- data/lib/jets/generators/overrides/app/templates/app/javascript/application.js +5 -0
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/models/application_record.rb +1 -1
- data/lib/jets/generators/overrides/app/templates/app/views/layouts/application.html.erb.tt +30 -0
- data/lib/jets/generators/overrides/app/templates/bin/jets +3 -0
- data/lib/jets/generators/overrides/app/templates/config/application.rb.tt +15 -0
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/database.yml.tt +1 -1
- data/lib/jets/generators/overrides/app/templates/config/environments/development.rb.tt +29 -0
- data/lib/jets/generators/overrides/app/templates/config/environments/production.rb.tt +19 -0
- data/lib/jets/generators/overrides/app/templates/config/environments/test.rb.tt +23 -0
- data/lib/jets/generators/overrides/app/templates/config/initializers/content_security_policy.rb +31 -0
- data/lib/jets/generators/overrides/app/templates/config/initializers/filter_parameter_logging.rb +8 -0
- data/lib/jets/generators/overrides/app/templates/config/initializers/permissions_policy.rb +11 -0
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config/routes.rb +5 -1
- data/lib/jets/generators/overrides/app/templates/db/.gitkeep +0 -0
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/404.html +6 -6
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/422.html +6 -6
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/500.html +6 -6
- data/lib/jets/generators/overrides/templates/erb/scaffold/index.html.erb +22 -0
- data/lib/jets/generators/overrides/templates/erb/scaffold/partial.html.erb +8 -0
- data/lib/jets/{generator/templates/rails/scaffold_controller/api_controller.rb → generators/overrides/templates/rails/scaffold_controller/api_controller.rb.tt} +5 -9
- data/lib/jets/generators/overrides/templates/rails/scaffold_controller/controller.rb.tt +67 -0
- data/lib/jets/generators.rb +112 -0
- data/lib/jets/inflections.rb +1 -1
- data/lib/jets/info.rb +116 -0
- data/lib/jets/initializable.rb +95 -0
- data/lib/jets/job/base.rb +5 -2
- data/lib/jets/job/dsl/dynamodb_event.rb +19 -9
- data/lib/jets/job/dsl/event_source_mapping.rb +1 -1
- data/lib/jets/job/dsl/iot_event.rb +6 -6
- data/lib/jets/job/dsl/kinesis_event.rb +5 -5
- data/lib/jets/job/dsl/log_event.rb +2 -2
- data/lib/jets/job/dsl/rule_event.rb +7 -4
- data/lib/jets/job/dsl/s3_event.rb +1 -1
- data/lib/jets/job/dsl/sns_event.rb +6 -6
- data/lib/jets/job/dsl/sqs_event.rb +11 -11
- data/lib/jets/job/helpers/sns_event_helper.rb +8 -0
- data/lib/jets/job/helpers/sqs_event_helper.rb +8 -0
- data/lib/jets/klass.rb +5 -6
- data/lib/jets/lambda/definition.rb +118 -0
- data/lib/jets/lambda/dsl/warnings.rb +57 -0
- data/lib/jets/lambda/dsl.rb +73 -54
- data/lib/jets/lambda/function.rb +3 -3
- data/lib/jets/lambda/function_constructor.rb +6 -6
- data/lib/jets/lambda/functions.rb +36 -1
- data/lib/jets/mega/hash_converter.rb +2 -2
- data/lib/jets/mega/request/source.rb +1 -2
- data/lib/jets/mega/request.rb +4 -4
- data/lib/jets/names.rb +79 -0
- data/lib/jets/overrides/dummy/rails.rb +11 -0
- data/lib/jets/overrides/lambda/marshaller.rb +10 -0
- data/lib/jets/overrides/puma.rb +10 -0
- data/lib/jets/paths.rb +243 -0
- data/lib/jets/{poly_fun → poly}/base_executor.rb +13 -13
- data/lib/jets/{poly_fun → poly}/lambda_executor.rb +2 -2
- data/lib/jets/{poly_fun → poly}/node_error.rb +1 -1
- data/lib/jets/{poly_fun → poly}/node_executor.rb +4 -4
- data/lib/jets/{poly_fun → poly}/python_error.rb +1 -1
- data/lib/jets/{poly_fun → poly}/python_executor.rb +2 -2
- data/lib/jets/{poly_fun.rb → poly.rb} +12 -12
- data/lib/jets/preheat.rb +26 -33
- data/lib/jets/processors/deducer.rb +2 -2
- data/lib/jets/processors/main_processor.rb +6 -13
- data/lib/jets/rack/logger.rb +77 -0
- data/lib/jets/router/compat/route_set.rb +177 -0
- data/lib/jets/router/dsl/mount.rb +40 -6
- data/lib/jets/router/dsl.rb +125 -105
- data/lib/jets/router/engine_mount.rb +36 -0
- data/lib/jets/router/help.rb +130 -0
- data/lib/jets/router/helpers/named_routes/add_full_url.rb +13 -0
- data/lib/jets/router/helpers/named_routes/generated.rb +197 -0
- data/lib/jets/router/helpers/named_routes/proxy.rb +66 -0
- data/lib/jets/router/matcher.rb +140 -17
- data/lib/jets/router/resources/options.rb +6 -4
- data/lib/jets/router/route/after_initialize.rb +64 -0
- data/lib/jets/router/route/as.rb +93 -0
- data/lib/jets/router/route/authorizer.rb +1 -0
- data/lib/jets/router/route/compat.rb +45 -0
- data/lib/jets/router/route/info.rb +74 -0
- data/lib/jets/router/route/node.rb +137 -0
- data/lib/jets/router/route/path.rb +93 -0
- data/lib/jets/router/route.rb +109 -90
- data/lib/jets/router/route_set.rb +214 -0
- data/lib/jets/router/scope.rb +204 -69
- data/lib/jets/router/state.rb +67 -0
- data/lib/jets/router/util.rb +1 -31
- data/lib/jets/router.rb +64 -150
- data/lib/jets/ruby_version_check.rb +15 -0
- data/lib/jets/rule/base.rb +1 -0
- data/lib/jets/rule/dsl.rb +7 -7
- data/lib/jets/secrets.rb +110 -0
- data/lib/jets/spec_helpers/controllers/request.rb +22 -16
- data/lib/jets/spec_helpers/controllers.rb +32 -24
- data/lib/jets/spec_helpers.rb +0 -6
- data/lib/jets/stack/builder.rb +3 -2
- data/lib/jets/stack/definition.rb +1 -4
- data/lib/jets/stack/function.rb +2 -2
- data/lib/jets/stack/main/dsl/cloudwatch.rb +4 -4
- data/lib/jets/stack/main/dsl/kinesis.rb +2 -2
- data/lib/jets/stack/main/dsl/lambda.rb +26 -19
- data/lib/jets/stack/main/dsl/sqs.rb +2 -2
- data/lib/jets/stack/output/lookup.rb +1 -1
- data/lib/jets/stack/output.rb +2 -2
- data/lib/jets/stack/parameter.rb +2 -2
- data/lib/jets/stack/resource.rb +3 -3
- data/lib/jets/stack/s3_event.rb +51 -37
- data/lib/jets/stack.rb +1 -1
- data/lib/jets/tasks/engine.rake +85 -0
- data/lib/jets/tasks/framework.rake +66 -0
- data/lib/jets/tasks/log.rake +41 -0
- data/lib/jets/tasks/middleware.rake +9 -0
- data/lib/jets/tasks/misc.rake +81 -0
- data/lib/jets/tasks/statistics.rake +37 -0
- data/lib/jets/tasks/tmp.rake +51 -0
- data/lib/jets/tasks/yarn.rake +29 -0
- data/lib/jets/tasks/zeitwerk.rake +61 -0
- data/lib/jets/tasks.rb +18 -0
- data/lib/jets/tmp_loader.rb +1 -1
- data/lib/jets/turbine/configurable.rb +36 -0
- data/lib/jets/turbine/configuration.rb +101 -0
- data/lib/jets/turbine.rb +164 -20
- data/lib/jets/util/camelize.rb +24 -0
- data/lib/jets/util/yamler.rb +16 -0
- data/lib/jets/version.rb +1 -1
- data/lib/jets.rb +8 -14
- metadata +444 -347
- data/.python-version +0 -1
- data/.ruby-version +0 -1
- data/bin/release +0 -9
- data/lib/jets/application/defaults.rb +0 -200
- data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +0 -16
- data/lib/jets/builders/reconfigure_rails.rb +0 -114
- data/lib/jets/cfn/builders/api_gateway_builder.rb +0 -123
- data/lib/jets/cfn/builders/api_resources_builder.rb +0 -44
- data/lib/jets/cfn/builders/base_child_builder.rb +0 -69
- data/lib/jets/cfn/builders/controller_builder.rb +0 -50
- data/lib/jets/cfn/builders/function_builder.rb +0 -14
- data/lib/jets/cfn/builders/interface.rb +0 -133
- data/lib/jets/cfn/builders/job_builder.rb +0 -14
- data/lib/jets/cfn/builders/parent_builder.rb +0 -130
- data/lib/jets/cfn/built_template.rb +0 -15
- data/lib/jets/cfn/template_source.rb +0 -61
- data/lib/jets/commands/base.rb +0 -145
- data/lib/jets/commands/call.rb +0 -182
- data/lib/jets/commands/clean.rb +0 -19
- data/lib/jets/commands/configure.rb +0 -51
- data/lib/jets/commands/console.rb +0 -12
- data/lib/jets/commands/db/environment-task.rake +0 -3
- data/lib/jets/commands/db/tasks/dummy/app.rb +0 -25
- data/lib/jets/commands/db/tasks/dummy/config.rb +0 -14
- data/lib/jets/commands/db/tasks.rb +0 -34
- data/lib/jets/commands/db.rb +0 -13
- data/lib/jets/commands/dbconsole.rb +0 -134
- data/lib/jets/commands/delete.rb +0 -136
- data/lib/jets/commands/dynamodb/migrate.rb +0 -9
- data/lib/jets/commands/dynamodb/migrator.rb +0 -36
- data/lib/jets/commands/dynamodb.rb +0 -19
- data/lib/jets/commands/gems.rb +0 -13
- data/lib/jets/commands/help/call.md +0 -69
- data/lib/jets/commands/help/dynamodb/generate.md +0 -52
- data/lib/jets/commands/help/dynamodb/migrate.md +0 -4
- data/lib/jets/commands/help/routes.md +0 -16
- data/lib/jets/commands/help/runner.md +0 -17
- data/lib/jets/commands/help.rb +0 -9
- data/lib/jets/commands/import/base.rb +0 -49
- data/lib/jets/commands/import/cheatsheet.rb +0 -35
- data/lib/jets/commands/import/rack.rb +0 -16
- data/lib/jets/commands/import/rails.rb +0 -74
- data/lib/jets/commands/import/sequence.rb +0 -90
- data/lib/jets/commands/import/templates/config/database.yml +0 -30
- data/lib/jets/commands/import/templates/submodules-cheatsheet.md +0 -89
- data/lib/jets/commands/import.rb +0 -12
- data/lib/jets/commands/main.rb +0 -166
- data/lib/jets/commands/markdown/creator.rb +0 -58
- data/lib/jets/commands/markdown/index.rb +0 -27
- data/lib/jets/commands/markdown/page.rb +0 -125
- data/lib/jets/commands/markdown/shell.rb +0 -11
- data/lib/jets/commands/new.rb +0 -173
- data/lib/jets/commands/rake_command.rb +0 -61
- data/lib/jets/commands/rake_tasks.rb +0 -50
- data/lib/jets/commands/runner.rb +0 -16
- data/lib/jets/commands/sequence.rb +0 -105
- data/lib/jets/commands/stack_info.rb +0 -30
- data/lib/jets/commands/templates/skeleton/.env.development.tt +0 -3
- data/lib/jets/commands/templates/skeleton/.env.test +0 -3
- data/lib/jets/commands/templates/skeleton/.env.tt +0 -3
- data/lib/jets/commands/templates/skeleton/.jetskeep +0 -1
- data/lib/jets/commands/templates/skeleton/Gemfile.tt +0 -40
- data/lib/jets/commands/templates/skeleton/Procfile +0 -7
- data/lib/jets/commands/templates/skeleton/Rakefile +0 -2
- data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +0 -2
- data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +0 -26
- data/lib/jets/commands/templates/skeleton/config/application.rb.tt +0 -71
- data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +0 -22
- data/lib/jets/commands/templates/skeleton/config/environments/development.rb +0 -7
- data/lib/jets/commands/templates/skeleton/config/environments/production.rb +0 -9
- data/lib/jets/commands/templates/skeleton/config/environments/test.rb +0 -7
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +0 -23
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +0 -24
- data/lib/jets/commands/upgrade/templates/bin/webpack +0 -19
- data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +0 -19
- data/lib/jets/commands/upgrade/version1.rb +0 -136
- data/lib/jets/commands/upgrade.rb +0 -105
- data/lib/jets/commands/url.rb +0 -69
- data/lib/jets/commands/webpacker_template.rb +0 -18
- data/lib/jets/controller/callbacks.rb +0 -73
- data/lib/jets/controller/cookies/jar.rb +0 -269
- data/lib/jets/controller/cookies.rb +0 -38
- data/lib/jets/controller/error/invalid_authenticity_token.rb +0 -6
- data/lib/jets/controller/error.rb +0 -4
- data/lib/jets/controller/forgery_protection.rb +0 -43
- data/lib/jets/controller/layout.rb +0 -17
- data/lib/jets/controller/middleware/cors.rb +0 -60
- data/lib/jets/controller/middleware/local/mimic_aws_call.rb +0 -38
- data/lib/jets/controller/middleware/local/route_matcher.rb +0 -22
- data/lib/jets/controller/middleware/reloader.rb +0 -15
- data/lib/jets/controller/parameters_filter.rb +0 -29
- data/lib/jets/controller/params.rb +0 -117
- data/lib/jets/controller/redirection.rb +0 -61
- data/lib/jets/controller/rendering/rack_renderer.rb +0 -267
- data/lib/jets/controller/rendering.rb +0 -96
- data/lib/jets/controller/stage.rb +0 -34
- data/lib/jets/controller.rb +0 -3
- data/lib/jets/db.rb +0 -15
- data/lib/jets/generator/templates/erb/controller/view.html.erb +0 -2
- data/lib/jets/generator/templates/erb/scaffold/index.html.erb +0 -29
- data/lib/jets/generator/templates/rails/controller/controller.rb +0 -13
- data/lib/jets/generator/templates/rails/helper/helper.rb +0 -4
- data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +0 -67
- data/lib/jets/generator.rb +0 -112
- data/lib/jets/internal/app/controllers/jets/bare_controller.rb +0 -16
- data/lib/jets/internal/app/controllers/jets/rack_controller.rb +0 -12
- data/lib/jets/internal/app/functions/jets/base_path.rb +0 -18
- data/lib/jets/internal/app/functions/jets/base_path_mapping.rb +0 -100
- data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +0 -9
- data/lib/jets/internal/app/jobs/jets/preheat_job.rb +0 -70
- data/lib/jets/internal/app/views/jets/mailers/index.html.erb +0 -8
- data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +0 -6
- data/lib/jets/internal/turbines/jets/mailer.rb +0 -52
- data/lib/jets/lambda/task.rb +0 -111
- data/lib/jets/logger.rb +0 -21
- data/lib/jets/middleware/configurator.rb +0 -84
- data/lib/jets/middleware/default_stack.rb +0 -53
- data/lib/jets/middleware/layer.rb +0 -34
- data/lib/jets/middleware/stack.rb +0 -77
- data/lib/jets/middleware.rb +0 -33
- data/lib/jets/naming.rb +0 -63
- data/lib/jets/overrides/rails/action_controller.rb +0 -13
- data/lib/jets/overrides/rails/asset_tag_helper.rb +0 -114
- data/lib/jets/overrides/rails/common_methods.rb +0 -13
- data/lib/jets/overrides/rails/migration_checker.rb +0 -34
- data/lib/jets/overrides/rails/rendering_helper.rb +0 -27
- data/lib/jets/overrides/rails/url_helper.rb +0 -88
- data/lib/jets/overrides/rails.rb +0 -6
- data/lib/jets/rack_server.rb +0 -86
- data/lib/jets/resource/api_gateway/base_path/function.rb +0 -49
- data/lib/jets/resource/api_gateway/base_path/role.rb +0 -76
- data/lib/jets/resource/api_gateway/cors.rb +0 -61
- data/lib/jets/resource/api_gateway/method.rb +0 -102
- data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +0 -16
- data/lib/jets/resource/base.rb +0 -28
- data/lib/jets/resource/child_stack/api_deployment.rb +0 -58
- data/lib/jets/resource/child_stack/api_gateway.rb +0 -23
- data/lib/jets/resource/child_stack/api_resource/page.rb +0 -20
- data/lib/jets/resource/child_stack/api_resource.rb +0 -54
- data/lib/jets/resource/child_stack/base.rb +0 -24
- data/lib/jets/resource/iam/base_role_definition.rb +0 -47
- data/lib/jets/resource/lambda/function.rb +0 -221
- data/lib/jets/resource/logs/subscription_filter.rb +0 -31
- data/lib/jets/resource/permission.rb +0 -45
- data/lib/jets/resource.rb +0 -71
- data/lib/jets/router/error.rb +0 -4
- data/lib/jets/router/finder.rb +0 -47
- data/lib/jets/router/helpers/core_helper.rb +0 -27
- data/lib/jets/router/helpers/named_routes_helper.rb +0 -8
- data/lib/jets/router/helpers.rb +0 -4
- data/lib/jets/router/method_creator/code.rb +0 -99
- data/lib/jets/router/method_creator/edit.rb +0 -12
- data/lib/jets/router/method_creator/generic.rb +0 -11
- data/lib/jets/router/method_creator/index.rb +0 -48
- data/lib/jets/router/method_creator/new.rb +0 -12
- data/lib/jets/router/method_creator/root.rb +0 -15
- data/lib/jets/router/method_creator/show.rb +0 -12
- data/lib/jets/router/method_creator.rb +0 -50
- data/lib/jets/turbo/database_yaml.rb +0 -41
- data/lib/jets/turbo/project/.gitignore +0 -12
- data/lib/jets/turbo/project/.jetskeep +0 -1
- data/lib/jets/turbo/project/Gemfile +0 -16
- data/lib/jets/turbo/project/Rakefile +0 -2
- data/lib/jets/turbo/project/app/controllers/application_controller.rb +0 -2
- data/lib/jets/turbo/project/app/helpers/application_helper.rb +0 -2
- data/lib/jets/turbo/project/app/jobs/application_job.rb +0 -4
- data/lib/jets/turbo/project/config/application.rb +0 -5
- data/lib/jets/turbo/project/config/routes.rb +0 -4
- data/lib/jets/turbo/project/config.ru +0 -5
- data/lib/jets/turbo/rails.rb +0 -127
- data/lib/jets/turbo/templates/config/database.yml +0 -30
- data/lib/jets/turbo.rb +0 -56
- data/readme/prerelease.md +0 -6
- data/readme/testing.md +0 -60
- /data/{lib/jets → engines}/internal/app/shared/functions/jets/s3_bucket_config.rb +0 -0
- /data/lib/jets/{commands → command}/help/build.md +0 -0
- /data/lib/jets/{commands → command}/help/clean/build.md +0 -0
- /data/lib/jets/{commands → command}/help/clean/log.md +0 -0
- /data/lib/jets/{commands → command}/help/console.md +0 -0
- /data/lib/jets/{commands → command}/help/db/generate.md +0 -0
- /data/lib/jets/{commands → command}/help/dbconsole.md +0 -0
- /data/lib/jets/{commands → command}/help/degenerate.md +0 -0
- /data/lib/jets/{commands → command}/help/delete.md +0 -0
- /data/lib/jets/{commands → command}/help/gems/check.md +0 -0
- /data/lib/jets/{commands → command}/help/generate.md +0 -0
- /data/lib/jets/{commands → command}/help/import/rack.md +0 -0
- /data/lib/jets/{commands → command}/help/import/rails.md +0 -0
- /data/lib/jets/{commands → command}/help/server.md +0 -0
- /data/lib/jets/{commands → command}/help/status.md +0 -0
- /data/lib/jets/{commands → command}/help/upgrade.md +0 -0
- /data/lib/jets/{commands → command}/help/url.md +0 -0
- /data/lib/jets/{generator/templates/active_job → generators}/job/templates/application_job.rb.tt +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.rspec +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/README.md +0 -0
- /data/{.gitmodules → lib/jets/generators/overrides/app/templates/app/assets/images/.keep} +0 -0
- /data/lib/jets/{commands/templates/skeleton/db/.gitkeep → generators/overrides/app/templates/app/assets/javascripts/.keep} +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/controllers/application_controller.rb +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/helpers/application_helper.rb +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/app/jobs/application_job.rb +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/config.ru +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/public/favicon.ico +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/controllers/posts_controller_spec.rb +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-index.json +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/fixtures/payloads/posts-show.json +0 -0
- /data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/spec/spec_helper.rb.tt +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/_form.html.erb +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/edit.html.erb +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/new.html.erb +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/erb/scaffold/show.html.erb +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/javascript.js +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/rails/assets/stylesheet.css +0 -0
- /data/lib/jets/{generator → generators/overrides}/templates/rails/scaffold/scaffold.css +0 -0
data/lib/jets/command.rb
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "active_support"
|
|
4
|
+
require "active_support/core_ext/enumerable"
|
|
5
|
+
require "active_support/core_ext/object/blank"
|
|
6
|
+
|
|
7
|
+
require "thor"
|
|
8
|
+
|
|
9
|
+
module Jets
|
|
10
|
+
module Command
|
|
11
|
+
extend ActiveSupport::Autoload
|
|
12
|
+
|
|
13
|
+
autoload :Behavior
|
|
14
|
+
autoload :Base
|
|
15
|
+
|
|
16
|
+
include Behavior
|
|
17
|
+
|
|
18
|
+
HELP_MAPPINGS = %w(-h -? --help)
|
|
19
|
+
|
|
20
|
+
class << self
|
|
21
|
+
def hidden_commands # :nodoc:
|
|
22
|
+
@hidden_commands ||= []
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def environment # :nodoc:
|
|
26
|
+
ENV["JETS_ENV"].presence || ENV["RACK_ENV"].presence || "development"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Receives a namespace, arguments, and the behavior to invoke the command.
|
|
30
|
+
def invoke(full_namespace, args = [], **config)
|
|
31
|
+
namespace = full_namespace = full_namespace.to_s
|
|
32
|
+
|
|
33
|
+
if char = namespace =~ /:(\w+)$/
|
|
34
|
+
command_name, namespace = $1, namespace.slice(0, char)
|
|
35
|
+
else
|
|
36
|
+
command_name = namespace
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
command_name, namespace = "help", "help" if command_name.blank? || HELP_MAPPINGS.include?(command_name)
|
|
40
|
+
command_name, namespace, args = "application", "application", ["--help"] if jets_new_with_no_path?(args)
|
|
41
|
+
command_name, namespace = "version", "version" if %w( -v --version ).include?(command_name)
|
|
42
|
+
|
|
43
|
+
original_argv = ARGV.dup
|
|
44
|
+
ARGV.replace(args)
|
|
45
|
+
|
|
46
|
+
command = find_by_namespace(namespace, command_name)
|
|
47
|
+
if command && command.all_commands[command_name]
|
|
48
|
+
command.perform(full_namespace, command_name, args, config)
|
|
49
|
+
else
|
|
50
|
+
args = ["--describe", full_namespace] if HELP_MAPPINGS.include?(args[0])
|
|
51
|
+
find_by_namespace("rake").perform(full_namespace, args, config)
|
|
52
|
+
end
|
|
53
|
+
ensure
|
|
54
|
+
ARGV.replace(original_argv)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Jets finds namespaces similar to Thor, it only adds one rule:
|
|
58
|
+
#
|
|
59
|
+
# Command names must end with "_command.rb". This is required because Jets
|
|
60
|
+
# looks in load paths and loads the command just before it's going to be used.
|
|
61
|
+
#
|
|
62
|
+
# find_by_namespace :webrat, :integration
|
|
63
|
+
#
|
|
64
|
+
# Will search for the following commands:
|
|
65
|
+
#
|
|
66
|
+
# "webrat", "webrat:integration", "jets:webrat", "jets:webrat:integration"
|
|
67
|
+
#
|
|
68
|
+
def find_by_namespace(namespace, command_name = nil) # :nodoc:
|
|
69
|
+
lookups = [ namespace ]
|
|
70
|
+
lookups << "#{namespace}:#{command_name}" if command_name
|
|
71
|
+
lookups.concat lookups.map { |lookup| "jets:#{lookup}" }
|
|
72
|
+
|
|
73
|
+
lookup(lookups)
|
|
74
|
+
|
|
75
|
+
namespaces = subclasses.index_by(&:namespace)
|
|
76
|
+
namespaces[(lookups & namespaces.keys).first]
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Returns the root of the Jets engine or app running the command.
|
|
80
|
+
def root
|
|
81
|
+
if defined?(ENGINE_ROOT)
|
|
82
|
+
Pathname.new(ENGINE_ROOT)
|
|
83
|
+
elsif defined?(APP_PATH)
|
|
84
|
+
Pathname.new(File.expand_path("../..", APP_PATH))
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def print_commands # :nodoc:
|
|
89
|
+
commands.each { |command| puts(" #{command}") }
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
private
|
|
93
|
+
COMMANDS_IN_USAGE = %w(
|
|
94
|
+
generate
|
|
95
|
+
console
|
|
96
|
+
server
|
|
97
|
+
deploy
|
|
98
|
+
logs
|
|
99
|
+
new
|
|
100
|
+
)
|
|
101
|
+
private_constant :COMMANDS_IN_USAGE
|
|
102
|
+
|
|
103
|
+
PRO_COMMANDS = %w(
|
|
104
|
+
projects
|
|
105
|
+
stacks
|
|
106
|
+
releases
|
|
107
|
+
rollback
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
def jets_new_with_no_path?(args)
|
|
111
|
+
args == ["new"]
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def commands
|
|
115
|
+
lookup!
|
|
116
|
+
visible_commands = (subclasses - hidden_commands).flat_map(&:printing_commands)
|
|
117
|
+
(visible_commands - COMMANDS_IN_USAGE - PRO_COMMANDS).sort
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def command_type # :doc:
|
|
121
|
+
@command_type ||= "command"
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def lookup_paths # :doc:
|
|
125
|
+
@lookup_paths ||= %w( jets/commands commands )
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def file_lookup_paths # :doc:
|
|
129
|
+
@file_lookup_paths ||= [ "{#{lookup_paths.join(',')}}", "**", "*_command.rb" ]
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Jets
|
|
4
|
+
module Command
|
|
5
|
+
class ApplicationCommand < Base # :nodoc:
|
|
6
|
+
hide_command!
|
|
7
|
+
|
|
8
|
+
self.bin = "jets" if respond_to?(:bin=) # Rails 7.1
|
|
9
|
+
|
|
10
|
+
def help
|
|
11
|
+
perform # Punt help output to the generator.
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# This is:
|
|
15
|
+
#
|
|
16
|
+
# bundle exec jets application:help => jets new --help
|
|
17
|
+
# bundle exec jets application => jets new --help
|
|
18
|
+
#
|
|
19
|
+
def perform(*args)
|
|
20
|
+
# require lazily so that Rails constant is only defined within generators
|
|
21
|
+
require "jets/generators/overrides/app/app_generator"
|
|
22
|
+
override_exit_on_failure?
|
|
23
|
+
argv = Rails::Generators::ARGVScrubber.new(args).prepare!
|
|
24
|
+
Jets::Generators::AppGenerator.start argv
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
# We override this way because Jets require generators lazily
|
|
29
|
+
def override_exit_on_failure?
|
|
30
|
+
Jets::Generators::AppGenerator.class_eval do
|
|
31
|
+
# We want to exit on failure to be kind to other libraries
|
|
32
|
+
# This is only when accessing via CLI
|
|
33
|
+
def self.exit_on_failure?
|
|
34
|
+
true
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Jets::Command
|
|
2
|
+
class BuildCommand < Base # :nodoc:
|
|
3
|
+
include EnvironmentArgument
|
|
4
|
+
|
|
5
|
+
option :templates, type: :boolean, desc: "Build CloudFormation templates only"
|
|
6
|
+
|
|
7
|
+
desc "build", "Builds and packages project for AWS Lambda"
|
|
8
|
+
long_desc Help.text(:build)
|
|
9
|
+
def perform
|
|
10
|
+
ENV['JETS_TEMPLATES'] = '1' if options[:templates]
|
|
11
|
+
|
|
12
|
+
extract_environment_option_from_argument
|
|
13
|
+
require_application_and_environment!
|
|
14
|
+
|
|
15
|
+
puts "Building project for Lambda..."
|
|
16
|
+
# run gets called from the CLI and does not have all the stack_options yet.
|
|
17
|
+
# We compute it and change the options early here.
|
|
18
|
+
@options.merge!(stack_type: stack_type, s3_bucket: Jets.s3_bucket)
|
|
19
|
+
do_build
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
# Note: build is picked up as a command so naming it do_build
|
|
24
|
+
def do_build
|
|
25
|
+
Jets::Builders::CodeBuilder.new.build unless ENV['JETS_TEMPLATES']
|
|
26
|
+
Jets::Cfn::Builder.new(@options).build
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def stack_type
|
|
30
|
+
first_run? ? :minimal : :full
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
module Jets::Commands::Call
|
|
2
2
|
class AutoloadGuesser < BaseGuesser
|
|
3
3
|
def detect_class_name
|
|
4
4
|
# First guess the class name assuming simple
|
|
@@ -53,7 +53,7 @@ class Jets::Commands::Call
|
|
|
53
53
|
meth = underscored_function_name.sub(underscored_class_name, '')
|
|
54
54
|
meth = meth.sub(/^[-_]/,'') # remove leading _ or -
|
|
55
55
|
|
|
56
|
-
if class_name.constantize.
|
|
56
|
+
if class_name.constantize.definitions.map(&:meth).include?(meth.to_sym)
|
|
57
57
|
@method_name = meth
|
|
58
58
|
else
|
|
59
59
|
@method_name_error ="#{class_name} class found but #{meth} method not found"
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# method_name
|
|
4
4
|
# error_message
|
|
5
5
|
#
|
|
6
|
-
|
|
6
|
+
module Jets::Commands::Call
|
|
7
7
|
class BaseGuesser
|
|
8
8
|
include Jets::AwsServices
|
|
9
9
|
|
|
@@ -26,15 +26,15 @@ class Jets::Commands::Call
|
|
|
26
26
|
# Strip the project namespace if the user has accidentally added it
|
|
27
27
|
# Since we're going to automatically add it no matter what at the end
|
|
28
28
|
# and dont want the namespace to be included twice
|
|
29
|
-
@provided_function_name = @provided_function_name.sub("#{Jets.
|
|
29
|
+
@provided_function_name = @provided_function_name.sub("#{Jets.project_namespace}-", "")
|
|
30
30
|
|
|
31
31
|
code_path = class_name.underscore.gsub('/','-')
|
|
32
|
-
function_name = [Jets.
|
|
32
|
+
function_name = [Jets.project_namespace, code_path, method_name].join('-')
|
|
33
33
|
generated_function_name(function_name)
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def generated_function_name(function_name)
|
|
37
|
-
if function_name.size > Jets::MAX_FUNCTION_NAME_SIZE # name generated by CloudFormation
|
|
37
|
+
if function_name.size > Jets::Cfn::Resource::Lambda::Function::MAX_FUNCTION_NAME_SIZE # name generated by CloudFormation
|
|
38
38
|
logical_id = @class_name.gsub('::','')
|
|
39
39
|
|
|
40
40
|
parent_resources = stack_resources(parent_stack.stack_id)
|
|
@@ -56,7 +56,7 @@ class Jets::Commands::Call
|
|
|
56
56
|
|
|
57
57
|
@@parent_stack = nil
|
|
58
58
|
def parent_stack
|
|
59
|
-
@@parent_stack ||= cfn.describe_stacks(stack_name: Jets::
|
|
59
|
+
@@parent_stack ||= cfn.describe_stacks(stack_name: Jets::Names.parent_stack_name).stacks.first
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require "base64"
|
|
2
|
+
require "json"
|
|
3
|
+
|
|
4
|
+
module Jets::Command
|
|
5
|
+
class CallCommand < Base # :nodoc:
|
|
6
|
+
include Jets::AwsServices
|
|
7
|
+
|
|
8
|
+
desc "call [function] [event]", "Call a lambda function on AWS or locally"
|
|
9
|
+
long_desc Help.text(:call)
|
|
10
|
+
option :invocation_type, default: "RequestResponse", desc: "RequestResponse, Event, or DryRun"
|
|
11
|
+
option :log_type, default: "Tail", desc: "Works if invocation_type set to RequestResponse"
|
|
12
|
+
option :qualifier, desc: "Lambda function version or alias name"
|
|
13
|
+
option :show_log, type: :boolean, desc: "Shows last 4KB of log in the x-amz-log-result header"
|
|
14
|
+
option :show_logs, type: :boolean, desc: "Shows last 4KB of log in the x-amz-log-result header"
|
|
15
|
+
option :lambda_proxy, type: :boolean, default: true, desc: "Enables automatic Lambda proxy transformation of the event payload"
|
|
16
|
+
option :guess, type: :boolean, default: true, desc: "Enables guess mode. Uses inference to allows use of all dashes to specify functions. Guess mode verifies that the function exists in the code base."
|
|
17
|
+
option :local, type: :boolean, desc: "Enables local mode. Instead of invoke the AWS Lambda function, the method gets called locally with current app code. With local mode guess mode is always used."
|
|
18
|
+
option :retry_limit, type: :numeric, default: nil, desc: "Retry count of invoking function. It work with remote call"
|
|
19
|
+
option :read_timeout, type: :numeric, default: nil, desc: " The number of seconds to wait for response data. It work with remote call"
|
|
20
|
+
def perform(function_name, payload='')
|
|
21
|
+
$stdout.sync = true
|
|
22
|
+
$stderr.sync = true
|
|
23
|
+
$stdout = $stderr # jets call operation
|
|
24
|
+
Jets::Commands::Call::Caller.new(function_name, payload, options).run
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
module Jets::Commands::Call
|
|
2
|
+
class Caller
|
|
3
|
+
include Jets::AwsServices
|
|
4
|
+
|
|
5
|
+
def initialize(provided_function_name, event, options={})
|
|
6
|
+
@options = options
|
|
7
|
+
@guess = @options[:guess].nil? ? true : @options[:guess]
|
|
8
|
+
|
|
9
|
+
@provided_function_name = provided_function_name
|
|
10
|
+
@event = event
|
|
11
|
+
|
|
12
|
+
@invocation_type = options[:invocation_type] || "RequestResponse"
|
|
13
|
+
@log_type = options[:log_type] || "Tail"
|
|
14
|
+
@qualifier = @qualifier
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def function_name
|
|
18
|
+
if @provided_function_name == 'controller'
|
|
19
|
+
"#{Jets.project_namespace}-controller"
|
|
20
|
+
elsif @provided_function_name.starts_with?(Jets.project_namespace)
|
|
21
|
+
@provided_function_name # fully qualified function name
|
|
22
|
+
elsif @guess
|
|
23
|
+
ensure_guesses_found! # possibly exits here
|
|
24
|
+
guesser.function_name # guesser adds namespace already
|
|
25
|
+
else
|
|
26
|
+
[Jets.project_namespace, @provided_function_name].join('-')
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def run
|
|
31
|
+
@options[:local] ? local_run : remote_run
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# With local mode there is no way to bypass the guesser
|
|
35
|
+
def local_run
|
|
36
|
+
puts "Local mode enabled!"
|
|
37
|
+
ensure_guesses_found! # possibly exits here
|
|
38
|
+
klass = guesser.class_name.constantize
|
|
39
|
+
# Example:
|
|
40
|
+
# PostsController.process(event, context, meth)
|
|
41
|
+
event = JSON.load(transformed_event) || {} # transformed_event is JSON text String
|
|
42
|
+
|
|
43
|
+
fun = Jets::Poly.new(klass, guesser.method_name)
|
|
44
|
+
result = fun.run(event) # check the logs for polymorphic function errors
|
|
45
|
+
# Note: even though data might not always be json, the JSON.dump does a
|
|
46
|
+
# good job of not bombing, so always calling it to simplify code.
|
|
47
|
+
|
|
48
|
+
text = Jets::Util.normalize_result(result)
|
|
49
|
+
STDOUT.puts text
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def remote_run
|
|
53
|
+
puts "Calling lambda function #{function_name} on AWS" unless @options[:mute]
|
|
54
|
+
return if @options[:noop]
|
|
55
|
+
|
|
56
|
+
options = {
|
|
57
|
+
# client_context: client_context,
|
|
58
|
+
function_name: function_name,
|
|
59
|
+
invocation_type: @invocation_type, # "Event", # RequestResponse
|
|
60
|
+
log_type: @log_type, # pretty sweet
|
|
61
|
+
payload: transformed_event, # "fileb://file-path/input.json", <= JSON
|
|
62
|
+
qualifier: @qualifier, # "1",
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
begin
|
|
66
|
+
resp = lambda_client.invoke(options)
|
|
67
|
+
rescue Aws::Lambda::Errors::ResourceNotFoundException
|
|
68
|
+
puts "The function #{function_name} was not found. Maybe check the spelling or the AWS_PROFILE?".color(:red)
|
|
69
|
+
return
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
if @options[:show_logs] || @options[:show_log]
|
|
73
|
+
puts "Last 4KB of log in the x-amz-log-result header:".color(:green)
|
|
74
|
+
puts Base64.decode64(resp.log_result)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
add_console_link_to_clipboard
|
|
78
|
+
result = resp.payload.read # already been normalized/JSON.dump by AWS
|
|
79
|
+
unless @options[:mute_output]
|
|
80
|
+
STDOUT.puts result # only thing that goes to stdout
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def guesser
|
|
85
|
+
@guesser ||= Guesser.new(@provided_function_name)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def ensure_guesses_found!
|
|
89
|
+
unless guesser.class_name and guesser.method_name
|
|
90
|
+
puts guesser.error_message
|
|
91
|
+
exit
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# @event is String because it can be the file:// notation
|
|
96
|
+
# Returns text String for the lambda.invoke payload.
|
|
97
|
+
def transformed_event
|
|
98
|
+
text = @event
|
|
99
|
+
if text && text.include?("file://")
|
|
100
|
+
text = load_event_from_file(text)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
check_valid_json!(text)
|
|
104
|
+
|
|
105
|
+
puts "Function name: #{function_name.color(:green)}" unless @options[:mute]
|
|
106
|
+
return text unless function_name.include?("_controller-")
|
|
107
|
+
return text if @options[:lambda_proxy] == false
|
|
108
|
+
|
|
109
|
+
event = JSON.load(text)
|
|
110
|
+
lambda_proxy = {"queryStringParameters" => event}
|
|
111
|
+
JSON.dump(lambda_proxy)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def load_event_from_file(text)
|
|
115
|
+
path = text.gsub('file://','')
|
|
116
|
+
path = "#{Jets.root}/#{path}" unless path[0..0] == '/'
|
|
117
|
+
unless File.exist?(path)
|
|
118
|
+
puts "File #{path} does not exist. Are you sure the file exists?".color(:red)
|
|
119
|
+
exit
|
|
120
|
+
end
|
|
121
|
+
text = IO.read(path)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# Exits with friendly error message when user provides bad just
|
|
125
|
+
def check_valid_json!(text)
|
|
126
|
+
JSON.load(text)
|
|
127
|
+
rescue JSON::ParserError => e
|
|
128
|
+
puts "Invalid json provided:\n '#{text}'"
|
|
129
|
+
puts "Exiting... Please try again and provide valid json."
|
|
130
|
+
exit 1
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# So use can quickly paste this into their browser if they want to see the function
|
|
134
|
+
# via the Lambda console
|
|
135
|
+
def add_console_link_to_clipboard
|
|
136
|
+
return unless RUBY_PLATFORM =~ /darwin/
|
|
137
|
+
return unless system("type pbcopy > /dev/null")
|
|
138
|
+
|
|
139
|
+
# TODO: for add_console_link_to_clipboard get the region from the ~/.aws/config and AWS_PROFILE setting
|
|
140
|
+
region = Aws::S3::Client.new.config.region || ENV["AWS_REGION"] ||'us-east-1'
|
|
141
|
+
link = "https://console.aws.amazon.com/lambda/home?region=#{region}#/functions/#{function_name}?tab=configuration"
|
|
142
|
+
system("echo #{link} | pbcopy")
|
|
143
|
+
puts "Pro tip: The Lambda Console Link to the #{function_name} function has been added to your clipboard." unless @options[:mute]
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
# TODO: Hook client_context up and make sure it works. Think I've figure out how to sign client_context below.
|
|
147
|
+
# Client context must be a valid Base64-encoded JSON object
|
|
148
|
+
# Example: http://docs.aws.amazon.com/mobileanalytics/latest/ug/PutEvents.html
|
|
149
|
+
def client_context
|
|
150
|
+
context = {
|
|
151
|
+
"client" => {
|
|
152
|
+
"client_id" => "Jets",
|
|
153
|
+
"app_title" => "jets call cli",
|
|
154
|
+
"app_version_name" => Jets::VERSION,
|
|
155
|
+
},
|
|
156
|
+
"custom" => {},
|
|
157
|
+
"env" =>{
|
|
158
|
+
"platform" => RUBY_PLATFORM,
|
|
159
|
+
"platform_version" => RUBY_VERSION,
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
Base64.encode64(JSON.dump(context))
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# For this class redirect puts to stderr so user can pipe output to tools like
|
|
166
|
+
# jq. Example:
|
|
167
|
+
# jets call posts_controller-index '{"test":1}' | jq .
|
|
168
|
+
def puts(text)
|
|
169
|
+
$stderr.puts(text)
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def lambda_client
|
|
173
|
+
opt = {}
|
|
174
|
+
opt = opt.merge({retry_limit: @options[:retry_limit]}) if @options[:retry_limit].present?
|
|
175
|
+
opt = opt.merge({http_read_timeout: @options[:read_timeout]}) if @options[:read_timeout].present?
|
|
176
|
+
|
|
177
|
+
if opt.empty?
|
|
178
|
+
aws_lambda
|
|
179
|
+
else
|
|
180
|
+
Aws::Lambda::Client.new(opt)
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
end
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
#
|
|
26
26
|
# Now we're at a point where we can start guessing
|
|
27
27
|
# function_name = detect_function_name(function_name)
|
|
28
|
-
|
|
28
|
+
module Jets::Commands::Call
|
|
29
29
|
class Guesser
|
|
30
30
|
delegate :class_name, :method_name, :error_message, :function_name,
|
|
31
31
|
to: :delegate_guesser
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Jets::Command
|
|
2
|
+
class CleanCommand < Base # :nodoc:
|
|
3
|
+
desc "log", "Cleans CloudWatch log groups assocated with app"
|
|
4
|
+
long_desc Help.text("clean/log")
|
|
5
|
+
def log
|
|
6
|
+
Jets::Commands::Clean::Log.new(options).clean
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
desc "build", "Cleans jets build"
|
|
10
|
+
long_desc Help.text("clean/build")
|
|
11
|
+
def build
|
|
12
|
+
Jets::Commands::Clean::Build.new(options).clean
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
# /aws/lambda/demo-dev-2-jets-preheat_job-warm
|
|
5
5
|
# /aws/lambda/demo-dev-2-jets-public_controller-show
|
|
6
6
|
#
|
|
7
|
-
# We're doing this because
|
|
7
|
+
# We're doing this because Jets.extra environments can create additional matching
|
|
8
8
|
# log groups and we don't want to overly-aggressively delete them.
|
|
9
9
|
#
|
|
10
10
|
# The `keep_prefixes(log_group_names)` method calcuates the log groups to keep.
|
|
11
|
-
|
|
11
|
+
module Jets::Commands::Clean
|
|
12
12
|
class Log < Base
|
|
13
13
|
extend Memoist
|
|
14
14
|
include Jets::AwsServices
|
|
@@ -49,7 +49,7 @@ class Jets::Commands::Clean
|
|
|
49
49
|
|
|
50
50
|
private
|
|
51
51
|
def prefix_guess
|
|
52
|
-
Jets::
|
|
52
|
+
Jets::Names.parent_stack_name
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
def log_groups
|
|
@@ -78,7 +78,7 @@ class Jets::Commands::Clean
|
|
|
78
78
|
|
|
79
79
|
# Check for the prefixes to keep. The slightly tricky thing to watch for is
|
|
80
80
|
# for the prefix matching addiitonal log groups that belong to other
|
|
81
|
-
#
|
|
81
|
+
# JETS_EXTRA=xxx created environments.
|
|
82
82
|
#
|
|
83
83
|
# We find and store the prefixes to keep so we don't over aggressively delete
|
|
84
84
|
# log groups.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
module Jets::Command
|
|
2
|
+
class ConfigureCommand < Base # :nodoc:
|
|
3
|
+
desc "configure [TOKEN]", "configure token and updates ~/.jets/config.yml"
|
|
4
|
+
long_desc Help.text(:configure)
|
|
5
|
+
def perform(token=nil)
|
|
6
|
+
Jets::Api::Config.instance.update_token(token)
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "irb"
|
|
4
|
+
require "irb/completion"
|
|
5
|
+
|
|
6
|
+
module Jets::Command
|
|
7
|
+
class ConsoleCommand < Base # :nodoc:
|
|
8
|
+
include EnvironmentArgument
|
|
9
|
+
|
|
10
|
+
desc "console", "REPL console with Jets environment loaded"
|
|
11
|
+
long_desc Help.text(:console)
|
|
12
|
+
def perform
|
|
13
|
+
extract_environment_option_from_argument
|
|
14
|
+
require_application_and_environment!
|
|
15
|
+
Console.new(options).run
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
class Console
|
|
20
|
+
attr_reader :environment
|
|
21
|
+
|
|
22
|
+
def initialize(environment)
|
|
23
|
+
@environment = environment
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def run
|
|
27
|
+
puts Jets::Booter.message
|
|
28
|
+
|
|
29
|
+
# Thanks: https://mutelight.org/bin-console
|
|
30
|
+
require "irb"
|
|
31
|
+
require "irb/completion"
|
|
32
|
+
|
|
33
|
+
ARGV.clear # https://stackoverflow.com/questions/33070092/irb-start-not-starting/33136762
|
|
34
|
+
IRB.start
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|