jets 4.0.17 → 5.0.0.beta1
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/.gitignore +5 -1
- data/CHANGELOG.md +52 -23
- data/Gemfile +1 -5
- data/LICENSE.txt +1 -1
- data/Rakefile +3 -3
- 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/{lib/jets → engines}/internal/app/functions/jets/base_path.rb +2 -1
- data/{lib/jets → engines}/internal/app/functions/jets/base_path_mapping.rb +26 -6
- 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 +29 -27
- 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 -198
- 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_services/stack_status.rb +1 -1
- data/lib/jets/backtrace_cleaner.rb +27 -0
- data/lib/jets/booter.rb +29 -176
- data/lib/jets/builders/code_builder.rb +45 -117
- data/lib/jets/builders/code_size.rb +1 -0
- data/lib/jets/builders/gem_replacer.rb +5 -6
- 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 +32 -21
- 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} +10 -20
- data/lib/jets/cfn/{builders/api_gateway_builder.rb → builder/api/gateway.rb} +14 -37
- 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/{builders → builder}/interface.rb +45 -51
- 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/{builders/parent_builder.rb → builder/parent.rb} +54 -54
- 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} +4 -3
- 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 +1 -1
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/logical_id.rb +1 -1
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/base.rb +4 -3
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/media_types.rb +2 -2
- data/lib/jets/{resource → cfn/resource}/api_gateway/rest_api/routes/change/page.rb +5 -5
- 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 +21 -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 +12 -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/{resource → cfn/resource}/iam/base_role_definition.rb +15 -15
- 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/{resource → cfn/resource}/iam/policy.rb +8 -8
- 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 +4 -5
- 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 +20 -19
- data/lib/jets/cfn/template.rb +89 -0
- data/lib/jets/cfn/upload.rb +40 -37
- data/lib/jets/cli.rb +28 -210
- 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/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 +4 -4
- 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 +1 -1
- 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} +28 -47
- 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.rb → url/url_command.rb} +37 -14
- 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} +40 -15
- 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 -24
- 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 +136 -51
- 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 +2 -2
- data/lib/jets/dotenv.rb +2 -1
- 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/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 +143 -0
- data/lib/jets/{commands/templates/skeleton → generators/overrides/app/templates}/.gitignore +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/info.rb +116 -0
- data/lib/jets/initializable.rb +95 -0
- data/lib/jets/job/base.rb +3 -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/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 +64 -53
- 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/request/source.rb +1 -2
- data/lib/jets/mega/request.rb +4 -4
- data/lib/jets/names.rb +31 -15
- 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 +12 -25
- 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 +135 -16
- 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 -106
- data/lib/jets/router/route_set.rb +214 -0
- data/lib/jets/router/scope.rb +204 -69
- data/lib/jets/router/state.rb +36 -16
- data/lib/jets/router/util.rb +1 -31
- data/lib/jets/router.rb +64 -162
- 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 -20
- 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/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/version.rb +1 -1
- data/lib/jets.rb +7 -16
- metadata +410 -362
- data/bin/release +0 -9
- data/lib/jets/application/defaults.rb +0 -230
- 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_resources_builder.rb +0 -44
- data/lib/jets/cfn/builders/base_child_builder.rb +0 -88
- 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/job_builder.rb +0 -14
- data/lib/jets/cfn/builders/page_builder.rb +0 -80
- data/lib/jets/cfn/built_template.rb +0 -15
- data/lib/jets/cfn/template_source.rb +0 -64
- data/lib/jets/commands/base.rb +0 -145
- data/lib/jets/commands/call.rb +0 -185
- data/lib/jets/commands/clean.rb +0 -19
- data/lib/jets/commands/configure.rb +0 -51
- data/lib/jets/commands/console.rb +0 -18
- 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.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 -169
- 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 -104
- 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 -72
- 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 -20
- 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/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/helpers/jets/mailers_helper.rb +0 -9
- data/lib/jets/internal/app/jobs/jets/preheat_job.rb +0 -52
- 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/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/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/runner.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/cli.rb
CHANGED
|
@@ -1,215 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if version_requested?
|
|
20
|
-
puts Jets.version
|
|
21
|
-
return
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# Need to boot jets at this point for commands like: jets routes, deploy, console, etc to work
|
|
25
|
-
boot_jets
|
|
26
|
-
command_class = lookup(full_command)
|
|
27
|
-
if command_class
|
|
28
|
-
command_class.perform(full_command, thor_args)
|
|
29
|
-
else
|
|
30
|
-
main_help
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# The commands new and help do not call Jets.boot. Main reason is that Jets.boot should be run in a Jets project.
|
|
35
|
-
#
|
|
36
|
-
# * jets new - need to generate a project outside a project folder.
|
|
37
|
-
# * jets help - don't need to be in a project folder general help.
|
|
38
|
-
#
|
|
39
|
-
# When you are inside a project folder though, more help commands are available and displayed.
|
|
40
|
-
#
|
|
41
|
-
def boot_jets
|
|
42
|
-
set_jets_env_from_cli_arg!
|
|
43
|
-
command = thor_args.first
|
|
44
|
-
unless %w[new help].include?(command)
|
|
45
|
-
Jets::Turbo.new.charge # handles Afterburner mode
|
|
46
|
-
Jets.boot
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def version_requested?
|
|
51
|
-
# jets --version
|
|
52
|
-
# jets -v
|
|
53
|
-
version_flags = ["--version", "-v"]
|
|
54
|
-
@given_args.length == 1 && !(@given_args & version_flags).empty?
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
# Adjust JETS_ENV before boot_jets is called for the `jets deploy` command. Must do this early in the process
|
|
58
|
-
# before Jets.boot because because `bundler_require` is called as part of the bootup process. It sets the Jets.env
|
|
59
|
-
# to whatever the JETS_ENV is at the time to require the right bundler group.
|
|
60
|
-
#
|
|
61
|
-
# Defaults to development when not set.
|
|
62
|
-
def set_jets_env_from_cli_arg!
|
|
63
|
-
# Pretty tricky, we need to use the raw @given_args as thor_args eventually calls Commands::Base#eager_load!
|
|
64
|
-
# which uses Jets.env before we get a chance to override ENV['JETS_ENV']
|
|
65
|
-
command, env = @given_args[0..1]
|
|
66
|
-
|
|
67
|
-
return unless %w[deploy delete console c].include?(command)
|
|
68
|
-
env = nil if env&.starts_with?('-')
|
|
69
|
-
return unless env
|
|
70
|
-
ENV['JETS_ENV'] = env ? env : 'development'
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
# thor_args normalized the args Array to work with our Thor command
|
|
74
|
-
# subclasses.
|
|
75
|
-
# 1. The namespace is stripe
|
|
76
|
-
# 2. Help is shifted in front if a help flag is detected
|
|
77
|
-
def thor_args
|
|
78
|
-
args = @given_args.clone
|
|
79
|
-
|
|
80
|
-
# jets generate is a special command requires doesn't puts out the help menu automatically when
|
|
81
|
-
# `jets generate` is called without additional args. We'll take it over early and fix it here.
|
|
82
|
-
generate = full_command == "generate"
|
|
83
|
-
|
|
84
|
-
if generate && ((args.size == 1 || help_flags.include?(args.last)) || args.size == 2)
|
|
85
|
-
puts Jets::Generator.help
|
|
86
|
-
exit
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
help_args = args & help_flags
|
|
90
|
-
unless help_args.empty?
|
|
91
|
-
# Allow using help flags at the end of the command to trigger help menu
|
|
92
|
-
args -= help_flags # remove "help" and help flags from args
|
|
93
|
-
args[0] = meth # first command will always be the meth now since
|
|
94
|
-
# we removed the help flags
|
|
95
|
-
args.unshift("help")
|
|
96
|
-
args.compact!
|
|
97
|
-
return args
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
# reassigns the command without the namespace if reached here
|
|
101
|
-
args[0] = meth
|
|
102
|
-
args.compact
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
def meth
|
|
106
|
-
return nil unless full_command
|
|
107
|
-
|
|
108
|
-
if full_command.include?(':')
|
|
109
|
-
full_command.split(':').pop
|
|
110
|
-
else
|
|
111
|
-
full_command
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
ALIASES = {
|
|
116
|
-
"g" => "generate",
|
|
117
|
-
"c" => "console",
|
|
118
|
-
"s" => "server",
|
|
119
|
-
"db" => "dbconsole",
|
|
120
|
-
}
|
|
121
|
-
def full_command
|
|
122
|
-
# Removes any args that starts with -, those are option args.
|
|
123
|
-
# Also remove "help" flag.
|
|
124
|
-
args = @given_args.reject {|o| o =~ /^-/ } - help_flags
|
|
125
|
-
command = args[0] # first argument should always be the command
|
|
126
|
-
command = ALIASES[command] || command
|
|
127
|
-
Jets::Commands::Base.autocomplete(command)
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
# 1. look up Thor tasks
|
|
131
|
-
# 2. look up Rake tasks
|
|
132
|
-
# 3. help menu with all commands when both Thor and Rake tasks are not found
|
|
133
|
-
def lookup(full_command)
|
|
134
|
-
thor_task_found = Jets::Commands::Base.namespaced_commands.include?(full_command)
|
|
135
|
-
if thor_task_found
|
|
136
|
-
return Jets::Commands::Base.klass_from_namespace(namespace)
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
return unless jets_project?
|
|
140
|
-
|
|
141
|
-
Jets::Commands::RakeCommand if rake_task_found
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
def rake_task_found
|
|
145
|
-
return false unless full_command # can be nil for subcommands and would break jets help without this check
|
|
146
|
-
bracket_regex = /\[.*/ # matches everything after the first [
|
|
147
|
-
command = full_command.sub(bracket_regex, '') # remove everything after the first [
|
|
148
|
-
namespaced_commands = Jets::Commands::RakeCommand.namespaced_commands.map {|x| x.sub(bracket_regex, '') }
|
|
149
|
-
namespaced_commands.include?(command)
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
def jets_project?
|
|
153
|
-
File.exist?("config/application.rb")
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
# ["-h", "-?", "--help", "-D", "help"]
|
|
157
|
-
def help_flags
|
|
158
|
-
Thor::HELP_MAPPINGS + ["help"]
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
def namespace
|
|
162
|
-
return nil unless full_command
|
|
163
|
-
|
|
164
|
-
if full_command.include?(':')
|
|
165
|
-
words = full_command.split(':')
|
|
166
|
-
words.pop
|
|
167
|
-
words.join(':')
|
|
168
|
-
end
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
def main_help
|
|
172
|
-
shell = Thor::Shell::Basic.new
|
|
173
|
-
shell.say "Commands:"
|
|
174
|
-
shell.print_table(thor_list, :indent => 2, :truncate => true)
|
|
175
|
-
|
|
176
|
-
if jets_project? && !rake_list.empty?
|
|
177
|
-
shell.say "\nCommands via rake:"
|
|
178
|
-
shell.print_table(rake_list, :indent => 2, :truncate => true)
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
shell.say "\n"
|
|
182
|
-
shell.say main_help_body
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
def thor_list
|
|
186
|
-
Jets::Commands::Base.help_list(show_all_tasks)
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
def rake_list
|
|
190
|
-
list = Jets::Commands::RakeCommand.formatted_rake_tasks(show_all_tasks)
|
|
191
|
-
list.map do |array|
|
|
192
|
-
array[0] = "jets #{array[0]}"
|
|
193
|
-
array
|
|
194
|
-
end
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
def show_all_tasks
|
|
198
|
-
@given_args.include?("--all") || @given_args.include?("-A")
|
|
199
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "jets/app_loader"
|
|
4
|
+
|
|
5
|
+
# If we are inside a Jets application this method performs an exec and thus
|
|
6
|
+
# the rest of this script is not run.
|
|
7
|
+
# exec_app either runs bin/jets or an inline version of it.
|
|
8
|
+
Jets::AppLoader.exec_app
|
|
9
|
+
|
|
10
|
+
# Allow running jets with local source code when bin/jets does not exist
|
|
11
|
+
# Useful for development: jets build
|
|
12
|
+
# Also allows jets to work without a bin/jets file in the project.
|
|
13
|
+
if File.exist?("config/application.rb")
|
|
14
|
+
APP_PATH = File.expand_path("config/application", Dir.pwd)
|
|
15
|
+
require "jets"
|
|
16
|
+
require "jets/commands"
|
|
17
|
+
return
|
|
18
|
+
end
|
|
200
19
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
Add -h to any of the commands for more help. Examples:
|
|
20
|
+
# The rest of the script runs if outside of Jets application. IE:
|
|
21
|
+
# jets new demo
|
|
204
22
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
jets deploy -h
|
|
208
|
-
jets status -h
|
|
209
|
-
jets dynamodb:create -h
|
|
210
|
-
jets db:create -h
|
|
23
|
+
require "jets/ruby_version_check"
|
|
24
|
+
Signal.trap("INT") { puts; exit(1) }
|
|
211
25
|
|
|
212
|
-
|
|
213
|
-
end
|
|
26
|
+
require "jets/command"
|
|
214
27
|
|
|
28
|
+
if ARGV.first == "plugin"
|
|
29
|
+
ARGV.shift
|
|
30
|
+
Jets::Command.invoke :plugin, ARGV
|
|
31
|
+
else
|
|
32
|
+
Jets::Command.invoke :application, ARGV
|
|
215
33
|
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Jets
|
|
4
|
+
module Command
|
|
5
|
+
module Actions
|
|
6
|
+
# Change to the application's path if there is no <tt>config.ru</tt> file in current directory.
|
|
7
|
+
# This allows us to run <tt>jets server</tt> from other directories, but still get
|
|
8
|
+
# the main <tt>config.ru</tt> and properly set the <tt>tmp</tt> directory.
|
|
9
|
+
def set_application_directory!
|
|
10
|
+
Dir.chdir(File.expand_path("../..", APP_PATH)) unless File.exist?(File.expand_path("config.ru"))
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def require_application_and_environment!
|
|
14
|
+
Jets.boot
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def require_application!
|
|
18
|
+
require ENGINE_PATH if defined?(ENGINE_PATH)
|
|
19
|
+
|
|
20
|
+
if defined?(APP_PATH)
|
|
21
|
+
require APP_PATH
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
if defined?(ENGINE_PATH)
|
|
26
|
+
def load_tasks
|
|
27
|
+
Rake.application.init("jets")
|
|
28
|
+
Rake.application.load_rakefile
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def load_generators
|
|
32
|
+
engine = ::Jets::Engine.find(ENGINE_ROOT)
|
|
33
|
+
Jets::Generators.namespace = engine.railtie_namespace
|
|
34
|
+
engine.load_generators
|
|
35
|
+
end
|
|
36
|
+
else
|
|
37
|
+
def load_tasks
|
|
38
|
+
Jets.boot # hack
|
|
39
|
+
Jets.application.load_tasks
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def load_generators
|
|
43
|
+
Jets.application.load_generators
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module Jets
|
|
2
|
+
module Command
|
|
3
|
+
module ApiHelpers # :nodoc:
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
include Jets::Api
|
|
7
|
+
|
|
8
|
+
def no_token_exit!
|
|
9
|
+
return if Jets::Api.token
|
|
10
|
+
puts "ERROR: This command requires Jets Api".color(:red)
|
|
11
|
+
puts "Please run `jets configure` first"
|
|
12
|
+
exit 1
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def check_for_error_message!(resp)
|
|
16
|
+
# IE: {"error":"Invalid token. Please check your token in ~/.jets/config.yml"}
|
|
17
|
+
if resp && resp["error"]
|
|
18
|
+
$stderr.puts "ERROR: #{resp["error"]}"
|
|
19
|
+
exit 1
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def paging_params
|
|
24
|
+
Jets.boot
|
|
25
|
+
params = {}
|
|
26
|
+
params[:page] = @options[:page] if @options[:page]
|
|
27
|
+
params[:order] = @options[:order] if @options[:order]
|
|
28
|
+
params
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
module ClassMethods
|
|
32
|
+
def paging_options(defaults={})
|
|
33
|
+
Proc.new do
|
|
34
|
+
option :page, aliases: :p, type: :numeric, desc: "Page number"
|
|
35
|
+
option :order, default: defaults[:order] || 'asc', desc: "Order: asc or desc"
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Jets
|
|
2
|
+
module Command
|
|
3
|
+
module AwsHelpers # :nodoc:
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
include Jets::AwsServices
|
|
7
|
+
|
|
8
|
+
def first_run?
|
|
9
|
+
return false if ENV['JETS_TEMPLATES']
|
|
10
|
+
!stack_exists?(Jets::Names.parent_stack_name)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def find_stack(stack_name)
|
|
14
|
+
resp = cfn.describe_stacks(stack_name: stack_name)
|
|
15
|
+
resp.stacks.first
|
|
16
|
+
rescue Aws::CloudFormation::Errors::ValidationError => e
|
|
17
|
+
# example: Stack with id demo-dev does not exist
|
|
18
|
+
if e.message =~ /Stack with/ && e.message =~ /does not exist/
|
|
19
|
+
nil
|
|
20
|
+
else
|
|
21
|
+
raise
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "thor"
|
|
4
|
+
require "erb"
|
|
5
|
+
|
|
6
|
+
require "active_support/core_ext/string/filters"
|
|
7
|
+
require "active_support/core_ext/string/inflections"
|
|
8
|
+
|
|
9
|
+
require "jets/command/actions"
|
|
10
|
+
|
|
11
|
+
module Jets
|
|
12
|
+
module Command
|
|
13
|
+
class Base < Thor
|
|
14
|
+
extend Memoist
|
|
15
|
+
|
|
16
|
+
class Error < Thor::Error # :nodoc:
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
class CorrectableError < Error # :nodoc:
|
|
20
|
+
attr_reader :key, :options
|
|
21
|
+
|
|
22
|
+
def initialize(message, key, options)
|
|
23
|
+
@key = key
|
|
24
|
+
@options = options
|
|
25
|
+
super(message)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
if defined?(DidYouMean::SpellChecker) && defined?(DidYouMean::Correctable)
|
|
29
|
+
include DidYouMean::Correctable
|
|
30
|
+
|
|
31
|
+
def corrections
|
|
32
|
+
@corrections ||= DidYouMean::SpellChecker.new(dictionary: options).correct(key)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
include Actions
|
|
38
|
+
include AwsHelpers
|
|
39
|
+
include ApiHelpers
|
|
40
|
+
|
|
41
|
+
no_commands do
|
|
42
|
+
cattr_accessor :full_namespace
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
class << self
|
|
46
|
+
def long_desc(long_description, options = {})
|
|
47
|
+
options[:wrap] = false
|
|
48
|
+
super
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def exit_on_failure? # :nodoc:
|
|
52
|
+
false
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Returns true when the app is a Jets engine.
|
|
56
|
+
def engine?
|
|
57
|
+
defined?(ENGINE_ROOT)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Tries to get the description from a USAGE file one folder above the command
|
|
61
|
+
# root.
|
|
62
|
+
def desc(usage = nil, description = nil, options = {})
|
|
63
|
+
if usage
|
|
64
|
+
super
|
|
65
|
+
else
|
|
66
|
+
@desc ||= ERB.new(File.read(usage_path), trim_mode: "-").result(binding) if usage_path
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Convenience method to get the namespace from the class name. It's the
|
|
71
|
+
# same as Thor default except that the Command at the end of the class
|
|
72
|
+
# is removed.
|
|
73
|
+
def namespace(name = nil)
|
|
74
|
+
if name
|
|
75
|
+
super
|
|
76
|
+
else
|
|
77
|
+
@namespace ||= super.chomp("_command").sub(/:command:/, ":")
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Convenience method to hide this command from the available ones when
|
|
82
|
+
# running jets command.
|
|
83
|
+
def hide_command!
|
|
84
|
+
Jets::Command.hidden_commands << self
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def inherited(base) # :nodoc:
|
|
88
|
+
super
|
|
89
|
+
|
|
90
|
+
if base.name && !base.name.end_with?("Base")
|
|
91
|
+
Jets::Command.subclasses << base
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def perform(full_namespace, command, args, config) # :nodoc:
|
|
96
|
+
if Jets::Command::HELP_MAPPINGS.include?(args.first)
|
|
97
|
+
command, args = "help", []
|
|
98
|
+
self.full_namespace = full_namespace # store for help. clean:log => log
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
dispatch(command, args.dup, nil, config)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def printing_commands
|
|
105
|
+
namespaced_commands
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def executable
|
|
109
|
+
"jets #{full_namespace || command_name}"
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Use Jets' default banner.
|
|
113
|
+
def banner(*)
|
|
114
|
+
command_name = full_namespace ? full_namespace.split(':').last : command_name
|
|
115
|
+
command = commands[command_name]
|
|
116
|
+
options_arg = '[options]' unless command && command.options.empty?
|
|
117
|
+
output = "#{executable} #{arguments.map(&:usage).join(' ')} #{options_arg}".squish
|
|
118
|
+
" #{output}" # add 2 more spaces in front
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# Sets the base_name taking into account the current class namespace.
|
|
122
|
+
#
|
|
123
|
+
# Jets::Command::TestCommand.base_name # => 'jets'
|
|
124
|
+
def base_name
|
|
125
|
+
@base_name ||= if base = name.to_s.split("::").first
|
|
126
|
+
base.underscore
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
# Return command name without namespaces.
|
|
131
|
+
#
|
|
132
|
+
# Jets::Command::TestCommand.command_name # => 'test'
|
|
133
|
+
def command_name
|
|
134
|
+
@command_name ||= if command = name.to_s.split("::").last
|
|
135
|
+
command.chomp!("Command")
|
|
136
|
+
command.underscore
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# Path to lookup a USAGE description in a file.
|
|
141
|
+
def usage_path
|
|
142
|
+
if default_command_root
|
|
143
|
+
path = File.join(default_command_root, "USAGE")
|
|
144
|
+
path if File.exist?(path)
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
# Default file root to place extra files a command might need, placed
|
|
149
|
+
# one folder above the command file.
|
|
150
|
+
#
|
|
151
|
+
# For a Jets::Command::TestCommand placed in <tt>jets/command/test_command.rb</tt>
|
|
152
|
+
# would return <tt>jets/test</tt>.
|
|
153
|
+
def default_command_root
|
|
154
|
+
path = File.expand_path(relative_command_path, __dir__)
|
|
155
|
+
path if File.exist?(path)
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
private
|
|
159
|
+
# Allow the command method to be called perform.
|
|
160
|
+
def create_command(meth)
|
|
161
|
+
if meth == "perform"
|
|
162
|
+
alias_method command_name, meth
|
|
163
|
+
else
|
|
164
|
+
# Prevent exception about command without usage.
|
|
165
|
+
# Some commands define their documentation differently.
|
|
166
|
+
@usage ||= ""
|
|
167
|
+
@desc ||= ""
|
|
168
|
+
|
|
169
|
+
super
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
def command_root_namespace
|
|
174
|
+
(namespace.split(":") - %w(jets)).join(":")
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def relative_command_path
|
|
178
|
+
File.join("../commands", *command_root_namespace.split(":"))
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
def namespaced_commands
|
|
182
|
+
commands.keys.map do |key|
|
|
183
|
+
if command_root_namespace.match?(/(\A|:)#{key}\z/)
|
|
184
|
+
command_root_namespace
|
|
185
|
+
else
|
|
186
|
+
"#{command_root_namespace}:#{key}"
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
def help
|
|
193
|
+
if full_namespace = self.class.full_namespace
|
|
194
|
+
command_name = full_namespace.split(':').last # clean:log => log
|
|
195
|
+
self.class.command_help(shell, command_name)
|
|
196
|
+
elsif command_name = self.class.command_name
|
|
197
|
+
self.class.command_help(shell, command_name)
|
|
198
|
+
else
|
|
199
|
+
super
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "active_support"
|
|
4
|
+
|
|
5
|
+
module Jets
|
|
6
|
+
module Command
|
|
7
|
+
module Behavior # :nodoc:
|
|
8
|
+
extend ActiveSupport::Concern
|
|
9
|
+
|
|
10
|
+
class_methods do
|
|
11
|
+
# Remove the color from output.
|
|
12
|
+
def no_color!
|
|
13
|
+
Thor::Base.shell = Thor::Shell::Basic
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Track all command subclasses.
|
|
17
|
+
def subclasses
|
|
18
|
+
@subclasses ||= []
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
# Prints a list of generators.
|
|
23
|
+
def print_list(base, namespaces)
|
|
24
|
+
return if namespaces.empty?
|
|
25
|
+
puts "#{base.camelize}:"
|
|
26
|
+
|
|
27
|
+
namespaces.each do |namespace|
|
|
28
|
+
puts(" #{namespace}")
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
puts
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Receives namespaces in an array and tries to find matching generators
|
|
35
|
+
# in the load path.
|
|
36
|
+
def lookup(namespaces)
|
|
37
|
+
paths = namespaces_to_paths(namespaces)
|
|
38
|
+
paths.each do |raw_path|
|
|
39
|
+
lookup_paths.each do |base|
|
|
40
|
+
path = "#{base}/#{raw_path}_#{command_type}"
|
|
41
|
+
|
|
42
|
+
begin
|
|
43
|
+
require path
|
|
44
|
+
return
|
|
45
|
+
rescue LoadError => e
|
|
46
|
+
raise unless /#{Regexp.escape(path)}$/.match?(e.message)
|
|
47
|
+
rescue Exception => e
|
|
48
|
+
warn "[WARNING] Could not load #{command_type} #{path.inspect}. Error: #{e.message}.\n#{e.backtrace.join("\n")}"
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# This will try to load any command in the load path to show in help.
|
|
55
|
+
def lookup!
|
|
56
|
+
$LOAD_PATH.each do |base|
|
|
57
|
+
Dir[File.join(base, *file_lookup_paths)].each do |path|
|
|
58
|
+
path = path.delete_prefix("#{base}/")
|
|
59
|
+
require path
|
|
60
|
+
rescue Exception
|
|
61
|
+
# No problem
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Convert namespaces to paths by replacing ":" for "/" and adding
|
|
67
|
+
# an extra lookup. For example, "jets:model" should be searched
|
|
68
|
+
# in both: "jets/model/model_generator" and "jets/model_generator".
|
|
69
|
+
def namespaces_to_paths(namespaces)
|
|
70
|
+
paths = []
|
|
71
|
+
namespaces.each do |namespace|
|
|
72
|
+
pieces = namespace.split(":")
|
|
73
|
+
path = pieces.join("/")
|
|
74
|
+
paths << "#{path}/#{pieces.last}"
|
|
75
|
+
paths << path
|
|
76
|
+
end
|
|
77
|
+
paths.uniq!
|
|
78
|
+
paths
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "active_support"
|
|
4
|
+
require "active_support/core_ext/class/attribute"
|
|
5
|
+
|
|
6
|
+
module Jets
|
|
7
|
+
module Command
|
|
8
|
+
module EnvironmentArgument # :nodoc:
|
|
9
|
+
extend ActiveSupport::Concern
|
|
10
|
+
|
|
11
|
+
included do
|
|
12
|
+
no_commands do
|
|
13
|
+
class_attribute :environment_desc, default: "Specifies the environment to run this #{self.command_name} under (test/development/production)."
|
|
14
|
+
end
|
|
15
|
+
class_option :environment, aliases: "-e", type: :string, desc: environment_desc
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
def extract_environment_option_from_argument(default_environment: Jets::Command.environment)
|
|
20
|
+
if options[:environment]
|
|
21
|
+
self.options = options.merge(environment: acceptable_environment(options[:environment]))
|
|
22
|
+
else
|
|
23
|
+
self.options = options.merge(environment: default_environment)
|
|
24
|
+
end
|
|
25
|
+
# JETS_ENV needs to be set before config/application is required.
|
|
26
|
+
ENV["JETS_ENV"] = options[:environment]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def acceptable_environment(env = nil)
|
|
30
|
+
if available_environments.include? env
|
|
31
|
+
env
|
|
32
|
+
else
|
|
33
|
+
%w( production development test ).detect { |e| /^#{env}/.match?(e) } || env
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def available_environments
|
|
38
|
+
Dir["config/environments/*.rb"].map { |fname| File.basename(fname, ".*") }
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|