jets-fs 1.6.10
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 +73 -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 +6 -0
- data/.python-version +1 -0
- data/.rspec +4 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +533 -0
- data/Dockerfile +16 -0
- data/Dockerfile.base +53 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +190 -0
- data/Guardfile +22 -0
- data/LICENSE.txt +22 -0
- data/Procfile +2 -0
- data/README.md +203 -0
- data/Rakefile +21 -0
- data/backers.md +16 -0
- data/bin/release +9 -0
- data/buildspec.yml +18 -0
- data/exe/jets +14 -0
- data/jets.gemspec +61 -0
- data/lib/jets.rb +71 -0
- data/lib/jets/application.rb +308 -0
- data/lib/jets/aws_info.rb +111 -0
- data/lib/jets/aws_services.rb +60 -0
- data/lib/jets/aws_services/stack_status.rb +59 -0
- data/lib/jets/booter.rb +130 -0
- data/lib/jets/builders.rb +16 -0
- data/lib/jets/builders/code_builder.rb +379 -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 +172 -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.rb +5 -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/camelizer.rb +67 -0
- data/lib/jets/cfn.rb +6 -0
- data/lib/jets/cfn/builders.rb +20 -0
- data/lib/jets/cfn/builders/api_deployment_builder.rb +58 -0
- data/lib/jets/cfn/builders/api_gateway_builder.rb +80 -0
- data/lib/jets/cfn/builders/base_child_builder.rb +82 -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 +127 -0
- data/lib/jets/cfn/builders/job_builder.rb +14 -0
- data/lib/jets/cfn/builders/parent_builder.rb +93 -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 +189 -0
- data/lib/jets/cfn/status.rb +212 -0
- data/lib/jets/cfn/upload.rb +139 -0
- data/lib/jets/cli.rb +189 -0
- data/lib/jets/commands.rb +27 -0
- data/lib/jets/commands/base.rb +164 -0
- data/lib/jets/commands/build.rb +217 -0
- data/lib/jets/commands/call.rb +174 -0
- data/lib/jets/commands/call/anonymous_guesser.rb +96 -0
- data/lib/jets/commands/call/autoload_guesser.rb +112 -0
- data/lib/jets/commands/call/base_guesser.rb +33 -0
- data/lib/jets/commands/call/guesser.rb +48 -0
- data/lib/jets/commands/clean.rb +23 -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 +13 -0
- data/lib/jets/commands/db.rb +15 -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 +131 -0
- data/lib/jets/commands/dynamodb.rb +22 -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/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 +18 -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/rail.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 +152 -0
- data/lib/jets/commands/markdown.rb +8 -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 +45 -0
- data/lib/jets/commands/runner.rb +18 -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 +35 -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 +66 -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 +4 -0
- data/lib/jets/commands/templates/skeleton/config/environments/production.rb +4 -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 +146 -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 +16 -0
- data/lib/jets/controller/base.rb +103 -0
- data/lib/jets/controller/callbacks.rb +62 -0
- data/lib/jets/controller/cookies.rb +40 -0
- data/lib/jets/controller/cookies/jar.rb +269 -0
- data/lib/jets/controller/layout.rb +17 -0
- data/lib/jets/controller/middleware.rb +5 -0
- data/lib/jets/controller/middleware/cors.rb +60 -0
- data/lib/jets/controller/middleware/local.rb +119 -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 +97 -0
- data/lib/jets/controller/middleware/main.rb +46 -0
- data/lib/jets/controller/middleware/webpacker_setup.rb +6 -0
- data/lib/jets/controller/params.rb +87 -0
- data/lib/jets/controller/rack.rb +5 -0
- data/lib/jets/controller/rack/adapter.rb +63 -0
- data/lib/jets/controller/rack/env.rb +105 -0
- data/lib/jets/controller/redirection.rb +55 -0
- data/lib/jets/controller/rendering.rb +84 -0
- data/lib/jets/controller/rendering/rack_renderer.rb +238 -0
- data/lib/jets/controller/request.rb +29 -0
- data/lib/jets/controller/response.rb +61 -0
- data/lib/jets/core.rb +211 -0
- data/lib/jets/core_ext/kernel.rb +56 -0
- data/lib/jets/db.rb +15 -0
- data/lib/jets/dotenv.rb +39 -0
- data/lib/jets/erb.rb +51 -0
- data/lib/jets/generator.rb +41 -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/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 +153 -0
- data/lib/jets/internal/app/jobs/jets/preheat_job.rb +62 -0
- data/lib/jets/io.rb +14 -0
- data/lib/jets/job.rb +4 -0
- data/lib/jets/job/base.rb +29 -0
- data/lib/jets/job/dsl.rb +108 -0
- data/lib/jets/klass.rb +109 -0
- data/lib/jets/lambda.rb +18 -0
- data/lib/jets/lambda/dsl.rb +384 -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 +24 -0
- data/lib/jets/mega.rb +7 -0
- data/lib/jets/mega/hash_converter.rb +25 -0
- data/lib/jets/mega/request.rb +140 -0
- data/lib/jets/mega/request/source.rb +21 -0
- data/lib/jets/middleware.rb +38 -0
- data/lib/jets/middleware/configurator.rb +84 -0
- data/lib/jets/middleware/default_stack.rb +49 -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 +20 -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 +82 -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.rb +4 -0
- data/lib/jets/processors/deducer.rb +65 -0
- data/lib/jets/processors/main_processor.rb +59 -0
- data/lib/jets/rack_server.rb +80 -0
- data/lib/jets/rdoc.rb +30 -0
- data/lib/jets/resource.rb +74 -0
- data/lib/jets/resource/api_gateway.rb +9 -0
- data/lib/jets/resource/api_gateway/base_path.rb +5 -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 +78 -0
- data/lib/jets/resource/api_gateway/rest_api.rb +60 -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 +11 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/change.rb +12 -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 +123 -0
- data/lib/jets/resource/api_gateway/rest_api/routes/collision/variable_exception.rb +7 -0
- data/lib/jets/resource/associated.rb +26 -0
- data/lib/jets/resource/base.rb +28 -0
- data/lib/jets/resource/child_stack.rb +7 -0
- data/lib/jets/resource/child_stack/api_deployment.rb +56 -0
- data/lib/jets/resource/child_stack/api_gateway.rb +29 -0
- data/lib/jets/resource/child_stack/app_class.rb +112 -0
- data/lib/jets/resource/child_stack/base.rb +24 -0
- data/lib/jets/resource/child_stack/shared.rb +90 -0
- data/lib/jets/resource/config.rb +4 -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.rb +3 -0
- data/lib/jets/resource/events/rule.rb +31 -0
- data/lib/jets/resource/iam.rb +8 -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/lambda.rb +5 -0
- data/lib/jets/resource/lambda/function.rb +216 -0
- data/lib/jets/resource/lambda/function/environment.rb +61 -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/permission.rb +45 -0
- data/lib/jets/resource/replacer.rb +77 -0
- data/lib/jets/resource/route53.rb +3 -0
- data/lib/jets/resource/route53/record_set.rb +70 -0
- data/lib/jets/resource/s3.rb +17 -0
- data/lib/jets/resource/sns.rb +3 -0
- data/lib/jets/resource/sqs.rb +3 -0
- data/lib/jets/resource/standardizer.rb +42 -0
- data/lib/jets/route.rb +166 -0
- data/lib/jets/router.rb +175 -0
- data/lib/jets/router/scope.rb +30 -0
- data/lib/jets/rule.rb +4 -0
- data/lib/jets/rule/base.rb +19 -0
- data/lib/jets/rule/dsl.rb +110 -0
- data/lib/jets/spec_helpers.rb +52 -0
- data/lib/jets/spec_helpers/params.rb +10 -0
- data/lib/jets/spec_helpers/request.rb +98 -0
- data/lib/jets/spec_helpers/response.rb +5 -0
- data/lib/jets/stack.rb +103 -0
- data/lib/jets/stack/builder.rb +38 -0
- data/lib/jets/stack/definition.rb +50 -0
- data/lib/jets/stack/function.rb +60 -0
- data/lib/jets/stack/main.rb +5 -0
- data/lib/jets/stack/main/dsl.rb +33 -0
- data/lib/jets/stack/main/extensions/base.rb +45 -0
- data/lib/jets/stack/main/extensions/cloudwatch.rb +19 -0
- data/lib/jets/stack/main/extensions/lambda.rb +71 -0
- data/lib/jets/stack/main/extensions/sns.rb +12 -0
- data/lib/jets/stack/main/extensions/sqs.rb +36 -0
- data/lib/jets/stack/output.rb +38 -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 +38 -0
- data/lib/jets/stack/parameter/dsl.rb +42 -0
- data/lib/jets/stack/resource.rb +32 -0
- data/lib/jets/stack/resource/dsl.rb +19 -0
- data/lib/jets/tmp_loader.rb +52 -0
- data/lib/jets/turbine.rb +30 -0
- data/lib/jets/turbo.rb +47 -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/rail.rb +113 -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 +859 -0
|
@@ -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 = "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")
|
|
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
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
class Jets::Commands::RakeCommand
|
|
2
|
+
class << self
|
|
3
|
+
# Same signature as Jets::Commands::Base.perform.
|
|
4
|
+
def perform(namespaced_command, thor_args)
|
|
5
|
+
if thor_args.first == "help"
|
|
6
|
+
puts help_message(namespaced_command)
|
|
7
|
+
return
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
require_rake
|
|
11
|
+
|
|
12
|
+
ARGV.unshift(namespaced_command) # Prepend the task, so Rake knows how to run it.
|
|
13
|
+
|
|
14
|
+
rake.standard_exception_handling do
|
|
15
|
+
rake.init("jets")
|
|
16
|
+
rake.load_rakefile
|
|
17
|
+
rake.top_level
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Useful for CLI.lookup.
|
|
22
|
+
def namespaced_commands
|
|
23
|
+
formatted_rake_tasks(true).map(&:first)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def formatted_rake_tasks(all=false)
|
|
27
|
+
rake_tasks(all).map do |t|
|
|
28
|
+
comment = "# #{t.comment}" if t.comment
|
|
29
|
+
[ t.name_with_args, comment ]
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def rake_tasks(all=false)
|
|
34
|
+
require_rake
|
|
35
|
+
|
|
36
|
+
Rake::TaskManager.record_task_metadata = true
|
|
37
|
+
rake.instance_variable_set(:@name, "jets")
|
|
38
|
+
Jets::Commands::RakeTasks.load!
|
|
39
|
+
tasks = rake.tasks
|
|
40
|
+
tasks = tasks.select(&:comment) unless all
|
|
41
|
+
tasks
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def help_message(namespaced_command)
|
|
45
|
+
task = rake_tasks(true).find { |t| t.name == namespaced_command }
|
|
46
|
+
message = "Help provided by rake task:\n\n"
|
|
47
|
+
message << "jets #{task.name_with_args.dup}\n"
|
|
48
|
+
message << " #{task.full_comment}"
|
|
49
|
+
message
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
def rake
|
|
54
|
+
Rake.application
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def require_rake
|
|
58
|
+
require "rake" # Defer booting Rake until we know it's needed.
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'rake'
|
|
2
|
+
|
|
3
|
+
class Jets::Commands::RakeTasks
|
|
4
|
+
class << self
|
|
5
|
+
# Will only load the tasks once. Just in case the user has already loaded
|
|
6
|
+
# Jets rake tasks in their Rakefile. Example Rakefile that does this:
|
|
7
|
+
#
|
|
8
|
+
# require 'jets'
|
|
9
|
+
# Jets.load_tasks
|
|
10
|
+
#
|
|
11
|
+
@@loaded = false
|
|
12
|
+
def load!
|
|
13
|
+
return if @@loaded # prevent loading twice
|
|
14
|
+
Jets::Booter.require_bundle_gems # use bundler when in project folder
|
|
15
|
+
|
|
16
|
+
Jets::Commands::Db::Tasks.load!
|
|
17
|
+
load_webpacker_tasks
|
|
18
|
+
|
|
19
|
+
@@loaded = true
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Handles load errors gracefuly per Booter.required_bundle_gems comments.
|
|
23
|
+
def load_webpacker_tasks
|
|
24
|
+
begin
|
|
25
|
+
require "webpacker"
|
|
26
|
+
rescue LoadError
|
|
27
|
+
# puts "WARN: unable to load gem. #{$!}. Running with 'bundle exec' might fix this warning."
|
|
28
|
+
# Happens whne user calls jets help outside the jets project folder.
|
|
29
|
+
return
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
Webpacker::RakeTasks.load!
|
|
33
|
+
# Thanks: https://coderwall.com/p/qhdhgw/adding-a-post-execution-hook-to-the-rails-db-migrate-task
|
|
34
|
+
# Enchancing in case the user runs webpacker:install afterwards
|
|
35
|
+
# instead of jets new.
|
|
36
|
+
Rake::Task['webpacker:install'].enhance do
|
|
37
|
+
# FORCE from rake webpacker:install FORCE=1
|
|
38
|
+
# using ENV because rake webpacker:install is a rake task
|
|
39
|
+
args ||= []
|
|
40
|
+
args += ["--force"] if ENV['FORCE']
|
|
41
|
+
Jets::Commands::WebpackerTemplate.start(args)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class Jets::Commands::Runner
|
|
2
|
+
def self.run(code)
|
|
3
|
+
Jets.boot
|
|
4
|
+
|
|
5
|
+
if code =~ %r{^file://}
|
|
6
|
+
path = code.sub('file://', '')
|
|
7
|
+
full_path = "#{Jets.root}/#{path}"
|
|
8
|
+
if File.exist?(full_path)
|
|
9
|
+
code = IO.read(full_path)
|
|
10
|
+
else
|
|
11
|
+
puts "ERROR: file not found at #{full_path}".color(:red)
|
|
12
|
+
exit 1
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
eval(code) # inline script
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
require 'thor'
|
|
3
|
+
require 'bundler'
|
|
4
|
+
|
|
5
|
+
class Jets::Commands::Sequence < Thor::Group
|
|
6
|
+
include Thor::Actions
|
|
7
|
+
|
|
8
|
+
def self.source_root
|
|
9
|
+
File.expand_path("templates/skeleton", File.dirname(__FILE__))
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
def clone_project
|
|
14
|
+
unless git_installed?
|
|
15
|
+
abort "Unable to detect git installation on your system. Git needs to be installed in order to use the --repo option."
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
if File.exist?(project_folder)
|
|
19
|
+
abort "The folder #{project_folder} already exists."
|
|
20
|
+
else
|
|
21
|
+
run "git clone https://github.com/#{options[:repo]} #{project_folder}"
|
|
22
|
+
end
|
|
23
|
+
confirm_jets_project
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def confirm_jets_project
|
|
27
|
+
jets_project = File.exist?("#{project_folder}/config/application.rb")
|
|
28
|
+
unless jets_project
|
|
29
|
+
puts "It does not look like the repo #{options[:repo]} is a jets project. Maybe double check that it is? Exited.".color(:red)
|
|
30
|
+
exit 1
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def copy_project
|
|
35
|
+
puts "Creating new project called #{@project_name}."
|
|
36
|
+
directory ".", project_folder, copy_options
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def copy_options
|
|
40
|
+
excludes = case @options[:mode]
|
|
41
|
+
when 'job'
|
|
42
|
+
# For job mode: list of words to include in the exclude pattern and will not be generated.
|
|
43
|
+
%w[
|
|
44
|
+
Procfile
|
|
45
|
+
controllers
|
|
46
|
+
helpers
|
|
47
|
+
javascript
|
|
48
|
+
models/application_
|
|
49
|
+
views
|
|
50
|
+
config.ru
|
|
51
|
+
database.yml
|
|
52
|
+
dynamodb.yml
|
|
53
|
+
routes
|
|
54
|
+
db/
|
|
55
|
+
spec
|
|
56
|
+
yarn
|
|
57
|
+
public
|
|
58
|
+
]
|
|
59
|
+
when 'api'
|
|
60
|
+
%w[
|
|
61
|
+
views
|
|
62
|
+
]
|
|
63
|
+
else # html
|
|
64
|
+
[]
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
unless @database
|
|
68
|
+
# Do not even generated the config/database.yml because
|
|
69
|
+
# jets webpacker:install bombs and tries to load the db since it sees a
|
|
70
|
+
# config/database.yml but has there's no database pg gem configured.
|
|
71
|
+
excludes += %w[
|
|
72
|
+
database.yml
|
|
73
|
+
models/application_record
|
|
74
|
+
]
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
if excludes.empty?
|
|
78
|
+
{}
|
|
79
|
+
else
|
|
80
|
+
pattern = Regexp.new(excludes.join('|'))
|
|
81
|
+
{exclude_pattern: pattern }
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def git_installed?
|
|
86
|
+
system("type git > /dev/null 2>&1")
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# In order to automatically create first commit
|
|
90
|
+
# the user needs to have their credentials set
|
|
91
|
+
def git_credentials_set?
|
|
92
|
+
configs = `git config --list`.split("\n")
|
|
93
|
+
configs.any? { |c| c.start_with? 'user.name=' } && configs.any? { |c| c.start_with? 'user.email=' }
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def yarn_installed?
|
|
97
|
+
system("type yarn > /dev/null 2>&1")
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# The important methods in this class are stack_type, s3_bucket and first_run?
|
|
2
|
+
# We use stack_type and s3_bucket to get info for both the build and deploy CLI
|
|
3
|
+
# commands.
|
|
4
|
+
# first_run? will always make an API call.
|
|
5
|
+
module Jets::Commands::StackInfo
|
|
6
|
+
include Jets::AwsServices
|
|
7
|
+
|
|
8
|
+
def stack_type
|
|
9
|
+
first_run? ? :minimal : :full
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def s3_bucket
|
|
13
|
+
return @s3_bucket if @s3_bucket
|
|
14
|
+
|
|
15
|
+
return nil if first_run?
|
|
16
|
+
|
|
17
|
+
resp = cfn.describe_stacks(stack_name: parent_stack_name)
|
|
18
|
+
output = resp.stacks[0].outputs.find {|o| o.output_key == 'S3Bucket'}
|
|
19
|
+
@s3_bucket = output.output_value # once an s3 bucket is found, cache it
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Always call API
|
|
23
|
+
def first_run?
|
|
24
|
+
!stack_exists?(parent_stack_name)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def parent_stack_name
|
|
28
|
+
Jets::Naming.parent_stack_name
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pack
|