jets_bb_fork 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.circleci/bin/commit_docs.sh +26 -0
- data/.circleci/config.yml +126 -0
- data/.codebuild/README.md +68 -0
- data/.codebuild/bin/jets +3 -0
- data/.codebuild/buildspec-base.yml +14 -0
- data/.codebuild/integration.sh +72 -0
- data/.codebuild/jets.postman_collection.json +323 -0
- data/.codebuild/scripts/install-docker.sh +12 -0
- data/.codebuild/scripts/install-dynamodb-local.sh +22 -0
- data/.codebuild/scripts/install-java.sh +22 -0
- data/.codebuild/scripts/install-node.sh +4 -0
- data/.github/ISSUE_TEMPLATE.md +7 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +84 -0
- data/.github/ISSUE_TEMPLATE/documentation.md +27 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +64 -0
- data/.github/ISSUE_TEMPLATE/question.md +16 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +42 -0
- data/.gitignore +24 -0
- data/.gitmodules +0 -0
- data/.python-version +1 -0
- data/.rspec +4 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +734 -0
- data/CONDUCT.md +1 -0
- data/CONTRIBUTING.md +1 -0
- data/Dockerfile +16 -0
- data/Dockerfile.base +53 -0
- data/Gemfile +14 -0
- data/Guardfile +22 -0
- data/LICENSE.txt +22 -0
- data/Procfile +2 -0
- data/README.md +203 -0
- data/Rakefile +24 -0
- data/backers.md +16 -0
- data/bin/release +9 -0
- data/buildspec.yml +18 -0
- data/exe/jets_bb_fork +14 -0
- data/jets.gemspec +68 -0
- data/lib/jets.rb +27 -0
- data/lib/jets/application.rb +216 -0
- data/lib/jets/application/defaults.rb +172 -0
- data/lib/jets/autoloaders.rb +97 -0
- data/lib/jets/aws_info.rb +113 -0
- data/lib/jets/aws_services.rb +65 -0
- data/lib/jets/aws_services/global_memoist.rb +57 -0
- data/lib/jets/aws_services/s3_bucket.rb +34 -0
- data/lib/jets/aws_services/stack_status.rb +59 -0
- data/lib/jets/booter.rb +119 -0
- data/lib/jets/builders/code_builder.rb +399 -0
- data/lib/jets/builders/code_size.rb +57 -0
- data/lib/jets/builders/gem_replacer.rb +76 -0
- data/lib/jets/builders/handler_generator.rb +186 -0
- data/lib/jets/builders/lambda_layer.rb +69 -0
- data/lib/jets/builders/md5.rb +60 -0
- data/lib/jets/builders/md5_zip.rb +61 -0
- data/lib/jets/builders/purger.rb +35 -0
- data/lib/jets/builders/rack_packager.rb +51 -0
- data/lib/jets/builders/rackup_wrappers/rackup +19 -0
- data/lib/jets/builders/rackup_wrappers/rackup.rb +7 -0
- data/lib/jets/builders/reconfigure_rails.rb +114 -0
- data/lib/jets/builders/reconfigure_rails/config/initializers/jets.rb +16 -0
- data/lib/jets/builders/ruby_packager.rb +207 -0
- data/lib/jets/builders/shim_vars/app.rb +78 -0
- data/lib/jets/builders/shim_vars/base.rb +25 -0
- data/lib/jets/builders/shim_vars/shared.rb +37 -0
- data/lib/jets/builders/templates/handler.rb +12 -0
- data/lib/jets/builders/tidy.rb +107 -0
- data/lib/jets/builders/util.rb +31 -0
- data/lib/jets/bundle.rb +82 -0
- data/lib/jets/camelizer.rb +71 -0
- data/lib/jets/cfn/builders/api_deployment_builder.rb +63 -0
- data/lib/jets/cfn/builders/api_gateway_builder.rb +157 -0
- data/lib/jets/cfn/builders/base_child_builder.rb +75 -0
- data/lib/jets/cfn/builders/controller_builder.rb +42 -0
- data/lib/jets/cfn/builders/function_builder.rb +14 -0
- data/lib/jets/cfn/builders/interface.rb +137 -0
- data/lib/jets/cfn/builders/job_builder.rb +14 -0
- data/lib/jets/cfn/builders/paged.rb +37 -0
- data/lib/jets/cfn/builders/parent_builder.rb +100 -0
- data/lib/jets/cfn/builders/rule_builder.rb +24 -0
- data/lib/jets/cfn/builders/shared_builder.rb +14 -0
- data/lib/jets/cfn/ship.rb +185 -0
- data/lib/jets/cfn/status.rb +212 -0
- data/lib/jets/cfn/upload.rb +139 -0
- data/lib/jets/cli.rb +194 -0
- data/lib/jets/commands/base.rb +146 -0
- data/lib/jets/commands/build.rb +234 -0
- data/lib/jets/commands/call.rb +169 -0
- data/lib/jets/commands/call/anonymous_guesser.rb +96 -0
- data/lib/jets/commands/call/autoload_guesser.rb +136 -0
- data/lib/jets/commands/call/base_guesser.rb +60 -0
- data/lib/jets/commands/call/guesser.rb +48 -0
- data/lib/jets/commands/clean.rb +19 -0
- data/lib/jets/commands/clean/base.rb +24 -0
- data/lib/jets/commands/clean/build.rb +13 -0
- data/lib/jets/commands/clean/log.rb +107 -0
- data/lib/jets/commands/console.rb +12 -0
- data/lib/jets/commands/db.rb +13 -0
- data/lib/jets/commands/db/environment-task.rake +3 -0
- data/lib/jets/commands/db/tasks.rb +44 -0
- data/lib/jets/commands/dbconsole.rb +131 -0
- data/lib/jets/commands/delete.rb +143 -0
- data/lib/jets/commands/deploy.rb +141 -0
- data/lib/jets/commands/dynamodb.rb +19 -0
- data/lib/jets/commands/dynamodb/migrate.rb +9 -0
- data/lib/jets/commands/dynamodb/migrator.rb +36 -0
- data/lib/jets/commands/gems.rb +21 -0
- data/lib/jets/commands/help.rb +9 -0
- data/lib/jets/commands/help/build.md +6 -0
- data/lib/jets/commands/help/call.md +61 -0
- data/lib/jets/commands/help/clean/build.md +5 -0
- data/lib/jets/commands/help/clean/log.md +5 -0
- data/lib/jets/commands/help/console.md +18 -0
- data/lib/jets/commands/help/db/generate.md +8 -0
- data/lib/jets/commands/help/dbconsole.md +9 -0
- data/lib/jets/commands/help/delete.md +22 -0
- data/lib/jets/commands/help/deploy.md +32 -0
- data/lib/jets/commands/help/destroy.md +16 -0
- data/lib/jets/commands/help/dynamodb/generate.md +52 -0
- data/lib/jets/commands/help/dynamodb/migrate.md +4 -0
- data/lib/jets/commands/help/gems/check.md +8 -0
- data/lib/jets/commands/help/generate.md +22 -0
- data/lib/jets/commands/help/import/rack.md +13 -0
- data/lib/jets/commands/help/import/rails.md +11 -0
- data/lib/jets/commands/help/new.md +42 -0
- data/lib/jets/commands/help/routes.md +16 -0
- data/lib/jets/commands/help/runner.md +17 -0
- data/lib/jets/commands/help/server.md +15 -0
- data/lib/jets/commands/help/status.md +14 -0
- data/lib/jets/commands/help/upgrade.md +5 -0
- data/lib/jets/commands/help/url.md +6 -0
- data/lib/jets/commands/import.rb +12 -0
- data/lib/jets/commands/import/base.rb +49 -0
- data/lib/jets/commands/import/cheatsheet.rb +35 -0
- data/lib/jets/commands/import/rack.rb +16 -0
- data/lib/jets/commands/import/rails.rb +74 -0
- data/lib/jets/commands/import/sequence.rb +90 -0
- data/lib/jets/commands/import/templates/config/database.yml +26 -0
- data/lib/jets/commands/import/templates/submodules-cheatsheet.md +89 -0
- data/lib/jets/commands/main.rb +157 -0
- data/lib/jets/commands/markdown/creator.rb +58 -0
- data/lib/jets/commands/markdown/index.rb +27 -0
- data/lib/jets/commands/markdown/page.rb +125 -0
- data/lib/jets/commands/markdown/shell.rb +11 -0
- data/lib/jets/commands/new.rb +157 -0
- data/lib/jets/commands/rake_command.rb +61 -0
- data/lib/jets/commands/rake_tasks.rb +46 -0
- data/lib/jets/commands/runner.rb +16 -0
- data/lib/jets/commands/sequence.rb +99 -0
- data/lib/jets/commands/stack_info.rb +30 -0
- data/lib/jets/commands/templates/skeleton/.gitignore +12 -0
- data/lib/jets/commands/templates/skeleton/.jetskeep +1 -0
- data/lib/jets/commands/templates/skeleton/.rspec +3 -0
- data/lib/jets/commands/templates/skeleton/Gemfile.tt +38 -0
- data/lib/jets/commands/templates/skeleton/Procfile +7 -0
- data/lib/jets/commands/templates/skeleton/README.md +11 -0
- data/lib/jets/commands/templates/skeleton/Rakefile +2 -0
- data/lib/jets/commands/templates/skeleton/app/controllers/application_controller.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/helpers/application_helper.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/jobs/application_job.rb +4 -0
- data/lib/jets/commands/templates/skeleton/app/models/application_item.rb +2 -0
- data/lib/jets/commands/templates/skeleton/app/models/application_record.rb +3 -0
- data/lib/jets/commands/templates/skeleton/app/views/layouts/application.html.erb.tt +25 -0
- data/lib/jets/commands/templates/skeleton/config.ru +5 -0
- data/lib/jets/commands/templates/skeleton/config/application.rb.tt +67 -0
- data/lib/jets/commands/templates/skeleton/config/database.yml.tt +26 -0
- data/lib/jets/commands/templates/skeleton/config/dynamodb.yml +22 -0
- data/lib/jets/commands/templates/skeleton/config/environments/development.rb +7 -0
- data/lib/jets/commands/templates/skeleton/config/environments/production.rb +9 -0
- data/lib/jets/commands/templates/skeleton/config/environments/test.rb +7 -0
- data/lib/jets/commands/templates/skeleton/config/routes.rb +9 -0
- data/lib/jets/commands/templates/skeleton/db/.gitkeep +0 -0
- data/lib/jets/commands/templates/skeleton/public/404.html +67 -0
- data/lib/jets/commands/templates/skeleton/public/422.html +67 -0
- data/lib/jets/commands/templates/skeleton/public/500.html +66 -0
- data/lib/jets/commands/templates/skeleton/public/favicon.ico +0 -0
- data/lib/jets/commands/templates/skeleton/public/index.html.tt +91 -0
- data/lib/jets/commands/templates/skeleton/spec/controllers/posts_controller_spec.rb +15 -0
- data/lib/jets/commands/templates/skeleton/spec/fixtures/payloads/posts-index.json +51 -0
- data/lib/jets/commands/templates/skeleton/spec/fixtures/payloads/posts-show.json +53 -0
- data/lib/jets/commands/templates/skeleton/spec/spec_helper.rb.tt +30 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/application.js.tt +14 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/packs/theme.scss.tt +24 -0
- data/lib/jets/commands/templates/webpacker/app/javascript/src/jets/crud.js +87 -0
- data/lib/jets/commands/upgrade.rb +145 -0
- data/lib/jets/commands/upgrade/templates/bin/webpack +19 -0
- data/lib/jets/commands/upgrade/templates/bin/webpack-dev-server +19 -0
- data/lib/jets/commands/url.rb +68 -0
- data/lib/jets/commands/webpacker_template.rb +18 -0
- data/lib/jets/controller.rb +3 -0
- data/lib/jets/controller/base.rb +108 -0
- data/lib/jets/controller/callbacks.rb +68 -0
- data/lib/jets/controller/cookies.rb +38 -0
- data/lib/jets/controller/cookies/jar.rb +269 -0
- data/lib/jets/controller/layout.rb +17 -0
- data/lib/jets/controller/middleware/cors.rb +60 -0
- data/lib/jets/controller/middleware/local.rb +116 -0
- data/lib/jets/controller/middleware/local/api_gateway.rb +93 -0
- data/lib/jets/controller/middleware/local/mimic_aws_call.rb +38 -0
- data/lib/jets/controller/middleware/local/route_matcher.rb +106 -0
- data/lib/jets/controller/middleware/main.rb +46 -0
- data/lib/jets/controller/middleware/reloader.rb +15 -0
- data/lib/jets/controller/middleware/webpacker_setup.rb +6 -0
- data/lib/jets/controller/params.rb +87 -0
- data/lib/jets/controller/rack/adapter.rb +88 -0
- data/lib/jets/controller/rack/env.rb +105 -0
- data/lib/jets/controller/redirection.rb +55 -0
- data/lib/jets/controller/rendering.rb +79 -0
- data/lib/jets/controller/rendering/rack_renderer.rb +250 -0
- data/lib/jets/controller/request.rb +29 -0
- data/lib/jets/controller/response.rb +61 -0
- data/lib/jets/controller/stage.rb +33 -0
- data/lib/jets/core.rb +149 -0
- data/lib/jets/core_ext/kernel.rb +13 -0
- data/lib/jets/db.rb +15 -0
- data/lib/jets/dotenv.rb +48 -0
- data/lib/jets/dotenv/ssm.rb +48 -0
- data/lib/jets/erb.rb +51 -0
- data/lib/jets/generator.rb +48 -0
- data/lib/jets/generator/templates/erb/controller/view.html.erb +2 -0
- data/lib/jets/generator/templates/erb/scaffold/_form.html.erb +39 -0
- data/lib/jets/generator/templates/erb/scaffold/edit.html.erb +6 -0
- data/lib/jets/generator/templates/erb/scaffold/index.html.erb +29 -0
- data/lib/jets/generator/templates/erb/scaffold/new.html.erb +5 -0
- data/lib/jets/generator/templates/erb/scaffold/show.html.erb +9 -0
- data/lib/jets/generator/templates/rails/assets/javascript.js +2 -0
- data/lib/jets/generator/templates/rails/assets/stylesheet.css +4 -0
- data/lib/jets/generator/templates/rails/controller/controller.rb +13 -0
- data/lib/jets/generator/templates/rails/helper/helper.rb +4 -0
- data/lib/jets/generator/templates/rails/scaffold/scaffold.css +80 -0
- data/lib/jets/generator/templates/rails/scaffold_controller/api_controller.rb +62 -0
- data/lib/jets/generator/templates/rails/scaffold_controller/controller.rb +79 -0
- data/lib/jets/inflections.rb +32 -0
- data/lib/jets/internal/app/controllers/jets/mailers_controller.rb +97 -0
- data/lib/jets/internal/app/controllers/jets/public_controller.rb +31 -0
- data/lib/jets/internal/app/controllers/jets/rack_controller.rb +25 -0
- data/lib/jets/internal/app/functions/jets/base_path.rb +157 -0
- data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +9 -0
- data/lib/jets/internal/app/jobs/jets/preheat_job.rb +70 -0
- data/lib/jets/internal/app/shared/functions/jets/s3_bucket_config.rb +43 -0
- data/lib/jets/internal/app/views/jets/mailers/email.html.erb +145 -0
- data/lib/jets/internal/app/views/jets/mailers/index.html.erb +8 -0
- data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +6 -0
- data/lib/jets/internal/turbines/jets/mailer.rb +51 -0
- data/lib/jets/job/base.rb +39 -0
- data/lib/jets/job/dsl.rb +40 -0
- data/lib/jets/job/dsl/dynamodb_event.rb +65 -0
- data/lib/jets/job/dsl/event_source_mapping.rb +11 -0
- data/lib/jets/job/dsl/iot_event.rb +24 -0
- data/lib/jets/job/dsl/kinesis_event.rb +46 -0
- data/lib/jets/job/dsl/log_event.rb +15 -0
- data/lib/jets/job/dsl/rule_event.rb +75 -0
- data/lib/jets/job/dsl/s3_event.rb +36 -0
- data/lib/jets/job/dsl/sns_event.rb +54 -0
- data/lib/jets/job/dsl/sqs_event.rb +96 -0
- data/lib/jets/job/helpers/kinesis_event_helper.rb +13 -0
- data/lib/jets/job/helpers/log_event_helper.rb +17 -0
- data/lib/jets/job/helpers/s3_event_helper.rb +13 -0
- data/lib/jets/klass.rb +109 -0
- data/lib/jets/lambda/dsl.rb +419 -0
- data/lib/jets/lambda/function.rb +29 -0
- data/lib/jets/lambda/function_constructor.rb +55 -0
- data/lib/jets/lambda/functions.rb +34 -0
- data/lib/jets/lambda/task.rb +111 -0
- data/lib/jets/logger.rb +21 -0
- data/lib/jets/mega/hash_converter.rb +25 -0
- data/lib/jets/mega/request.rb +139 -0
- data/lib/jets/mega/request/source.rb +21 -0
- data/lib/jets/middleware.rb +33 -0
- data/lib/jets/middleware/configurator.rb +84 -0
- data/lib/jets/middleware/default_stack.rb +51 -0
- data/lib/jets/middleware/layer.rb +34 -0
- data/lib/jets/middleware/stack.rb +77 -0
- data/lib/jets/naming.rb +49 -0
- data/lib/jets/overrides/lambda.rb +1 -0
- data/lib/jets/overrides/lambda/marshaller.rb +31 -0
- data/lib/jets/overrides/rails.rb +4 -0
- data/lib/jets/overrides/rails/asset_tag_helper.rb +114 -0
- data/lib/jets/overrides/rails/common_methods.rb +13 -0
- data/lib/jets/overrides/rails/rendering_helper.rb +26 -0
- data/lib/jets/overrides/rails/url_helper.rb +25 -0
- data/lib/jets/poly_fun.rb +73 -0
- data/lib/jets/poly_fun/base_executor.rb +125 -0
- data/lib/jets/poly_fun/lambda_executor.rb +16 -0
- data/lib/jets/poly_fun/node_error.rb +8 -0
- data/lib/jets/poly_fun/node_executor.rb +54 -0
- data/lib/jets/poly_fun/python_error.rb +8 -0
- data/lib/jets/poly_fun/python_executor.rb +23 -0
- data/lib/jets/preheat.rb +117 -0
- data/lib/jets/processors/deducer.rb +65 -0
- data/lib/jets/processors/main_processor.rb +61 -0
- data/lib/jets/rack_server.rb +86 -0
- data/lib/jets/rdoc.rb +30 -0
- data/lib/jets/resource.rb +71 -0
- data/lib/jets/resource/api_gateway/base_path/function.rb +42 -0
- data/lib/jets/resource/api_gateway/base_path/mapping.rb +44 -0
- data/lib/jets/resource/api_gateway/base_path/role.rb +76 -0
- data/lib/jets/resource/api_gateway/cors.rb +61 -0
- data/lib/jets/resource/api_gateway/deployment.rb +78 -0
- data/lib/jets/resource/api_gateway/domain_name.rb +59 -0
- data/lib/jets/resource/api_gateway/method.rb +98 -0
- data/lib/jets/resource/api_gateway/resource.rb +101 -0
- data/lib/jets/resource/api_gateway/rest_api.rb +56 -0
- data/lib/jets/resource/api_gateway/rest_api/change_detection.rb +42 -0
- data/lib/jets/resource/api_gateway/rest_api/logical_id.rb +63 -0
- data/lib/jets/resource/api_gateway/rest_api/routes.rb +7 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +8 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/base.rb +130 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/to.rb +29 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change/variable.rb +39 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/collision.rb +121 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/collision/variable_exception.rb +7 -0
- data/lib/jets/resource/associated.rb +37 -0
- data/lib/jets/resource/base.rb +28 -0
- data/lib/jets/resource/child_stack/api_deployment.rb +56 -0
- data/lib/jets/resource/child_stack/api_gateway.rb +53 -0
- data/lib/jets/resource/child_stack/app_class.rb +107 -0
- data/lib/jets/resource/child_stack/base.rb +24 -0
- data/lib/jets/resource/child_stack/shared.rb +92 -0
- data/lib/jets/resource/config/config_rule.rb +74 -0
- data/lib/jets/resource/config/managed_rule.rb +15 -0
- data/lib/jets/resource/events/rule.rb +31 -0
- data/lib/jets/resource/iam/application_role.rb +27 -0
- data/lib/jets/resource/iam/base_role_definition.rb +47 -0
- data/lib/jets/resource/iam/class_role.rb +74 -0
- data/lib/jets/resource/iam/function_role.rb +54 -0
- data/lib/jets/resource/iam/managed_policy.rb +22 -0
- data/lib/jets/resource/iam/policy_document.rb +41 -0
- data/lib/jets/resource/iot/topic_rule.rb +34 -0
- data/lib/jets/resource/lambda/event_source_mapping.rb +31 -0
- data/lib/jets/resource/lambda/function.rb +214 -0
- data/lib/jets/resource/lambda/function/environment.rb +62 -0
- data/lib/jets/resource/lambda/gem_layer.rb +17 -0
- data/lib/jets/resource/lambda/layer_version.rb +44 -0
- data/lib/jets/resource/logs/subscription_filter.rb +31 -0
- data/lib/jets/resource/permission.rb +45 -0
- data/lib/jets/resource/replacer.rb +85 -0
- data/lib/jets/resource/route53/record_set.rb +70 -0
- data/lib/jets/resource/s3/bucket.rb +24 -0
- data/lib/jets/resource/sns/subscription.rb +29 -0
- data/lib/jets/resource/sns/topic.rb +35 -0
- data/lib/jets/resource/sns/topic_policy.rb +40 -0
- data/lib/jets/resource/sqs/queue.rb +21 -0
- data/lib/jets/resource/standardizer.rb +42 -0
- data/lib/jets/route.rb +166 -0
- data/lib/jets/router.rb +177 -0
- data/lib/jets/router/scope.rb +30 -0
- data/lib/jets/rule/base.rb +19 -0
- data/lib/jets/rule/dsl.rb +110 -0
- data/lib/jets/spec_helpers.rb +54 -0
- data/lib/jets/spec_helpers/params.rb +10 -0
- data/lib/jets/spec_helpers/request.rb +78 -0
- data/lib/jets/spec_helpers/response.rb +5 -0
- data/lib/jets/stack.rb +88 -0
- data/lib/jets/stack/builder.rb +43 -0
- data/lib/jets/stack/definition.rb +50 -0
- data/lib/jets/stack/depends.rb +34 -0
- data/lib/jets/stack/depends/item.rb +9 -0
- data/lib/jets/stack/function.rb +69 -0
- data/lib/jets/stack/main.rb +4 -0
- data/lib/jets/stack/main/dsl.rb +28 -0
- data/lib/jets/stack/main/dsl/base.rb +49 -0
- data/lib/jets/stack/main/dsl/cloudwatch.rb +19 -0
- data/lib/jets/stack/main/dsl/iam.rb +8 -0
- data/lib/jets/stack/main/dsl/lambda.rb +83 -0
- data/lib/jets/stack/main/dsl/s3.rb +12 -0
- data/lib/jets/stack/main/dsl/sns.rb +16 -0
- data/lib/jets/stack/main/dsl/sqs.rb +10 -0
- data/lib/jets/stack/output.rb +35 -0
- data/lib/jets/stack/output/dsl.rb +19 -0
- data/lib/jets/stack/output/lookup.rb +36 -0
- data/lib/jets/stack/parameter.rb +37 -0
- data/lib/jets/stack/parameter/dsl.rb +42 -0
- data/lib/jets/stack/resource.rb +31 -0
- data/lib/jets/stack/resource/dsl.rb +19 -0
- data/lib/jets/stack/s3_event.rb +87 -0
- data/lib/jets/tmp_loader.rb +52 -0
- data/lib/jets/turbine.rb +41 -0
- data/lib/jets/turbo.rb +55 -0
- data/lib/jets/turbo/database_yaml.rb +41 -0
- data/lib/jets/turbo/project/.gitignore +12 -0
- data/lib/jets/turbo/project/.jetskeep +1 -0
- data/lib/jets/turbo/project/Gemfile +16 -0
- data/lib/jets/turbo/project/Rakefile +2 -0
- data/lib/jets/turbo/project/app/controllers/application_controller.rb +2 -0
- data/lib/jets/turbo/project/app/helpers/application_helper.rb +2 -0
- data/lib/jets/turbo/project/app/jobs/application_job.rb +4 -0
- data/lib/jets/turbo/project/config.ru +5 -0
- data/lib/jets/turbo/project/config/application.rb +4 -0
- data/lib/jets/turbo/project/config/routes.rb +4 -0
- data/lib/jets/turbo/rails.rb +127 -0
- data/lib/jets/turbo/templates/config/database.yml +26 -0
- data/lib/jets/util.rb +38 -0
- data/lib/jets/version.rb +3 -0
- data/readme/prerelease.md +6 -0
- data/readme/testing.md +60 -0
- metadata +1004 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
require "thor"
|
|
2
|
+
|
|
3
|
+
module Jets::Commands
|
|
4
|
+
class Main < Base
|
|
5
|
+
|
|
6
|
+
class_option :noop, type: :boolean
|
|
7
|
+
|
|
8
|
+
desc "build", "Builds and packages project for AWS Lambda"
|
|
9
|
+
long_desc Help.text(:build)
|
|
10
|
+
option :templates, type: :boolean, default: false, desc: "Only build the CloudFormation templates. Skip code building"
|
|
11
|
+
def build
|
|
12
|
+
Build.new(options).run
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
desc "deploy [environment]", "Builds and deploys project to AWS Lambda"
|
|
16
|
+
long_desc Help.text(:deploy)
|
|
17
|
+
# Note the environment is here to trick the Thor parser to allowing an
|
|
18
|
+
# environment parameter. It is not actually set here. It is set earlier
|
|
19
|
+
# in cli.rb: set_jets_env_from_cli_arg!
|
|
20
|
+
def deploy(environment=nil)
|
|
21
|
+
Deploy.new(options).run
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
desc "delete", "Delete the Jets project and all its resources"
|
|
25
|
+
long_desc Help.text(:delete)
|
|
26
|
+
option :sure, type: :boolean, desc: "Skip are you sure prompt."
|
|
27
|
+
option :wait, type: :boolean, default: true, desc: "Wait for stack deletion to complete."
|
|
28
|
+
# Note the environment is here to trick the Thor parser to allowing an
|
|
29
|
+
# environment parameter. It is not actually set here. It is set earlier
|
|
30
|
+
# in cli.rb: set_jets_env_from_cli_arg!
|
|
31
|
+
def delete(environment=nil)
|
|
32
|
+
Delete.new(options).run
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
desc "server", "Runs a local server that mimics API Gateway for development"
|
|
36
|
+
long_desc Help.text(:server)
|
|
37
|
+
option :port, default: "8888", desc: "use PORT"
|
|
38
|
+
option :host, default: "127.0.0.1", desc: "listen on HOST"
|
|
39
|
+
def server
|
|
40
|
+
o = options
|
|
41
|
+
command = "bundle exec rackup --port #{o[:port]} --host #{o[:host]}"
|
|
42
|
+
puts "=> #{command}".color(:green)
|
|
43
|
+
puts Jets::Booter.message
|
|
44
|
+
Jets::Booter.check_config_ru!
|
|
45
|
+
Jets::RackServer.start(options) unless ENV['JETS_RACK'] == '0' # rack server runs in background by default
|
|
46
|
+
Bundler.with_clean_env do
|
|
47
|
+
system(command)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
desc "routes", "Print out your application routes"
|
|
52
|
+
long_desc Help.text(:routes)
|
|
53
|
+
def routes
|
|
54
|
+
puts Jets::Router.routes_help
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
desc "console", "REPL console with Jets environment loaded"
|
|
58
|
+
long_desc Help.text(:console)
|
|
59
|
+
def console
|
|
60
|
+
Console.run
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
desc "runner", "Run Ruby code in the context of Jets app non-interactively"
|
|
64
|
+
long_desc Help.text(:runner)
|
|
65
|
+
def runner(code)
|
|
66
|
+
Runner.run(code)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
desc "dbconsole", "Starts DB REPL console"
|
|
70
|
+
long_desc Help.text(:dbconsole)
|
|
71
|
+
def dbconsole
|
|
72
|
+
Dbconsole.start(*args)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Command is called 'call' because invoke is a Thor keyword.
|
|
76
|
+
desc "call [function] [event]", "Call a lambda function on AWS or locally"
|
|
77
|
+
long_desc Help.text(:call)
|
|
78
|
+
option :invocation_type, default: "RequestResponse", desc: "RequestResponse, Event, or DryRun"
|
|
79
|
+
option :log_type, default: "Tail", desc: "Works if invocation_type set to RequestResponse"
|
|
80
|
+
option :qualifier, desc: "Lambda function version or alias name"
|
|
81
|
+
option :show_log, type: :boolean, desc: "Shows last 4KB of log in the x-amz-log-result header"
|
|
82
|
+
option :lambda_proxy, type: :boolean, default: true, desc: "Enables automatic Lambda proxy transformation of the event payload"
|
|
83
|
+
option :guess, type: :boolean, default: true, desc: "Enables guess mode. Uses inference to allows use of all dashes to specify functions. Guess mode verifies that the function exists in the code base."
|
|
84
|
+
option :local, type: :boolean, desc: "Enables local mode. Instead of invoke the AWS Lambda function, the method gets called locally with current app code. With local mode guess mode is always used."
|
|
85
|
+
def call(function_name, payload='')
|
|
86
|
+
# Printing to stdout can mangle up the response when piping
|
|
87
|
+
# the value to jq. For example:
|
|
88
|
+
#
|
|
89
|
+
# `jets call --local .. | jq`
|
|
90
|
+
#
|
|
91
|
+
# By redirecting stderr we can use jq safely.
|
|
92
|
+
#
|
|
93
|
+
$stdout.sync = true
|
|
94
|
+
$stderr.sync = true
|
|
95
|
+
$stdout = $stderr # jets call operation
|
|
96
|
+
Call.new(function_name, payload, options).run
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
desc "generate [type] [args]", "Generates things like scaffolds"
|
|
100
|
+
long_desc Help.text(:generate)
|
|
101
|
+
def generate(generator, *args)
|
|
102
|
+
Jets::Generator.invoke(generator, *args)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
desc "degenerate [type] [args]", "Destroys things like scaffolds"
|
|
106
|
+
long_desc Help.text(:degenerate)
|
|
107
|
+
def degenerate(generator, *args)
|
|
108
|
+
Jets::Generator.revoke(generator, *args)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
desc "status", "Shows the current status of the Jets app"
|
|
112
|
+
long_desc Help.text(:status)
|
|
113
|
+
def status
|
|
114
|
+
Jets::Cfn::Status.new(options).run
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
desc "url", "App url if routes are defined"
|
|
118
|
+
long_desc Help.text(:url)
|
|
119
|
+
def url
|
|
120
|
+
Jets::Commands::Url.new(options).display
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
desc "secret", "Generates secret"
|
|
124
|
+
long_desc Help.text(:secret)
|
|
125
|
+
def secret
|
|
126
|
+
puts SecureRandom.hex(64)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
desc "middleware", "Prints list of middleware"
|
|
130
|
+
long_desc Help.text(:middleware)
|
|
131
|
+
def middleware
|
|
132
|
+
stack = Jets.application.middlewares
|
|
133
|
+
stack.middlewares.each do |middleware|
|
|
134
|
+
puts "use #{middleware.name}"
|
|
135
|
+
end
|
|
136
|
+
puts "run #{Jets.application.endpoint}"
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
desc "upgrade", "Upgrade Jets"
|
|
140
|
+
long_desc Help.text(:upgrade)
|
|
141
|
+
def upgrade
|
|
142
|
+
Jets::Commands::Upgrade.new(options).run
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
desc "version", "Prints Jets version"
|
|
146
|
+
long_desc Help.text(:version)
|
|
147
|
+
def version
|
|
148
|
+
puts Jets.version
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
long_desc Help.text(:new)
|
|
152
|
+
Jets::Commands::New.cli_options.each do |args|
|
|
153
|
+
option(*args)
|
|
154
|
+
end
|
|
155
|
+
register(Jets::Commands::New, "new", "new", "Creates a starter skeleton jets project")
|
|
156
|
+
end
|
|
157
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module Jets::Commands::Markdown
|
|
2
|
+
class Creator
|
|
3
|
+
cattr_accessor :mute
|
|
4
|
+
|
|
5
|
+
def self.create_all
|
|
6
|
+
clean
|
|
7
|
+
new.create_all
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def self.clean
|
|
11
|
+
FileUtils.rm_rf("docs/_reference")
|
|
12
|
+
FileUtils.rm_f("docs/reference.md")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def cli_classes
|
|
16
|
+
Jets::Commands::Base.namespaced_commands.map do |full_command|
|
|
17
|
+
# IE of full_command: dynamodb:generate
|
|
18
|
+
Jets::CLI.new([full_command]).lookup(full_command)
|
|
19
|
+
end.uniq
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def create_all
|
|
23
|
+
create_index
|
|
24
|
+
|
|
25
|
+
cli_classes.each do |cli_class|
|
|
26
|
+
# cli_class examples:
|
|
27
|
+
# Jets::Commands::Main
|
|
28
|
+
# Jets::Commands::Db
|
|
29
|
+
# Jets::Commands::Dynamodb::Migrate
|
|
30
|
+
cli_class.commands.each do |command|
|
|
31
|
+
command_name = command.first
|
|
32
|
+
|
|
33
|
+
page = Page.new(cli_class: cli_class, command_name: command_name)
|
|
34
|
+
create_page(page)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def create_page(page)
|
|
40
|
+
puts "Creating page: #{page.path}..."
|
|
41
|
+
FileUtils.mkdir_p(File.dirname(page.path))
|
|
42
|
+
IO.write(page.path, page.doc)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def create_index
|
|
46
|
+
create_include_reference
|
|
47
|
+
page = Index.new
|
|
48
|
+
FileUtils.mkdir_p(File.dirname(page.path))
|
|
49
|
+
puts "Creating index: #{page.path}"
|
|
50
|
+
IO.write(page.path, page.doc)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def create_include_reference
|
|
54
|
+
path = "docs/_includes/reference.md"
|
|
55
|
+
IO.write(path, "Generic tool description. Please edit #{path} with a description.") unless File.exist?(path)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Jets::Commands::Markdown
|
|
2
|
+
class Index
|
|
3
|
+
def path
|
|
4
|
+
"docs/reference.md"
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def command_list
|
|
8
|
+
commands = Jets::Commands::Base.namespaced_commands.sort.reject {|c| c.include?('help') }
|
|
9
|
+
commands.map do |full_command|
|
|
10
|
+
# Example: [jets deploy]({% link _reference/jets-deploy.md %})
|
|
11
|
+
link = full_command.gsub(':','-')
|
|
12
|
+
"* [jets #{full_command}]({% link _reference/jets-#{link}.md %})"
|
|
13
|
+
end.join("\n")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def doc
|
|
17
|
+
<<-EOL
|
|
18
|
+
---
|
|
19
|
+
title: CLI Reference
|
|
20
|
+
---
|
|
21
|
+
{% include reference.md %}
|
|
22
|
+
|
|
23
|
+
#{command_list}
|
|
24
|
+
EOL
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
module Jets::Commands::Markdown
|
|
2
|
+
class Page
|
|
3
|
+
attr_reader :cli_name
|
|
4
|
+
def initialize(cli_class:, command_name:)
|
|
5
|
+
@cli_class = cli_class # IE: Jets::Commands::Main
|
|
6
|
+
@command_name = command_name # IE: generate
|
|
7
|
+
|
|
8
|
+
@cli_name = "jets"
|
|
9
|
+
@command = @cli_class.commands[@command_name]
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def usage
|
|
13
|
+
banner = @cli_class.send(:banner, @command) # banner is protected method
|
|
14
|
+
invoking_command = File.basename($0) # could be rspec, etc
|
|
15
|
+
banner.sub(invoking_command, cli_name)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def full_command
|
|
19
|
+
[namespace, @command_name].compact.join(':')
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def namespace
|
|
23
|
+
ns = @cli_class.to_s.sub('Jets::Commands::','').underscore.gsub('/','-')
|
|
24
|
+
ns == 'main' ? nil : ns
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def description
|
|
28
|
+
@command.description
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def options
|
|
32
|
+
shell = Shell.new
|
|
33
|
+
@cli_class.send(:class_options_help, shell, nil => @command.options.values)
|
|
34
|
+
text = shell.stdout.string
|
|
35
|
+
return "" if text.empty? # there are no options
|
|
36
|
+
|
|
37
|
+
lines = text.split("\n")[1..-1] # remove first line wihth "Options: "
|
|
38
|
+
lines.map! do |line|
|
|
39
|
+
# remove 2 leading spaces
|
|
40
|
+
line.sub(/^ /, '')
|
|
41
|
+
end
|
|
42
|
+
lines.join("\n")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Use command's long description as main description
|
|
46
|
+
def long_description
|
|
47
|
+
text = @command.long_description
|
|
48
|
+
return "" if text.nil? # empty description
|
|
49
|
+
|
|
50
|
+
lines = text.split("\n")
|
|
51
|
+
lines.map do |line|
|
|
52
|
+
# In the CLI help, we use 2 spaces to designate commands
|
|
53
|
+
# In Markdown we need 4 spaces.
|
|
54
|
+
line.sub(/^ \b/, ' ')
|
|
55
|
+
end.join("\n")
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def path
|
|
59
|
+
full_name = [cli_name, namespace, @command_name].compact.join('-')
|
|
60
|
+
"docs/_reference/#{full_name}.md"
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def doc
|
|
64
|
+
<<-EOL
|
|
65
|
+
#{front_matter}
|
|
66
|
+
#{usage_markdown}
|
|
67
|
+
#{long_desc_markdown}
|
|
68
|
+
#{options_markdown}
|
|
69
|
+
EOL
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def front_matter
|
|
73
|
+
command = [cli_name, full_command].compact.join(' ')
|
|
74
|
+
<<-EOL
|
|
75
|
+
---
|
|
76
|
+
title: #{command}
|
|
77
|
+
reference: true
|
|
78
|
+
---
|
|
79
|
+
EOL
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def usage_markdown
|
|
83
|
+
<<-EOL
|
|
84
|
+
## Usage
|
|
85
|
+
|
|
86
|
+
#{usage}
|
|
87
|
+
EOL
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def desc_markdown
|
|
91
|
+
<<-EOL
|
|
92
|
+
## Description
|
|
93
|
+
|
|
94
|
+
#{description}
|
|
95
|
+
EOL
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# If the Thor long_description is empty then use the description.
|
|
99
|
+
def long_desc_markdown
|
|
100
|
+
return desc_markdown if long_description.empty?
|
|
101
|
+
|
|
102
|
+
<<-EOL
|
|
103
|
+
## Description
|
|
104
|
+
|
|
105
|
+
#{description}.
|
|
106
|
+
|
|
107
|
+
#{long_description}
|
|
108
|
+
EOL
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# handles blank options
|
|
112
|
+
def options_markdown
|
|
113
|
+
return '' if options.empty?
|
|
114
|
+
|
|
115
|
+
<<-EOL
|
|
116
|
+
## Options
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
#{options}
|
|
120
|
+
```
|
|
121
|
+
EOL
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
end
|
|
125
|
+
end
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
module Jets::Commands
|
|
2
|
+
class New < Sequence
|
|
3
|
+
VALID_MODES = %w[html api job]
|
|
4
|
+
argument :project_folder
|
|
5
|
+
|
|
6
|
+
# Ugly, but when the class_option is only defined in the Thor::Group class
|
|
7
|
+
# it doesnt show up with jets new help :(
|
|
8
|
+
# If anyone knows how to fix this let me know.
|
|
9
|
+
def self.cli_options
|
|
10
|
+
[
|
|
11
|
+
[:bootstrap, type: :boolean, default: true, desc: "Install bootstrap css"], # same option in WebpackerTemplate
|
|
12
|
+
[:database, type: :string, default: 'mysql', desc: "Preconfigure database (options: mysql/postgresql)"],
|
|
13
|
+
[:force, type: :boolean, desc: "Bypass overwrite are you sure prompt for existing files."],
|
|
14
|
+
[:git, type: :boolean, default: true, desc: "Git initialize the project"],
|
|
15
|
+
[:mode, default: 'html', desc: "mode: #{VALID_MODES.join(',')}"],
|
|
16
|
+
[:repo, desc: "GitHub repo to use. Format: user/repo"],
|
|
17
|
+
[:webpacker, type: :boolean, default: true, desc: "Install webpacker"],
|
|
18
|
+
]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
cli_options.each do |args|
|
|
22
|
+
class_option(*args)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def set_initial_variables
|
|
26
|
+
@project_name = project_folder == '.' ? File.basename(Dir.pwd) : project_folder
|
|
27
|
+
|
|
28
|
+
# options is a frozen hash by Thor so cannot modify it.
|
|
29
|
+
# Also had trouble unfreezing it with .dup. So using instance variables instead
|
|
30
|
+
case options[:mode]
|
|
31
|
+
when 'html'
|
|
32
|
+
@bootstrap = options[:bootstrap]
|
|
33
|
+
@database = options[:database]
|
|
34
|
+
@webpacker = options[:webpacker]
|
|
35
|
+
when 'api'
|
|
36
|
+
@bootstrap = false
|
|
37
|
+
@database = options[:database]
|
|
38
|
+
@webpacker = false
|
|
39
|
+
when 'job'
|
|
40
|
+
@bootstrap = false
|
|
41
|
+
@database = false
|
|
42
|
+
@webpacker = false
|
|
43
|
+
else
|
|
44
|
+
puts "Invalid mode provided: #{@options[:mode].color(:red)}. Please pass in an valid mode: #{VALID_MODES.join(',').color(:green)}."
|
|
45
|
+
exit 1
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def create_project
|
|
50
|
+
options[:repo] ? clone_project : copy_project
|
|
51
|
+
|
|
52
|
+
destination_root = "#{Dir.pwd}/#{project_folder}"
|
|
53
|
+
self.destination_root = destination_root
|
|
54
|
+
FileUtils.cd("#{Dir.pwd}/#{project_folder}")
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def make_bin_executable
|
|
58
|
+
return unless File.exist?("bin")
|
|
59
|
+
chmod "bin", 0755 & ~File.umask, verbose: false
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def bundle_install
|
|
63
|
+
Bundler.with_clean_env do
|
|
64
|
+
system("BUNDLE_IGNORE_CONFIG=1 bundle install")
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def webpacker_install
|
|
69
|
+
return unless @webpacker
|
|
70
|
+
unless yarn_installed?
|
|
71
|
+
puts "Yarn is not installed or has not been detected. Please double check that yarn has been installed.".color(:red)
|
|
72
|
+
puts <<~EOL
|
|
73
|
+
To check:
|
|
74
|
+
|
|
75
|
+
which yarn
|
|
76
|
+
|
|
77
|
+
If it is not installed, you can usually install it with:
|
|
78
|
+
|
|
79
|
+
npm install -g yarn
|
|
80
|
+
|
|
81
|
+
Refer to the install docs for more info: http://rubyonjets.com/docs/install/
|
|
82
|
+
EOL
|
|
83
|
+
exit 1
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
command = "bundle exec jets webpacker:install"
|
|
87
|
+
command += " FORCE=1" if options[:force]
|
|
88
|
+
run(command)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# bootstrap is dependent on webpacker, options[:bootstrap] is used
|
|
92
|
+
# in webpacker_install.
|
|
93
|
+
def bootstrap_install
|
|
94
|
+
return unless @bootstrap
|
|
95
|
+
|
|
96
|
+
# Add jquery and popper plugin to handle Delete of CRUD
|
|
97
|
+
jquery =<<-JS
|
|
98
|
+
const webpack = require('webpack')
|
|
99
|
+
environment.plugins.prepend('Provide', new webpack.ProvidePlugin({
|
|
100
|
+
$: 'jquery',
|
|
101
|
+
jQuery: 'jquery',
|
|
102
|
+
Popper: ['popper.js', 'default']
|
|
103
|
+
}))
|
|
104
|
+
JS
|
|
105
|
+
after = "const { environment } = require('@rails/webpacker')\n"
|
|
106
|
+
insert_into_file("config/webpack/environment.js", jquery, after: after)
|
|
107
|
+
|
|
108
|
+
run("yarn add bootstrap@4.0.0-beta jquery popper.js postcss-cssnext")
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def git_init
|
|
112
|
+
return if !options[:git]
|
|
113
|
+
return unless git_installed?
|
|
114
|
+
return if File.exist?(".git") # this is a clone repo
|
|
115
|
+
return unless git_credentials_set?
|
|
116
|
+
|
|
117
|
+
run("git init")
|
|
118
|
+
run("git add .")
|
|
119
|
+
run("git commit -m 'first commit'")
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def user_message
|
|
123
|
+
more_info = if options[:mode] == 'job'
|
|
124
|
+
<<~EOL
|
|
125
|
+
Learn more about jobs here: http://rubyonjets.com/docs/jobs/
|
|
126
|
+
|
|
127
|
+
To deploy to AWS Lambda:
|
|
128
|
+
jets deploy
|
|
129
|
+
EOL
|
|
130
|
+
else
|
|
131
|
+
<<~EOL
|
|
132
|
+
To start a server and test locally:
|
|
133
|
+
jets server # localhost:8888 should have the Jets welcome page
|
|
134
|
+
|
|
135
|
+
Scaffold example:
|
|
136
|
+
jets generate scaffold post title:string body:text published:boolean
|
|
137
|
+
jets db:create db:migrate
|
|
138
|
+
|
|
139
|
+
To deploy to AWS Lambda, edit your .env.development.remote and add a DATABASE_URL endpoint.
|
|
140
|
+
Then run:
|
|
141
|
+
|
|
142
|
+
jets deploy
|
|
143
|
+
EOL
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
puts <<~EOL
|
|
147
|
+
#{"="*64}
|
|
148
|
+
Congrats 🎉 You have successfully created a Jets project.
|
|
149
|
+
|
|
150
|
+
Cd into the project directory:
|
|
151
|
+
cd #{project_folder}
|
|
152
|
+
|
|
153
|
+
#{more_info}
|
|
154
|
+
EOL
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
end
|