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,57 @@
|
|
|
1
|
+
class Jets::Builders
|
|
2
|
+
class CodeSize
|
|
3
|
+
LAMBDA_SIZE_LIMIT = 250 # Total lambda limit is 250MB
|
|
4
|
+
include Util
|
|
5
|
+
|
|
6
|
+
def self.check!
|
|
7
|
+
new.check
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def check
|
|
11
|
+
return if within_lambda_limit?
|
|
12
|
+
say "Over the Lambda size limit of #{LAMBDA_SIZE_LIMIT}MB".color(:red)
|
|
13
|
+
say "Please reduce the size of your code."
|
|
14
|
+
display_sizes
|
|
15
|
+
exit 1
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def within_lambda_limit?
|
|
19
|
+
total_size < LAMBDA_SIZE_LIMIT * 1024 # 120MB
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def total_size
|
|
23
|
+
code_size = compute_size("#{stage_area}/code")
|
|
24
|
+
opt_size = compute_size("#{stage_area}/opt")
|
|
25
|
+
opt_size + code_size # total_size
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def display_sizes
|
|
29
|
+
code_size = compute_size("#{stage_area}/code")
|
|
30
|
+
opt_size = compute_size("#{stage_area}/opt")
|
|
31
|
+
total_size = opt_size + code_size
|
|
32
|
+
overlimit = (LAMBDA_SIZE_LIMIT * 1024 - total_size) * -1
|
|
33
|
+
say "Sizes:"
|
|
34
|
+
say "Code: #{megabytes(code_size)} - #{stage_area}/code"
|
|
35
|
+
say "Gem Layer: #{megabytes(opt_size)} - #{stage_area}/opt"
|
|
36
|
+
say "Total Package: #{megabytes(total_size)}"
|
|
37
|
+
say "Over limit by: #{megabytes(overlimit)}"
|
|
38
|
+
say "Sometimes blowing away the /tmp/jets cache will reduce the size: rm -rf /tmp/jets"
|
|
39
|
+
# sh "du -kcsh #{stage_area}/*" unless ENV['TEST'] # uncomment to debug
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def compute_size(path)
|
|
43
|
+
# -k option is required for macosx but not for linux
|
|
44
|
+
out = `du -ks #{path}`
|
|
45
|
+
out.split(' ').first.to_i # bytes
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def megabytes(bytes)
|
|
49
|
+
n = bytes / 1024.0
|
|
50
|
+
sprintf('%.1f', n) + 'MB'
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def say(message)
|
|
54
|
+
puts message unless ENV['TEST']
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
class Jets::Builders
|
|
2
|
+
class GemReplacer
|
|
3
|
+
extend Memoist
|
|
4
|
+
def initialize(options)
|
|
5
|
+
@options = options
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def run
|
|
9
|
+
check = Jets::Gems::Check.new
|
|
10
|
+
if Jets.config.lambda.layers.empty?
|
|
11
|
+
found_gems = check.run! # exits early if missing gems found
|
|
12
|
+
else
|
|
13
|
+
# assumes missing gems are in the provided custom layer by the user
|
|
14
|
+
found_gems = check.run # does not exist early
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# found gems will only have gems that were found
|
|
18
|
+
found_gems.each do |gem_name, source|
|
|
19
|
+
options = @options.merge(source_url: source)
|
|
20
|
+
gem_extractor = Jets::Gems::Extract::Gem.new(gem_name, options)
|
|
21
|
+
gem_extractor.run
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
tidy
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def sh(command)
|
|
28
|
+
puts "=> #{command}".color(:green)
|
|
29
|
+
success = system(command)
|
|
30
|
+
abort("Command Failed") unless success
|
|
31
|
+
success
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def ruby_folder
|
|
35
|
+
Jets::Gems.ruby_folder
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# remove unnecessary files to reduce package size
|
|
39
|
+
def tidy
|
|
40
|
+
# project_root: /tmp/jets/demo/stage/code/
|
|
41
|
+
# /tmp/jets/demo/stage/code/bundled
|
|
42
|
+
tidy_gems("#{@options[:project_root]}/ruby/gems/#{ruby_folder}/*/gems/*")
|
|
43
|
+
tidy_gems("#{@options[:project_root]}/ruby/gems/#{ruby_folder}/*/bundler/gems/*")
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def tidy_gems(gems_path)
|
|
47
|
+
Dir.glob(gems_path).each do |gem_path|
|
|
48
|
+
tidy_gem(gem_path)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Clean up some unneeded files to try to keep the package size down
|
|
53
|
+
# In a generated jets app this made a decent 9% difference:
|
|
54
|
+
# 175M test2
|
|
55
|
+
# 191M test3
|
|
56
|
+
def tidy_gem(path)
|
|
57
|
+
# remove top level tests and cache folders
|
|
58
|
+
Dir.glob("#{path}/*").each do |path|
|
|
59
|
+
next unless File.directory?(path)
|
|
60
|
+
folder = File.basename(path)
|
|
61
|
+
if %w[test tests spec features benchmark cache doc].include?(folder)
|
|
62
|
+
FileUtils.rm_rf(path)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
Dir.glob("#{path}/**/*").each do |path|
|
|
67
|
+
next unless File.file?(path)
|
|
68
|
+
ext = File.extname(path)
|
|
69
|
+
if %w[.rdoc .md .markdown].include?(ext) or
|
|
70
|
+
path =~ /LICENSE|CHANGELOG|README/
|
|
71
|
+
FileUtils.rm_f(path)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
require "fileutils"
|
|
2
|
+
require "erb"
|
|
3
|
+
|
|
4
|
+
# Example:
|
|
5
|
+
#
|
|
6
|
+
# Jets::Builders::HandlerGenerator.new(
|
|
7
|
+
# "PostsController",
|
|
8
|
+
# :create, :update
|
|
9
|
+
# )
|
|
10
|
+
class Jets::Builders
|
|
11
|
+
class HandlerGenerator
|
|
12
|
+
def self.build!
|
|
13
|
+
new.build
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def build
|
|
17
|
+
generate_data_yaml
|
|
18
|
+
app_ruby_shims
|
|
19
|
+
poly_shims
|
|
20
|
+
shared_shims
|
|
21
|
+
internal_shims
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# The handlers/data.yml is used by the shims
|
|
25
|
+
def generate_data_yaml
|
|
26
|
+
vars = Jets::Builders::ShimVars::Base.new
|
|
27
|
+
data = {
|
|
28
|
+
"s3_bucket" => vars.s3_bucket
|
|
29
|
+
}
|
|
30
|
+
data["rack_zip"] = vars.rack_zip if vars.rack_zip
|
|
31
|
+
|
|
32
|
+
content = YAML.dump(data)
|
|
33
|
+
path = "#{tmp_code}/handlers/data.yml"
|
|
34
|
+
FileUtils.mkdir_p(File.dirname(path))
|
|
35
|
+
IO.write(path, content)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def app_ruby_shims
|
|
39
|
+
app_files.each do |path|
|
|
40
|
+
# Generates one shim for each app class: controller, job, etc
|
|
41
|
+
vars = Jets::Builders::ShimVars::App.new(path)
|
|
42
|
+
if path.include?('app/functions')
|
|
43
|
+
copy_simple_function(path)
|
|
44
|
+
else
|
|
45
|
+
generate_handler(vars)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# source_path: app/functions/simple.rb
|
|
51
|
+
def copy_simple_function(source_path)
|
|
52
|
+
# Handler: handlers/controllers/posts_controller.handle
|
|
53
|
+
dest_path = source_path.sub('app/functions', 'handlers/functions')
|
|
54
|
+
FileUtils.mkdir_p(File.dirname(dest_path))
|
|
55
|
+
FileUtils.cp(source_path, dest_path)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def app_files
|
|
59
|
+
Jets::Commands::Build.app_files
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def poly_shims
|
|
63
|
+
missing = []
|
|
64
|
+
|
|
65
|
+
app_files.each do |path|
|
|
66
|
+
vars = Jets::Builders::ShimVars::App.new(path)
|
|
67
|
+
poly_tasks = vars.klass.tasks.select { |t| t.lang != :ruby }
|
|
68
|
+
poly_tasks.each do |task|
|
|
69
|
+
source_path = get_source_path(path, task)
|
|
70
|
+
if File.exist?(source_path)
|
|
71
|
+
native_function(path, task)
|
|
72
|
+
else
|
|
73
|
+
missing << source_path
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
unless missing.empty?
|
|
78
|
+
puts "ERROR: Missing source files. Please make sure these source files exist or remove their declarations".color(:red)
|
|
79
|
+
puts missing
|
|
80
|
+
exit 1
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def shared_shims
|
|
86
|
+
Jets::Stack.subclasses.each do |subclass|
|
|
87
|
+
subclass.functions.each do |fun|
|
|
88
|
+
if fun.lang.to_s == "ruby"
|
|
89
|
+
shared_ruby_shim(fun)
|
|
90
|
+
else
|
|
91
|
+
copy_source_as_handler(fun)
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def internal_shims
|
|
98
|
+
jets_base_path if Jets.custom_domain?
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def jets_base_path
|
|
102
|
+
path = "jets/base_path.rb"
|
|
103
|
+
internal = File.expand_path("../internal", File.dirname(__FILE__))
|
|
104
|
+
src = "#{internal}/app/functions/#{path}"
|
|
105
|
+
result = Jets::Erb.result(src, stage_name: Jets::Resource::ApiGateway::Deployment.stage_name)
|
|
106
|
+
dest = "#{tmp_code}/handlers/functions/#{path}"
|
|
107
|
+
FileUtils.mkdir_p(File.dirname(dest))
|
|
108
|
+
IO.write(dest, result)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# app/shared/functions/kevin.py => /tmp/jets/demo/app_root/handlers/shared/functions/kevin.py
|
|
112
|
+
def copy_source_as_handler(fun)
|
|
113
|
+
source_path = fun.source_file
|
|
114
|
+
unless source_path
|
|
115
|
+
attributes = fun.template.values.first
|
|
116
|
+
function_name = attributes['Properties']['FunctionName']
|
|
117
|
+
puts "WARN: missing source file for: '#{function_name}' function".color(:yellow)
|
|
118
|
+
return
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
dest_path = "#{tmp_code}/#{fun.handler_dest}"
|
|
122
|
+
FileUtils.mkdir_p(File.dirname(dest_path))
|
|
123
|
+
FileUtils.cp(source_path, dest_path)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def get_source_path(original_path, task)
|
|
127
|
+
folder = original_path.sub(/\.rb$/,'')
|
|
128
|
+
lang_folder = "#{folder}/#{task.lang}"
|
|
129
|
+
root = Jets.root unless original_path.include?("lib/jets/internal")
|
|
130
|
+
"#{root}/#{lang_folder}/#{task.meth}#{task.lang_ext}"
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# Builds and copies over the native source code: python or node
|
|
134
|
+
def native_function(original_path, task)
|
|
135
|
+
source_path = get_source_path(original_path, task)
|
|
136
|
+
# Handler: handlers/controllers/posts_controller.handle
|
|
137
|
+
dest_path = "#{tmp_code}/#{task.handler_path}"
|
|
138
|
+
FileUtils.mkdir_p(File.dirname(dest_path))
|
|
139
|
+
FileUtils.cp(source_path, dest_path)
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def shared_ruby_shim(fun)
|
|
143
|
+
vars = Jets::Builders::ShimVars::Shared.new(fun)
|
|
144
|
+
generate_handler(vars)
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def common_base_shim
|
|
148
|
+
vars = Jets::Builders::ShimVars::Base.new
|
|
149
|
+
result = evaluate_template("shim.js", vars)
|
|
150
|
+
dest = "#{tmp_code}/handlers/shim.js"
|
|
151
|
+
FileUtils.mkdir_p(File.dirname(dest))
|
|
152
|
+
IO.write(dest, result)
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def generate_handler(vars)
|
|
156
|
+
result = evaluate_template("handler.rb", vars)
|
|
157
|
+
dest = "#{tmp_code}/#{vars.dest_path}"
|
|
158
|
+
FileUtils.mkdir_p(File.dirname(dest))
|
|
159
|
+
IO.write(dest, result)
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
def evaluate_template(template_file, vars)
|
|
163
|
+
template_path = File.expand_path("../templates/#{template_file}", __FILE__)
|
|
164
|
+
Jets::Erb.result(template_path, vars: vars)
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# TODO: move CodeBuilder.tmp_code to a common level for HandlerGenerator and CodeBuilder
|
|
168
|
+
def tmp_code
|
|
169
|
+
"#{Jets.build_root}/#{CodeBuilder.tmp_code}"
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
class Jets::Builders
|
|
2
|
+
class LambdaLayer
|
|
3
|
+
include Util
|
|
4
|
+
|
|
5
|
+
# At this point gems are in the stage/code and stage/rack folders still.
|
|
6
|
+
# We consolidate all gems to stage/opt.
|
|
7
|
+
# Then replace the binary gems.
|
|
8
|
+
def build
|
|
9
|
+
consolidate_gems_to_opt
|
|
10
|
+
replace_compiled_gems
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Also restructure the folder from:
|
|
14
|
+
# vendor/gems/ruby/2.5.0
|
|
15
|
+
# To:
|
|
16
|
+
# ruby/gems/2.5.0
|
|
17
|
+
#
|
|
18
|
+
# For Lambda Layer structure
|
|
19
|
+
def consolidate_gems_to_opt
|
|
20
|
+
src = "#{stage_area}/code/vendor/gems/ruby/2.5.0"
|
|
21
|
+
dest = "#{stage_area}/opt/ruby/gems/2.5.0"
|
|
22
|
+
rsync_and_link(src, dest)
|
|
23
|
+
|
|
24
|
+
return unless Jets.rack?
|
|
25
|
+
|
|
26
|
+
src = "#{stage_area}/rack/vendor/gems/ruby/2.5.0"
|
|
27
|
+
rsync_and_link(src, dest)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def rsync_and_link(src, dest)
|
|
31
|
+
FileUtils.mkdir_p(dest)
|
|
32
|
+
# Trailing slashes are required
|
|
33
|
+
sh "rsync -a --links #{src}/ #{dest}/"
|
|
34
|
+
|
|
35
|
+
FileUtils.rm_rf(src) # blow away original 2.5.0 folder
|
|
36
|
+
|
|
37
|
+
# Create symlink that will point to the gems in the Lambda Layer:
|
|
38
|
+
# stage/opt/ruby/gems/2.5.0 -> /opt/ruby/gems/2.5.0
|
|
39
|
+
FileUtils.ln_sf("/opt/ruby/gems/#{Jets::Gems.ruby_folder}", src)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# replace_compiled_gems:
|
|
43
|
+
# remove binary gems in vendor/gems/ruby/2.5.0
|
|
44
|
+
# extract binary gems in opt/ruby/gems/2.5.0
|
|
45
|
+
# move binary gems from opt/ruby/gems/2.5.0 to vendor/gems/ruby/2.5.0
|
|
46
|
+
#
|
|
47
|
+
# After this point, gems have been replace in stage/code/vendor/gems with their
|
|
48
|
+
# binary extensions: a good state. This method moves these gems to the Lambda
|
|
49
|
+
# Layers structure and creates a symlinks to it. First:
|
|
50
|
+
#
|
|
51
|
+
# from stage/code/vendor/gems/ruby/2.5.0
|
|
52
|
+
# to stage/opt/ruby/gems/2.5.0
|
|
53
|
+
#
|
|
54
|
+
# Then:
|
|
55
|
+
#
|
|
56
|
+
# stage/code/vendor/gems/ruby/2.5.0 -> /opt/ruby/gems/2.5.0
|
|
57
|
+
#
|
|
58
|
+
def replace_compiled_gems
|
|
59
|
+
project_root = "#{stage_area}/opt"
|
|
60
|
+
headline "Replacing compiled gems with AWS Lambda Linux compiled versions: #{project_root}"
|
|
61
|
+
options = {
|
|
62
|
+
s3: "lambdagems2",
|
|
63
|
+
build_root: cache_area, # used in jets-gems
|
|
64
|
+
project_root: project_root, # used in gem_replacer and jets-gems
|
|
65
|
+
}
|
|
66
|
+
GemReplacer.new(options).run
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
require 'digest'
|
|
2
|
+
|
|
3
|
+
# Resolves the chicken-and-egg problem with md5 checksums. The handlers need
|
|
4
|
+
# to reference files with the md5 checksum. The files are the:
|
|
5
|
+
#
|
|
6
|
+
# jets/code/rack-checksum.zip
|
|
7
|
+
# jets/code/opt-checksum.zip
|
|
8
|
+
#
|
|
9
|
+
# We compute the checksums before we generate the node shim handlers.
|
|
10
|
+
class Jets::Builders
|
|
11
|
+
class Md5
|
|
12
|
+
class << self
|
|
13
|
+
@@checksums = {}
|
|
14
|
+
def checksums
|
|
15
|
+
@@checksums
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def stage_folders
|
|
19
|
+
paths = []
|
|
20
|
+
paths << "stage/opt" if folder_exist?("opt")
|
|
21
|
+
paths << "stage/rack" if folder_exist?("rack")
|
|
22
|
+
# Important to have stage/code at the end, since its md5 checksum depends
|
|
23
|
+
# on the previous folders.
|
|
24
|
+
paths << "stage/code"
|
|
25
|
+
paths
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def folder_exist?(folder)
|
|
29
|
+
path = "#{Jets.build_root}/stage/#{folder}"
|
|
30
|
+
File.directory?(path)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def compute!
|
|
34
|
+
stage_folders.each do |path|
|
|
35
|
+
@@checksums[path] = dir(path)
|
|
36
|
+
end
|
|
37
|
+
@@checksums
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def dir(short_path)
|
|
41
|
+
path = "#{Jets.build_root}/#{short_path}"
|
|
42
|
+
files = Dir["#{path}/**/*"]
|
|
43
|
+
files.reject! { |f| File.directory?(f) }
|
|
44
|
+
.reject! { |f| File.symlink?(f) }
|
|
45
|
+
content = files.map do |f|
|
|
46
|
+
Digest::MD5.file(f).to_s[0..7]
|
|
47
|
+
end.join
|
|
48
|
+
|
|
49
|
+
# The stage/code md5 sha depends on the other 'symlinked' folders.
|
|
50
|
+
if short_path == "stage/code"
|
|
51
|
+
content += @@checksums.values.join
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
md5 = Digest::MD5.new
|
|
55
|
+
md5.update(content)
|
|
56
|
+
md5.hexdigest.to_s[0..7]
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
require 'action_view'
|
|
2
|
+
|
|
3
|
+
# Examples:
|
|
4
|
+
#
|
|
5
|
+
# zip = Jets::Builders::Md5Zip.new("/tmp/jets/demo/stage/code")
|
|
6
|
+
# zip.create
|
|
7
|
+
#
|
|
8
|
+
# zip = Jets::Builders::Md5Zip.new("/tmp/jets/demo/stage/bundled")
|
|
9
|
+
# zip.create
|
|
10
|
+
#
|
|
11
|
+
class Jets::Builders
|
|
12
|
+
class Md5Zip
|
|
13
|
+
include ActionView::Helpers::NumberHelper # number_to_human_size
|
|
14
|
+
include Util
|
|
15
|
+
|
|
16
|
+
def initialize(folder)
|
|
17
|
+
@path = "#{Jets.build_root}/#{folder}"
|
|
18
|
+
@checksum = Md5.checksums[folder]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def create
|
|
22
|
+
headline "Creating zip file for #{@path}"
|
|
23
|
+
# => Creating zip file for /tmp/jets/demo/stage/bundled
|
|
24
|
+
|
|
25
|
+
# https://serverfault.com/questions/265675/how-can-i-zip-compress-a-symlink
|
|
26
|
+
command = "cd #{@path} && zip --symlinks -rq #{zip_file} ."
|
|
27
|
+
sh(command)
|
|
28
|
+
# move out of the lower folder to the stage folder
|
|
29
|
+
# mv /tmp/jets/demo/stage/code/code.zip /tmp/jets/demo/stage/code.zip
|
|
30
|
+
FileUtils.mkdir_p(File.dirname(zip_dest))
|
|
31
|
+
FileUtils.mv("#{@path}/#{zip_file}", zip_dest)
|
|
32
|
+
|
|
33
|
+
# mv /tmp/jets/demo/stage/zips/code.zip /tmp/jets/demo/stage/zips/code-a8a604aa.zip
|
|
34
|
+
FileUtils.mv(zip_dest, md5_dest)
|
|
35
|
+
|
|
36
|
+
file_size = number_to_human_size(File.size(md5_dest))
|
|
37
|
+
puts "Zip file created at: #{md5_dest.color(:green)} (#{file_size})"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# /tmp/jets/demo/stage/zips/code.zip
|
|
41
|
+
def zip_dest
|
|
42
|
+
stage_area, filename = File.dirname(@path), File.basename(@path)
|
|
43
|
+
zip_area = stage_area + '/zips' # /tmp/jets/demo/stage/zips
|
|
44
|
+
zip_file = filename + '.zip' # code.zip
|
|
45
|
+
"#{zip_area}/#{zip_file}" # /tmp/jets/demo/stage/zips/code.zip
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def zip_file
|
|
49
|
+
File.basename(zip_dest)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# /tmp/jets/demo/stage/zips/code-SHA.zip
|
|
53
|
+
def md5_dest
|
|
54
|
+
zip_dest.sub(".zip", "-#{@checksum}.zip")
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def md5_name
|
|
58
|
+
File.basename(md5_dest)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|