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
|
@@ -1,41 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
puts "Deploying
|
|
1
|
+
module Jets::Command
|
|
2
|
+
class DeployCommand < Base # :nodoc:
|
|
3
|
+
include EnvironmentArgument
|
|
4
|
+
|
|
5
|
+
desc "deploy", "Builds and deploys project to AWS Lambda"
|
|
6
|
+
long_desc Help.text(:deploy)
|
|
7
|
+
option :message, aliases: :m, desc: "Custom message to use for the deployment message"
|
|
8
|
+
def perform
|
|
9
|
+
extract_environment_option_from_argument
|
|
10
|
+
require_application_and_environment!
|
|
11
|
+
|
|
12
|
+
stack = Jets.project_namespace.color(:green)
|
|
13
|
+
puts "Deploying stack #{stack} ..."
|
|
14
14
|
return if @options[:noop]
|
|
15
15
|
|
|
16
16
|
check_dev_mode
|
|
17
17
|
validate_routes!
|
|
18
18
|
|
|
19
|
-
# deploy full nested stack when stack already exists
|
|
20
19
|
# Delete existing rollback stack from previous bad minimal deploy
|
|
21
20
|
delete_minimal_stack if minimal_rollback_complete?
|
|
22
21
|
exit_unless_updateable! # Stack could be in a weird rollback state or in progress state
|
|
23
22
|
|
|
24
23
|
if first_run?
|
|
25
24
|
ship(stack_type: :minimal)
|
|
26
|
-
Jets.application.reload_configs!
|
|
27
25
|
end
|
|
28
26
|
|
|
29
|
-
# Build code after the minimal stack because need s3 bucket for assets
|
|
30
|
-
# on_aws? and s3_base_url logic
|
|
27
|
+
# Build code after the minimal stack because need s3 bucket for assets on_aws? and s3_base_url logic
|
|
31
28
|
# TODO: possible deploy hook point: before_build
|
|
32
|
-
|
|
29
|
+
Jets::Builders::CodeBuilder.new.build
|
|
33
30
|
|
|
34
31
|
# TODO: possible deploy hook point: before_ship
|
|
35
32
|
create_s3_event_buckets
|
|
36
|
-
ship(stack_type: :full, s3_bucket: s3_bucket)
|
|
33
|
+
ship(stack_type: :full, s3_bucket: Jets.s3_bucket)
|
|
37
34
|
end
|
|
38
35
|
|
|
36
|
+
private
|
|
39
37
|
def create_s3_event_buckets
|
|
40
38
|
buckets = Jets::Job::Base.s3_events.keys
|
|
41
39
|
buckets.each do |bucket|
|
|
@@ -51,37 +49,32 @@ module Jets::Commands
|
|
|
51
49
|
end
|
|
52
50
|
|
|
53
51
|
def check_dev_mode
|
|
54
|
-
if File.exist?("#{Jets.root}/dev.mode")
|
|
52
|
+
if File.exist?("#{Jets.root}/dev.mode") && !ENV['JETS_SKIP_DEV_MODE_CHECK']
|
|
55
53
|
puts "The dev.mode file exists. Please removed it and run bundle update before you deploy.".color(:red)
|
|
56
54
|
exit 1
|
|
57
55
|
end
|
|
58
56
|
end
|
|
59
57
|
|
|
60
|
-
def build_code
|
|
61
|
-
Jets::Commands::Build.new(@options).build_code
|
|
62
|
-
end
|
|
63
|
-
|
|
64
58
|
def validate_routes!
|
|
65
59
|
valid = Jets::Router.validate_routes!
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
60
|
+
return if valid
|
|
61
|
+
|
|
62
|
+
puts "Deploy fail: The jets application contain invalid routes.".color(:red)
|
|
63
|
+
exit 1
|
|
70
64
|
end
|
|
71
65
|
|
|
72
66
|
def ship(stack_options)
|
|
73
|
-
options = @options.merge(stack_options) # includes stack_type
|
|
74
|
-
Jets::
|
|
67
|
+
options = @options.merge(stack_options) # includes stack_type
|
|
68
|
+
Jets::Cfn::Builder.new(options).build
|
|
75
69
|
Jets::Cfn::Ship.new(options).run
|
|
76
70
|
end
|
|
77
71
|
|
|
78
72
|
def status
|
|
79
|
-
Jets::Cfn::Status.new(stack_name)
|
|
73
|
+
@status ||= Jets::Cfn::Status.new(stack_name)
|
|
80
74
|
end
|
|
81
|
-
memoize :status
|
|
82
75
|
|
|
83
76
|
def stack_name
|
|
84
|
-
Jets::
|
|
77
|
+
Jets::Names.parent_stack_name
|
|
85
78
|
end
|
|
86
79
|
|
|
87
80
|
# Checks for a few things before deciding to delete the parent stack
|
|
@@ -101,37 +94,25 @@ module Jets::Commands
|
|
|
101
94
|
resource_statuses == ['DELETE_COMPLETE']
|
|
102
95
|
end
|
|
103
96
|
|
|
104
|
-
def find_stack(stack_name)
|
|
105
|
-
resp = cfn.describe_stacks(stack_name: stack_name)
|
|
106
|
-
resp.stacks.first
|
|
107
|
-
rescue Aws::CloudFormation::Errors::ValidationError => e
|
|
108
|
-
# example: Stack with id demo-dev does not exist
|
|
109
|
-
if e.message =~ /Stack with/ && e.message =~ /does not exist/
|
|
110
|
-
nil
|
|
111
|
-
else
|
|
112
|
-
raise
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
|
|
116
97
|
# All CloudFormation states listed here: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-describing-stacks.html
|
|
117
98
|
def exit_unless_updateable!
|
|
118
99
|
return if ENV['JETS_FORCE_UPDATEABLE'] # useful for debugging if stack stack updating
|
|
119
100
|
|
|
120
|
-
stack_name = Jets::
|
|
101
|
+
stack_name = Jets::Names.parent_stack_name
|
|
121
102
|
exists = stack_exists?(stack_name)
|
|
122
103
|
return unless exists # continue because stack could be updating
|
|
123
104
|
|
|
124
105
|
stack = cfn.describe_stacks(stack_name: stack_name).stacks.first
|
|
125
106
|
status = stack["stack_status"]
|
|
126
107
|
if status =~ /^ROLLBACK_/ ||
|
|
127
|
-
|
|
108
|
+
status =~ /_IN_PROGRESS$/
|
|
128
109
|
region = `aws configure get region`.strip rescue "us-east-1"
|
|
129
110
|
url = "https://console.aws.amazon.com/cloudformation/home?region=#{region}#/stacks"
|
|
130
|
-
puts "The parent stack of the #{Jets.
|
|
111
|
+
puts "The parent stack of the #{Jets.project_name.color(:green)} project is not in an updateable state."
|
|
131
112
|
puts "Stack name #{stack_name.color(:yellow)} status #{stack["stack_status"].color(:yellow)}"
|
|
132
113
|
puts "Here's the CloudFormation url to check for more details #{url}"
|
|
133
114
|
exit 1
|
|
134
115
|
end
|
|
135
116
|
end
|
|
136
|
-
|
|
117
|
+
end
|
|
137
118
|
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "jets/dev_caching"
|
|
4
|
+
|
|
5
|
+
module Jets
|
|
6
|
+
module Command
|
|
7
|
+
class DevCommand < Base # :nodoc:
|
|
8
|
+
no_commands do
|
|
9
|
+
def help
|
|
10
|
+
say "jets dev:cache # Toggle development mode caching on/off."
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def cache
|
|
15
|
+
Jets::DevCaching.enable_by_file
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
## Storing Encrypted Files in Source Control
|
|
2
|
+
|
|
3
|
+
The Jets `encrypted` commands provide access to encrypted files or configurations.
|
|
4
|
+
See the `Jets.application.encrypted` documentation for using them in your app.
|
|
5
|
+
|
|
6
|
+
This is a more generalized concept of `jets credentials`.
|
|
7
|
+
|
|
8
|
+
## Encryption Keys
|
|
9
|
+
|
|
10
|
+
By default, Jets looks for the encryption key in `config/master.key` or
|
|
11
|
+
`ENV["JETS_MASTER_KEY"]`, but that lookup can be overridden with `--key`:
|
|
12
|
+
|
|
13
|
+
jets encrypted:edit config/encrypted_file.yml.enc --key config/encrypted_file.key
|
|
14
|
+
|
|
15
|
+
Don't commit the key! Add it to your source control's ignore file. If you use
|
|
16
|
+
Git, Jets handles this for you.
|
|
17
|
+
|
|
18
|
+
## Editing Files
|
|
19
|
+
|
|
20
|
+
To edit or create an encrypted file use:
|
|
21
|
+
|
|
22
|
+
jets encrypted:edit config/encrypted_file.yml.enc
|
|
23
|
+
|
|
24
|
+
This opens a temporary file in `$EDITOR` with the decrypted contents for editing.
|
|
25
|
+
|
|
26
|
+
## Viewing Files
|
|
27
|
+
|
|
28
|
+
To print the decrypted contents of an encrypted file use:
|
|
29
|
+
|
|
30
|
+
jets encrypted:show config/encrypted_file.yml.enc
|
|
31
|
+
|
|
32
|
+
## Access in App
|
|
33
|
+
|
|
34
|
+
Let's say you have encrypted like so:
|
|
35
|
+
|
|
36
|
+
❯ jets encrypted:show config/encrypted_file.yml.enc
|
|
37
|
+
cloud:
|
|
38
|
+
foo: bar
|
|
39
|
+
|
|
40
|
+
You can access them in the app like so:
|
|
41
|
+
|
|
42
|
+
$ jets console
|
|
43
|
+
> file = ActiveSupport::EncryptedFile.new(content_path: "./config/encrypted_file.yml.enc", key_path: "./config/master.key", env_key: Jets.env, raise_if_missing_key: true)
|
|
44
|
+
> YAML.load(file.read)
|
|
45
|
+
=> {"cloud"=>{"foo"=>"bar"}}
|
|
46
|
+
>
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "pathname"
|
|
4
|
+
require "active_support"
|
|
5
|
+
require "jets/command/helpers/editor"
|
|
6
|
+
|
|
7
|
+
module Jets
|
|
8
|
+
module Command
|
|
9
|
+
class EncryptedCommand < Jets::Command::Base # :nodoc:
|
|
10
|
+
include Helpers::Editor
|
|
11
|
+
|
|
12
|
+
class_option :key, aliases: "-k", type: :string,
|
|
13
|
+
default: "config/master.key", desc: "The Jets.root relative path to the encryption key"
|
|
14
|
+
|
|
15
|
+
no_commands do
|
|
16
|
+
def help
|
|
17
|
+
say "Usage:\n #{self.class.banner}"
|
|
18
|
+
say ""
|
|
19
|
+
say self.class.desc
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def edit(file_path)
|
|
24
|
+
require_application!
|
|
25
|
+
encrypted = Jets.application.encrypted(file_path, key_path: options[:key])
|
|
26
|
+
|
|
27
|
+
ensure_editor_available(command: "bin/jets encrypted:edit") || (return)
|
|
28
|
+
ensure_encryption_key_has_been_added(options[:key]) if encrypted.key.nil?
|
|
29
|
+
ensure_encrypted_file_has_been_added(file_path, options[:key])
|
|
30
|
+
|
|
31
|
+
catch_editing_exceptions do
|
|
32
|
+
change_encrypted_file_in_system_editor(file_path, options[:key])
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
say "File encrypted and saved."
|
|
36
|
+
rescue ActiveSupport::MessageEncryptor::InvalidMessage
|
|
37
|
+
say "Couldn't decrypt #{file_path}. Perhaps you passed the wrong key?"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def show(file_path)
|
|
41
|
+
require_application!
|
|
42
|
+
encrypted = Jets.application.encrypted(file_path, key_path: options[:key])
|
|
43
|
+
|
|
44
|
+
say encrypted.read.presence || missing_encrypted_message(key: encrypted.key, key_path: options[:key], file_path: file_path)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
def ensure_encryption_key_has_been_added(key_path)
|
|
49
|
+
encryption_key_file_generator.add_key_file(key_path)
|
|
50
|
+
encryption_key_file_generator.ignore_key_file(key_path)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def ensure_encrypted_file_has_been_added(file_path, key_path)
|
|
54
|
+
encrypted_file_generator.add_encrypted_file_silently(file_path, key_path)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def change_encrypted_file_in_system_editor(file_path, key_path)
|
|
58
|
+
Jets.application.encrypted(file_path, key_path: key_path).change do |tmp_path|
|
|
59
|
+
system("#{ENV["EDITOR"]} #{tmp_path}")
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def encryption_key_file_generator
|
|
65
|
+
require "rails/generators"
|
|
66
|
+
require "rails/generators/rails/encryption_key_file/encryption_key_file_generator"
|
|
67
|
+
|
|
68
|
+
Rails::Generators::EncryptionKeyFileGenerator.new
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def encrypted_file_generator
|
|
72
|
+
require "rails/generators"
|
|
73
|
+
require "rails/generators/rails/encrypted_file/encrypted_file_generator"
|
|
74
|
+
|
|
75
|
+
Rails::Generators::EncryptedFileGenerator.new
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def missing_encrypted_message(key:, key_path:, file_path:)
|
|
79
|
+
if key.nil?
|
|
80
|
+
"Missing '#{key_path}' to decrypt data. See `bin/jets encrypted:help`"
|
|
81
|
+
else
|
|
82
|
+
"File '#{file_path}' does not exist. Use `bin/jets encrypted:edit #{file_path}` to change that."
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module Jets::Command
|
|
2
|
+
class GemsCommand < Base
|
|
3
|
+
desc "check", "Check if precompiled Lambda gems are available"
|
|
4
|
+
long_desc Help.text("gems:check")
|
|
5
|
+
option :verbose, type: :boolean, desc: "Verbose mode"
|
|
6
|
+
def check
|
|
7
|
+
Jets.boot
|
|
8
|
+
check = Jets::Api::Gems::Check.new(@options)
|
|
9
|
+
check.run! # exits early if missing gems found
|
|
10
|
+
# If reach here, means all gems are ok.
|
|
11
|
+
puts "Congrats! All gems are available in as precompiled Lambda gems 👍"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Jets::Command
|
|
4
|
+
class GenerateCommand < Base # :nodoc:
|
|
5
|
+
no_commands do
|
|
6
|
+
# jets generate -h
|
|
7
|
+
# Note: Other help flags like jets generate scaffold -h will be handled by
|
|
8
|
+
# invoking the generator and letting it handle the help flag.
|
|
9
|
+
def help
|
|
10
|
+
require_application_and_environment!
|
|
11
|
+
load_generators
|
|
12
|
+
all_commands_help self.class.command_name
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
desc "Generate", "Generate code"
|
|
17
|
+
long_desc Help.text(:generate)
|
|
18
|
+
def perform(*)
|
|
19
|
+
# require lazily so that Rails constant is only defined within generators
|
|
20
|
+
require "jets/generators"
|
|
21
|
+
|
|
22
|
+
generator = args.shift
|
|
23
|
+
return help unless generator
|
|
24
|
+
|
|
25
|
+
require_application_and_environment!
|
|
26
|
+
load_generators # engine.rb load_generators => Jets.application.load_generators
|
|
27
|
+
|
|
28
|
+
ARGV.replace(args) # set up ARGV for third-party libraries
|
|
29
|
+
|
|
30
|
+
Jets::Generators.invoke generator, args, behavior: behavior, destination_root: Jets::Command.root
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
def behavior
|
|
35
|
+
:invoke
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def all_commands_help(command = "generate")
|
|
39
|
+
puts "Usage: jets #{command} GENERATOR [args] [options]"
|
|
40
|
+
puts
|
|
41
|
+
puts "General options:"
|
|
42
|
+
puts " -h, [--help] # Print generator's options and usage"
|
|
43
|
+
puts " -p, [--pretend] # Run but do not make any changes"
|
|
44
|
+
puts " -f, [--force] # Overwrite files that already exist"
|
|
45
|
+
puts " -s, [--skip] # Skip files that already exist"
|
|
46
|
+
puts " -q, [--quiet] # Suppress status output"
|
|
47
|
+
puts
|
|
48
|
+
puts "Please choose a generator below."
|
|
49
|
+
puts
|
|
50
|
+
|
|
51
|
+
Rails::Generators.print_generators
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Decorate the Group#help method to replace rails with jets.
|
|
57
|
+
#
|
|
58
|
+
# Note: Initially tried only decorating when a help flag like `-h` is detected
|
|
59
|
+
# but some commands will trigger help output without the flag. For example:
|
|
60
|
+
# jets generate job
|
|
61
|
+
# The command requires a name
|
|
62
|
+
# jets generate job NAME
|
|
63
|
+
#
|
|
64
|
+
# The underlying Rails::Generators.invoke does this
|
|
65
|
+
# if klass = find_by_namespace(names.pop, names.any? && names.join(":"))
|
|
66
|
+
# args << "--help" if args.empty? && klass.arguments.any?(&:required?)
|
|
67
|
+
# and is able to detect that the name is missing and triggers the help output.
|
|
68
|
+
#
|
|
69
|
+
# Jets does not have this logic yet. So we'll decorate the help method to
|
|
70
|
+
# at the Thor::Group#help level.
|
|
71
|
+
require "thor"
|
|
72
|
+
class Thor::Group
|
|
73
|
+
module ReplaceHelpOutputWithJets
|
|
74
|
+
def help(shell)
|
|
75
|
+
out = capture_stdout_for_help do
|
|
76
|
+
super # invoke to get the help output
|
|
77
|
+
end
|
|
78
|
+
puts out.gsub('rails','jets').gsub('Rails','Jets')
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def capture_stdout_for_help
|
|
82
|
+
stdout_old = $stdout
|
|
83
|
+
io = StringIO.new
|
|
84
|
+
$stdout = io
|
|
85
|
+
yield
|
|
86
|
+
$stdout = stdout_old
|
|
87
|
+
io.string
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
class << self
|
|
92
|
+
# The help method is defined in the Thor::Group class. We are decorating it
|
|
93
|
+
prepend ReplaceHelpOutputWithJets
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Common Jets commands:
|
|
2
|
+
generate Generate new code (short-cut alias: "g")
|
|
3
|
+
console Start the Jets console (short-cut alias: "c")
|
|
4
|
+
server Start the Jets server (short-cut alias: "s")
|
|
5
|
+
deploy Deploy application to Lambda
|
|
6
|
+
logs View Lambda function logs
|
|
7
|
+
<% unless engine? -%>
|
|
8
|
+
new Create a new Jets application. "jets new demo" creates a
|
|
9
|
+
new application called Demo in "./demo"
|
|
10
|
+
<% end -%>
|
|
11
|
+
|
|
12
|
+
Jets Pro commands:
|
|
13
|
+
projects List projects
|
|
14
|
+
stacks List stacks
|
|
15
|
+
releases List releases
|
|
16
|
+
rollback Rollback to a previous release
|
|
17
|
+
|
|
18
|
+
All commands can be run with -h (or --help) for more information.
|
|
19
|
+
In addition to those commands, there are:
|
|
20
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Jets
|
|
4
|
+
module Command
|
|
5
|
+
class InitializersCommand < Base # :nodoc:
|
|
6
|
+
include EnvironmentArgument
|
|
7
|
+
|
|
8
|
+
desc "initializers", "Print out all defined initializers in the order they are invoked by Jets."
|
|
9
|
+
def perform
|
|
10
|
+
extract_environment_option_from_argument
|
|
11
|
+
require_application_and_environment!
|
|
12
|
+
|
|
13
|
+
Jets.application.initializers.tsort_each do |initializer|
|
|
14
|
+
say "#{initializer.context_class}.#{initializer.name}"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require "aws-logs"
|
|
2
|
+
|
|
3
|
+
module Jets::Command
|
|
4
|
+
class LogsCommand < Base # :nodoc:
|
|
5
|
+
include Jets::AwsServices
|
|
6
|
+
|
|
7
|
+
option :since, desc: "From what time to begin displaying logs. By default, logs will be displayed starting from 10m in the past. The value provided can be an ISO 8601 timestamp or a relative time. Examples: 10m 2d 2w"
|
|
8
|
+
option :follow, aliases: :f, default: false, type: :boolean, desc: " Whether to continuously poll for new logs. To exit from this mode, use Control-C."
|
|
9
|
+
option :format, default: "simple", desc: "The format to display the logs. IE: detailed or short. With detailed, the log stream name is also shown."
|
|
10
|
+
option :filter_pattern, desc: "The filter pattern to use. If not provided, all the events are matched"
|
|
11
|
+
option :log_group_name, aliases: :n, desc: "The log group name. By default, it is /aws/lambda/#{Jets.project_namespace}-controller"
|
|
12
|
+
option :refresh_rate, default: 1, type: :numeric, desc: "How often to refresh the logs in seconds."
|
|
13
|
+
option :wait_exists, default: true, type: :boolean, desc: "Whether to wait until the log group exists. By default, it will wait."
|
|
14
|
+
long_desc Help.text(:logs)
|
|
15
|
+
def perform
|
|
16
|
+
show_logs
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
def show_logs
|
|
21
|
+
options = @options.dup # so it can be modified
|
|
22
|
+
options[:log_group_name] = log_group_name
|
|
23
|
+
options[:since] ||= "10m" # by default, start search 10m in the past
|
|
24
|
+
options[:wait_exists_retries] = 12 # 12 * 5 = 60 seconds
|
|
25
|
+
|
|
26
|
+
verb = options[:follow] ? "Tailing" : "Showing"
|
|
27
|
+
$stderr.puts "#{verb} logs for #{options[:log_group_name]}"
|
|
28
|
+
|
|
29
|
+
tail = AwsLogs::Tail.new(options)
|
|
30
|
+
tail.run
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def log_group_name
|
|
34
|
+
default = "/aws/lambda/#{Jets.project_namespace}-controller"
|
|
35
|
+
return default unless @options[:log_group_name]
|
|
36
|
+
|
|
37
|
+
if @options[:log_group_name].include?("aws/lambda") || @options[:log_group_name].include?(Jets.project_namespace)
|
|
38
|
+
@options[:log_group_name]
|
|
39
|
+
else
|
|
40
|
+
# IE: hard_job-dig => /aws/lambda/demo-dev-hard_job-dig
|
|
41
|
+
"/aws/lambda/#{Jets.project_namespace}-#{@options[:log_group_name]}"
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Jets
|
|
4
|
+
module Command
|
|
5
|
+
class NewCommand < Base # :nodoc:
|
|
6
|
+
no_commands do
|
|
7
|
+
def help
|
|
8
|
+
Jets::Command.invoke :application, [ "--help" ]
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def perform(*)
|
|
13
|
+
say "Can't initialize a new Jets application within the directory of another, please change to a non-Jets directory first.\n"
|
|
14
|
+
say "Type 'jets' for help."
|
|
15
|
+
exit 1
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Jets
|
|
4
|
+
module Command
|
|
5
|
+
class NotesCommand < Base # :nodoc:
|
|
6
|
+
class_option :annotations, aliases: "-a", desc: "Filter by specific annotations, e.g. Foobar TODO", type: :array
|
|
7
|
+
|
|
8
|
+
def perform(*)
|
|
9
|
+
require_application_and_environment!
|
|
10
|
+
|
|
11
|
+
# lazy require so Rails const is only defined when using notes
|
|
12
|
+
require "rails/source_annotation_extractor"
|
|
13
|
+
|
|
14
|
+
display_annotations
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
def display_annotations
|
|
19
|
+
annotations = options[:annotations] || Rails::SourceAnnotationExtractor::Annotation.tags
|
|
20
|
+
tag = (annotations.length > 1)
|
|
21
|
+
|
|
22
|
+
Rails::SourceAnnotationExtractor.enumerate annotations.join("|"), tag: tag, dirs: directories
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def directories
|
|
26
|
+
Rails::SourceAnnotationExtractor::Annotation.directories
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Jets
|
|
4
|
+
module Command
|
|
5
|
+
class PluginCommand < Base # :nodoc:
|
|
6
|
+
hide_command!
|
|
7
|
+
|
|
8
|
+
def help
|
|
9
|
+
run_plugin_generator %w( --help )
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.banner(*) # :nodoc:
|
|
13
|
+
"#{executable} new [options]"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
class_option :rc, type: :string, default: File.join("~", ".jetsrc"),
|
|
17
|
+
desc: "Initialize the plugin command with previous defaults. Uses .jetsrc in your home directory by default."
|
|
18
|
+
|
|
19
|
+
class_option :no_rc, desc: "Skip evaluating .jetsrc."
|
|
20
|
+
|
|
21
|
+
def perform(type = nil, *plugin_args)
|
|
22
|
+
plugin_args << "--help" unless type == "new"
|
|
23
|
+
|
|
24
|
+
unless options.key?("no_rc") # Thor's not so indifferent access hash.
|
|
25
|
+
jetsrc = File.expand_path(options[:rc])
|
|
26
|
+
|
|
27
|
+
if File.exist?(jetsrc)
|
|
28
|
+
extra_args = File.read(jetsrc).split(/\n+/).flat_map(&:split)
|
|
29
|
+
say "Using #{extra_args.join(" ")} from #{jetsrc}"
|
|
30
|
+
plugin_args.insert(1, *extra_args)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
run_plugin_generator plugin_args
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
def run_plugin_generator(plugin_args)
|
|
39
|
+
require "jets/generators"
|
|
40
|
+
require "jets/generators/jets/plugin/plugin_generator"
|
|
41
|
+
Jets::Generators::PluginGenerator.start plugin_args
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module Jets::Command
|
|
2
|
+
class ProjectsCommand < Base # :nodoc:
|
|
3
|
+
desc "projects", "List deployed projects"
|
|
4
|
+
long_desc Help.text(:projects)
|
|
5
|
+
paging_options.call
|
|
6
|
+
def perform
|
|
7
|
+
no_token_exit!
|
|
8
|
+
resp = Jets::Api::Project.list(paging_params)
|
|
9
|
+
check_for_error_message!(resp)
|
|
10
|
+
|
|
11
|
+
data = resp["data"]
|
|
12
|
+
if data.empty?
|
|
13
|
+
$stderr.puts "No projects deployed yet."
|
|
14
|
+
else
|
|
15
|
+
show_items(data)
|
|
16
|
+
end
|
|
17
|
+
rescue Jets::Api::RequestError => e
|
|
18
|
+
puts "WARNING: Unable to list projects. #{e.class}: #{e.message}"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
def show_items(items)
|
|
23
|
+
presenter = CliFormat::Presenter.new
|
|
24
|
+
presenter.header = ["Name"]
|
|
25
|
+
items.each do |item|
|
|
26
|
+
puts item["name"]
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|