bundler-plus 4.0.15
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/CHANGELOG.md +5670 -0
- data/LICENSE.md +22 -0
- data/README.md +58 -0
- data/bundler.gemspec +46 -0
- data/exe/bundle +29 -0
- data/exe/bundler +4 -0
- data/lib/bundler/.document +1 -0
- data/lib/bundler/build_metadata.rb +44 -0
- data/lib/bundler/capistrano.rb +4 -0
- data/lib/bundler/checksum.rb +270 -0
- data/lib/bundler/ci_detector.rb +75 -0
- data/lib/bundler/cli/add.rb +62 -0
- data/lib/bundler/cli/binstubs.rb +57 -0
- data/lib/bundler/cli/cache.rb +32 -0
- data/lib/bundler/cli/check.rb +40 -0
- data/lib/bundler/cli/clean.rb +25 -0
- data/lib/bundler/cli/common.rb +161 -0
- data/lib/bundler/cli/config.rb +208 -0
- data/lib/bundler/cli/console.rb +47 -0
- data/lib/bundler/cli/doctor/diagnose.rb +167 -0
- data/lib/bundler/cli/doctor/ssl.rb +249 -0
- data/lib/bundler/cli/doctor.rb +33 -0
- data/lib/bundler/cli/exec.rb +114 -0
- data/lib/bundler/cli/fund.rb +36 -0
- data/lib/bundler/cli/gem.rb +493 -0
- data/lib/bundler/cli/info.rb +83 -0
- data/lib/bundler/cli/init.rb +51 -0
- data/lib/bundler/cli/install.rb +127 -0
- data/lib/bundler/cli/issue.rb +41 -0
- data/lib/bundler/cli/list.rb +97 -0
- data/lib/bundler/cli/lock.rb +94 -0
- data/lib/bundler/cli/open.rb +29 -0
- data/lib/bundler/cli/outdated.rb +337 -0
- data/lib/bundler/cli/platform.rb +48 -0
- data/lib/bundler/cli/plugin.rb +39 -0
- data/lib/bundler/cli/pristine.rb +64 -0
- data/lib/bundler/cli/remove.rb +17 -0
- data/lib/bundler/cli/show.rb +71 -0
- data/lib/bundler/cli/update.rb +125 -0
- data/lib/bundler/cli.rb +829 -0
- data/lib/bundler/compact_index_client/cache.rb +96 -0
- data/lib/bundler/compact_index_client/cache_file.rb +148 -0
- data/lib/bundler/compact_index_client/parser.rb +87 -0
- data/lib/bundler/compact_index_client/updater.rb +105 -0
- data/lib/bundler/compact_index_client.rb +92 -0
- data/lib/bundler/constants.rb +14 -0
- data/lib/bundler/current_ruby.rb +94 -0
- data/lib/bundler/definition.rb +1304 -0
- data/lib/bundler/dependency.rb +151 -0
- data/lib/bundler/deployment.rb +6 -0
- data/lib/bundler/deprecate.rb +44 -0
- data/lib/bundler/digest.rb +71 -0
- data/lib/bundler/dsl.rb +642 -0
- data/lib/bundler/endpoint_specification.rb +184 -0
- data/lib/bundler/env.rb +148 -0
- data/lib/bundler/environment_preserver.rb +69 -0
- data/lib/bundler/errors.rb +277 -0
- data/lib/bundler/feature_flag.rb +20 -0
- data/lib/bundler/fetcher/base.rb +55 -0
- data/lib/bundler/fetcher/compact_index.rb +133 -0
- data/lib/bundler/fetcher/dependency.rb +85 -0
- data/lib/bundler/fetcher/downloader.rb +116 -0
- data/lib/bundler/fetcher/gem_remote_fetcher.rb +24 -0
- data/lib/bundler/fetcher/index.rb +25 -0
- data/lib/bundler/fetcher.rb +365 -0
- data/lib/bundler/force_platform.rb +16 -0
- data/lib/bundler/friendly_errors.rb +127 -0
- data/lib/bundler/gem_helper.rb +237 -0
- data/lib/bundler/gem_tasks.rb +7 -0
- data/lib/bundler/gem_version_promoter.rb +147 -0
- data/lib/bundler/index.rb +203 -0
- data/lib/bundler/injector.rb +284 -0
- data/lib/bundler/inline.rb +106 -0
- data/lib/bundler/installer/gem_installer.rb +88 -0
- data/lib/bundler/installer/parallel_installer.rb +280 -0
- data/lib/bundler/installer/standalone.rb +113 -0
- data/lib/bundler/installer.rb +241 -0
- data/lib/bundler/lazy_specification.rb +270 -0
- data/lib/bundler/lockfile_generator.rb +119 -0
- data/lib/bundler/lockfile_parser.rb +328 -0
- data/lib/bundler/man/.document +1 -0
- data/lib/bundler/man/bundle-add.1 +79 -0
- data/lib/bundler/man/bundle-add.1.ronn +92 -0
- data/lib/bundler/man/bundle-binstubs.1 +30 -0
- data/lib/bundler/man/bundle-binstubs.1.ronn +42 -0
- data/lib/bundler/man/bundle-cache.1 +56 -0
- data/lib/bundler/man/bundle-cache.1.ronn +95 -0
- data/lib/bundler/man/bundle-check.1 +21 -0
- data/lib/bundler/man/bundle-check.1.ronn +26 -0
- data/lib/bundler/man/bundle-clean.1 +17 -0
- data/lib/bundler/man/bundle-clean.1.ronn +18 -0
- data/lib/bundler/man/bundle-config.1 +339 -0
- data/lib/bundler/man/bundle-config.1.ronn +455 -0
- data/lib/bundler/man/bundle-console.1 +33 -0
- data/lib/bundler/man/bundle-console.1.ronn +39 -0
- data/lib/bundler/man/bundle-doctor.1 +69 -0
- data/lib/bundler/man/bundle-doctor.1.ronn +77 -0
- data/lib/bundler/man/bundle-env.1 +9 -0
- data/lib/bundler/man/bundle-env.1.ronn +10 -0
- data/lib/bundler/man/bundle-exec.1 +104 -0
- data/lib/bundler/man/bundle-exec.1.ronn +150 -0
- data/lib/bundler/man/bundle-fund.1 +22 -0
- data/lib/bundler/man/bundle-fund.1.ronn +25 -0
- data/lib/bundler/man/bundle-gem.1 +107 -0
- data/lib/bundler/man/bundle-gem.1.ronn +150 -0
- data/lib/bundler/man/bundle-help.1 +9 -0
- data/lib/bundler/man/bundle-help.1.ronn +12 -0
- data/lib/bundler/man/bundle-info.1 +17 -0
- data/lib/bundler/man/bundle-info.1.ronn +21 -0
- data/lib/bundler/man/bundle-init.1 +20 -0
- data/lib/bundler/man/bundle-init.1.ronn +32 -0
- data/lib/bundler/man/bundle-install.1 +178 -0
- data/lib/bundler/man/bundle-install.1.ronn +314 -0
- data/lib/bundler/man/bundle-issue.1 +45 -0
- data/lib/bundler/man/bundle-issue.1.ronn +37 -0
- data/lib/bundler/man/bundle-licenses.1 +9 -0
- data/lib/bundler/man/bundle-licenses.1.ronn +10 -0
- data/lib/bundler/man/bundle-list.1 +40 -0
- data/lib/bundler/man/bundle-list.1.ronn +41 -0
- data/lib/bundler/man/bundle-lock.1 +75 -0
- data/lib/bundler/man/bundle-lock.1.ronn +115 -0
- data/lib/bundler/man/bundle-open.1 +32 -0
- data/lib/bundler/man/bundle-open.1.ronn +28 -0
- data/lib/bundler/man/bundle-outdated.1 +106 -0
- data/lib/bundler/man/bundle-outdated.1.ronn +117 -0
- data/lib/bundler/man/bundle-platform.1 +49 -0
- data/lib/bundler/man/bundle-platform.1.ronn +49 -0
- data/lib/bundler/man/bundle-plugin.1 +76 -0
- data/lib/bundler/man/bundle-plugin.1.ronn +84 -0
- data/lib/bundler/man/bundle-pristine.1 +23 -0
- data/lib/bundler/man/bundle-pristine.1.ronn +34 -0
- data/lib/bundler/man/bundle-remove.1 +15 -0
- data/lib/bundler/man/bundle-remove.1.ronn +16 -0
- data/lib/bundler/man/bundle-show.1 +16 -0
- data/lib/bundler/man/bundle-show.1.ronn +21 -0
- data/lib/bundler/man/bundle-update.1 +284 -0
- data/lib/bundler/man/bundle-update.1.ronn +367 -0
- data/lib/bundler/man/bundle-version.1 +22 -0
- data/lib/bundler/man/bundle-version.1.ronn +24 -0
- data/lib/bundler/man/bundle.1 +93 -0
- data/lib/bundler/man/bundle.1.ronn +107 -0
- data/lib/bundler/man/gemfile.5 +503 -0
- data/lib/bundler/man/gemfile.5.ronn +586 -0
- data/lib/bundler/man/index.txt +31 -0
- data/lib/bundler/match_metadata.rb +30 -0
- data/lib/bundler/match_platform.rb +42 -0
- data/lib/bundler/match_remote_metadata.rb +29 -0
- data/lib/bundler/materialization.rb +59 -0
- data/lib/bundler/mirror.rb +221 -0
- data/lib/bundler/plugin/api/source.rb +330 -0
- data/lib/bundler/plugin/api.rb +81 -0
- data/lib/bundler/plugin/dsl.rb +53 -0
- data/lib/bundler/plugin/events.rb +85 -0
- data/lib/bundler/plugin/index.rb +203 -0
- data/lib/bundler/plugin/installer/git.rb +34 -0
- data/lib/bundler/plugin/installer/path.rb +26 -0
- data/lib/bundler/plugin/installer/rubygems.rb +19 -0
- data/lib/bundler/plugin/installer.rb +123 -0
- data/lib/bundler/plugin/source_list.rb +31 -0
- data/lib/bundler/plugin/unloaded_source.rb +25 -0
- data/lib/bundler/plugin.rb +387 -0
- data/lib/bundler/process_lock.rb +20 -0
- data/lib/bundler/remote_specification.rb +126 -0
- data/lib/bundler/resolver/base.rb +127 -0
- data/lib/bundler/resolver/candidate.rb +85 -0
- data/lib/bundler/resolver/incompatibility.rb +15 -0
- data/lib/bundler/resolver/package.rb +95 -0
- data/lib/bundler/resolver/root.rb +25 -0
- data/lib/bundler/resolver/spec_group.rb +74 -0
- data/lib/bundler/resolver/strategy.rb +43 -0
- data/lib/bundler/resolver.rb +603 -0
- data/lib/bundler/retry.rb +92 -0
- data/lib/bundler/ruby_dsl.rb +67 -0
- data/lib/bundler/ruby_version.rb +135 -0
- data/lib/bundler/rubygems_ext.rb +503 -0
- data/lib/bundler/rubygems_gem_installer.rb +206 -0
- data/lib/bundler/rubygems_integration.rb +456 -0
- data/lib/bundler/runtime.rb +331 -0
- data/lib/bundler/safe_marshal.rb +31 -0
- data/lib/bundler/self_manager.rb +197 -0
- data/lib/bundler/settings/validator.rb +86 -0
- data/lib/bundler/settings.rb +585 -0
- data/lib/bundler/setup.rb +39 -0
- data/lib/bundler/shared_helpers.rb +392 -0
- data/lib/bundler/source/gemspec.rb +19 -0
- data/lib/bundler/source/git/git_proxy.rb +509 -0
- data/lib/bundler/source/git.rb +451 -0
- data/lib/bundler/source/metadata.rb +67 -0
- data/lib/bundler/source/path/installer.rb +53 -0
- data/lib/bundler/source/path.rb +256 -0
- data/lib/bundler/source/rubygems/remote.rb +86 -0
- data/lib/bundler/source/rubygems.rb +606 -0
- data/lib/bundler/source/rubygems_aggregate.rb +71 -0
- data/lib/bundler/source.rb +120 -0
- data/lib/bundler/source_list.rb +240 -0
- data/lib/bundler/source_map.rb +72 -0
- data/lib/bundler/spec_set.rb +390 -0
- data/lib/bundler/stub_specification.rb +147 -0
- data/lib/bundler/templates/.document +1 -0
- data/lib/bundler/templates/Executable +16 -0
- data/lib/bundler/templates/Executable.standalone +14 -0
- data/lib/bundler/templates/Gemfile +5 -0
- data/lib/bundler/templates/newgem/CHANGELOG.md.tt +5 -0
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +10 -0
- data/lib/bundler/templates/newgem/Cargo.toml.tt +13 -0
- data/lib/bundler/templates/newgem/Gemfile.tt +24 -0
- data/lib/bundler/templates/newgem/LICENSE.txt.tt +21 -0
- data/lib/bundler/templates/newgem/README.md.tt +49 -0
- data/lib/bundler/templates/newgem/Rakefile.tt +72 -0
- data/lib/bundler/templates/newgem/bin/console.tt +11 -0
- data/lib/bundler/templates/newgem/bin/setup.tt +8 -0
- data/lib/bundler/templates/newgem/circleci/config.yml.tt +37 -0
- data/lib/bundler/templates/newgem/exe/newgem.tt +3 -0
- data/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +22 -0
- data/lib/bundler/templates/newgem/ext/newgem/build.rs.tt +5 -0
- data/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +10 -0
- data/lib/bundler/templates/newgem/ext/newgem/extconf-go.rb.tt +11 -0
- data/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +6 -0
- data/lib/bundler/templates/newgem/ext/newgem/go.mod.tt +5 -0
- data/lib/bundler/templates/newgem/ext/newgem/newgem-go.c.tt +2 -0
- data/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +9 -0
- data/lib/bundler/templates/newgem/ext/newgem/newgem.go.tt +31 -0
- data/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt +6 -0
- data/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt +23 -0
- data/lib/bundler/templates/newgem/github/workflows/build-gems.yml.tt +69 -0
- data/lib/bundler/templates/newgem/github/workflows/main.yml.tt +48 -0
- data/lib/bundler/templates/newgem/gitignore.tt +23 -0
- data/lib/bundler/templates/newgem/gitlab-ci.yml.tt +27 -0
- data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +9 -0
- data/lib/bundler/templates/newgem/lib/newgem.rb.tt +15 -0
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +58 -0
- data/lib/bundler/templates/newgem/rspec.tt +3 -0
- data/lib/bundler/templates/newgem/rubocop.yml.tt +8 -0
- data/lib/bundler/templates/newgem/sig/newgem.rbs.tt +8 -0
- data/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +19 -0
- data/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +15 -0
- data/lib/bundler/templates/newgem/standard.yml.tt +3 -0
- data/lib/bundler/templates/newgem/test/minitest/test_helper.rb.tt +6 -0
- data/lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt +19 -0
- data/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/lib/bundler/ui/rg_proxy.rb +19 -0
- data/lib/bundler/ui/shell.rb +191 -0
- data/lib/bundler/ui/silent.rb +96 -0
- data/lib/bundler/ui.rb +9 -0
- data/lib/bundler/uri_credentials_filter.rb +43 -0
- data/lib/bundler/uri_normalizer.rb +23 -0
- data/lib/bundler/vendor/.document +1 -0
- data/lib/bundler/vendor/connection_pool/LICENSE +20 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +227 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +3 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool/wrapper.rb +56 -0
- data/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +230 -0
- data/lib/bundler/vendor/fileutils/COPYING +56 -0
- data/lib/bundler/vendor/fileutils/lib/fileutils.rb +2701 -0
- data/lib/bundler/vendor/net-http-persistent/README.rdoc +82 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/connection.rb +41 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/pool.rb +65 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent/timed_stack_multi.rb +80 -0
- data/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +1153 -0
- data/lib/bundler/vendor/pub_grub/LICENSE.txt +21 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/assignment.rb +20 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/basic_package_source.rb +169 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/failure_writer.rb +182 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/incompatibility.rb +150 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/package.rb +43 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/partial_solution.rb +121 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/rubygems.rb +45 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/solve_failure.rb +19 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/static_package_source.rb +61 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/strategy.rb +42 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/term.rb +105 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version.rb +3 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_constraint.rb +129 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_range.rb +423 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_solver.rb +236 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub/version_union.rb +178 -0
- data/lib/bundler/vendor/pub_grub/lib/pub_grub.rb +31 -0
- data/lib/bundler/vendor/securerandom/COPYING +56 -0
- data/lib/bundler/vendor/securerandom/lib/securerandom.rb +102 -0
- data/lib/bundler/vendor/thor/LICENSE.md +20 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/create_file.rb +105 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +61 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/directory.rb +108 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/empty_directory.rb +143 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/file_manipulation.rb +407 -0
- data/lib/bundler/vendor/thor/lib/thor/actions/inject_into_file.rb +130 -0
- data/lib/bundler/vendor/thor/lib/thor/actions.rb +340 -0
- data/lib/bundler/vendor/thor/lib/thor/base.rb +825 -0
- data/lib/bundler/vendor/thor/lib/thor/command.rb +151 -0
- data/lib/bundler/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +107 -0
- data/lib/bundler/vendor/thor/lib/thor/error.rb +106 -0
- data/lib/bundler/vendor/thor/lib/thor/group.rb +292 -0
- data/lib/bundler/vendor/thor/lib/thor/invocation.rb +178 -0
- data/lib/bundler/vendor/thor/lib/thor/line_editor/basic.rb +37 -0
- data/lib/bundler/vendor/thor/lib/thor/line_editor/readline.rb +88 -0
- data/lib/bundler/vendor/thor/lib/thor/line_editor.rb +17 -0
- data/lib/bundler/vendor/thor/lib/thor/nested_context.rb +29 -0
- data/lib/bundler/vendor/thor/lib/thor/parser/argument.rb +86 -0
- data/lib/bundler/vendor/thor/lib/thor/parser/arguments.rb +195 -0
- data/lib/bundler/vendor/thor/lib/thor/parser/option.rb +178 -0
- data/lib/bundler/vendor/thor/lib/thor/parser/options.rb +294 -0
- data/lib/bundler/vendor/thor/lib/thor/parser.rb +4 -0
- data/lib/bundler/vendor/thor/lib/thor/rake_compat.rb +72 -0
- data/lib/bundler/vendor/thor/lib/thor/runner.rb +335 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/basic.rb +384 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/color.rb +112 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/column_printer.rb +29 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/html.rb +81 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/table_printer.rb +118 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/terminal.rb +42 -0
- data/lib/bundler/vendor/thor/lib/thor/shell/wrapped_printer.rb +38 -0
- data/lib/bundler/vendor/thor/lib/thor/shell.rb +81 -0
- data/lib/bundler/vendor/thor/lib/thor/util.rb +285 -0
- data/lib/bundler/vendor/thor/lib/thor/version.rb +3 -0
- data/lib/bundler/vendor/thor/lib/thor.rb +674 -0
- data/lib/bundler/vendor/tsort/LICENSE.txt +22 -0
- data/lib/bundler/vendor/tsort/lib/tsort.rb +455 -0
- data/lib/bundler/vendor/uri/COPYING +56 -0
- data/lib/bundler/vendor/uri/lib/uri/common.rb +922 -0
- data/lib/bundler/vendor/uri/lib/uri/file.rb +100 -0
- data/lib/bundler/vendor/uri/lib/uri/ftp.rb +267 -0
- data/lib/bundler/vendor/uri/lib/uri/generic.rb +1592 -0
- data/lib/bundler/vendor/uri/lib/uri/http.rb +137 -0
- data/lib/bundler/vendor/uri/lib/uri/https.rb +23 -0
- data/lib/bundler/vendor/uri/lib/uri/ldap.rb +261 -0
- data/lib/bundler/vendor/uri/lib/uri/ldaps.rb +22 -0
- data/lib/bundler/vendor/uri/lib/uri/mailto.rb +293 -0
- data/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +547 -0
- data/lib/bundler/vendor/uri/lib/uri/rfc3986_parser.rb +206 -0
- data/lib/bundler/vendor/uri/lib/uri/version.rb +6 -0
- data/lib/bundler/vendor/uri/lib/uri/ws.rb +83 -0
- data/lib/bundler/vendor/uri/lib/uri/wss.rb +23 -0
- data/lib/bundler/vendor/uri/lib/uri.rb +104 -0
- data/lib/bundler/vendored_fileutils.rb +4 -0
- data/lib/bundler/vendored_net_http.rb +23 -0
- data/lib/bundler/vendored_persistent.rb +11 -0
- data/lib/bundler/vendored_pub_grub.rb +4 -0
- data/lib/bundler/vendored_securerandom.rb +12 -0
- data/lib/bundler/vendored_thor.rb +8 -0
- data/lib/bundler/vendored_timeout.rb +12 -0
- data/lib/bundler/vendored_tsort.rb +4 -0
- data/lib/bundler/vendored_uri.rb +21 -0
- data/lib/bundler/version.rb +21 -0
- data/lib/bundler/vlad.rb +4 -0
- data/lib/bundler/worker.rb +125 -0
- data/lib/bundler/yaml_serializer.rb +98 -0
- data/lib/bundler.rb +691 -0
- metadata +409 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
module Bundler::URI
|
|
3
|
+
class RFC3986_Parser # :nodoc:
|
|
4
|
+
# Bundler::URI defined in RFC3986
|
|
5
|
+
HOST = %r[
|
|
6
|
+
(?<IP-literal>\[(?:
|
|
7
|
+
(?<IPv6address>
|
|
8
|
+
(?:\h{1,4}:){6}
|
|
9
|
+
(?<ls32>\h{1,4}:\h{1,4}
|
|
10
|
+
| (?<IPv4address>(?<dec-octet>[1-9]\d|1\d{2}|2[0-4]\d|25[0-5]|\d)
|
|
11
|
+
\.\g<dec-octet>\.\g<dec-octet>\.\g<dec-octet>)
|
|
12
|
+
)
|
|
13
|
+
| ::(?:\h{1,4}:){5}\g<ls32>
|
|
14
|
+
| \h{1,4}?::(?:\h{1,4}:){4}\g<ls32>
|
|
15
|
+
| (?:(?:\h{1,4}:)?\h{1,4})?::(?:\h{1,4}:){3}\g<ls32>
|
|
16
|
+
| (?:(?:\h{1,4}:){,2}\h{1,4})?::(?:\h{1,4}:){2}\g<ls32>
|
|
17
|
+
| (?:(?:\h{1,4}:){,3}\h{1,4})?::\h{1,4}:\g<ls32>
|
|
18
|
+
| (?:(?:\h{1,4}:){,4}\h{1,4})?::\g<ls32>
|
|
19
|
+
| (?:(?:\h{1,4}:){,5}\h{1,4})?::\h{1,4}
|
|
20
|
+
| (?:(?:\h{1,4}:){,6}\h{1,4})?::
|
|
21
|
+
)
|
|
22
|
+
| (?<IPvFuture>v\h++\.[!$&-.0-9:;=A-Z_a-z~]++)
|
|
23
|
+
)\])
|
|
24
|
+
| \g<IPv4address>
|
|
25
|
+
| (?<reg-name>(?:%\h\h|[!$&-.0-9;=A-Z_a-z~])*+)
|
|
26
|
+
]x
|
|
27
|
+
|
|
28
|
+
USERINFO = /(?:%\h\h|[!$&-.0-9:;=A-Z_a-z~])*+/
|
|
29
|
+
|
|
30
|
+
SCHEME = %r[[A-Za-z][+\-.0-9A-Za-z]*+].source
|
|
31
|
+
SEG = %r[(?:%\h\h|[!$&-.0-9:;=@A-Z_a-z~/])].source
|
|
32
|
+
SEG_NC = %r[(?:%\h\h|[!$&-.0-9;=@A-Z_a-z~])].source
|
|
33
|
+
FRAGMENT = %r[(?:%\h\h|[!$&-.0-9:;=@A-Z_a-z~/?])*+].source
|
|
34
|
+
|
|
35
|
+
RFC3986_URI = %r[\A
|
|
36
|
+
(?<seg>#{SEG}){0}
|
|
37
|
+
(?<Bundler::URI>
|
|
38
|
+
(?<scheme>#{SCHEME}):
|
|
39
|
+
(?<hier-part>//
|
|
40
|
+
(?<authority>
|
|
41
|
+
(?:(?<userinfo>#{USERINFO.source})@)?
|
|
42
|
+
(?<host>#{HOST.source.delete(" \n")})
|
|
43
|
+
(?::(?<port>\d*+))?
|
|
44
|
+
)
|
|
45
|
+
(?<path-abempty>(?:/\g<seg>*+)?)
|
|
46
|
+
| (?<path-absolute>/((?!/)\g<seg>++)?)
|
|
47
|
+
| (?<path-rootless>(?!/)\g<seg>++)
|
|
48
|
+
| (?<path-empty>)
|
|
49
|
+
)
|
|
50
|
+
(?:\?(?<query>[^\#]*+))?
|
|
51
|
+
(?:\#(?<fragment>#{FRAGMENT}))?
|
|
52
|
+
)\z]x
|
|
53
|
+
|
|
54
|
+
RFC3986_relative_ref = %r[\A
|
|
55
|
+
(?<seg>#{SEG}){0}
|
|
56
|
+
(?<relative-ref>
|
|
57
|
+
(?<relative-part>//
|
|
58
|
+
(?<authority>
|
|
59
|
+
(?:(?<userinfo>#{USERINFO.source})@)?
|
|
60
|
+
(?<host>#{HOST.source.delete(" \n")}(?<!/))?
|
|
61
|
+
(?::(?<port>\d*+))?
|
|
62
|
+
)
|
|
63
|
+
(?<path-abempty>(?:/\g<seg>*+)?)
|
|
64
|
+
| (?<path-absolute>/\g<seg>*+)
|
|
65
|
+
| (?<path-noscheme>#{SEG_NC}++(?:/\g<seg>*+)?)
|
|
66
|
+
| (?<path-empty>)
|
|
67
|
+
)
|
|
68
|
+
(?:\?(?<query>[^#]*+))?
|
|
69
|
+
(?:\#(?<fragment>#{FRAGMENT}))?
|
|
70
|
+
)\z]x
|
|
71
|
+
attr_reader :regexp
|
|
72
|
+
|
|
73
|
+
def initialize
|
|
74
|
+
@regexp = default_regexp.each_value(&:freeze).freeze
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def split(uri) #:nodoc:
|
|
78
|
+
begin
|
|
79
|
+
uri = uri.to_str
|
|
80
|
+
rescue NoMethodError
|
|
81
|
+
raise InvalidURIError, "bad Bundler::URI (is not Bundler::URI?): #{uri.inspect}"
|
|
82
|
+
end
|
|
83
|
+
uri.ascii_only? or
|
|
84
|
+
raise InvalidURIError, "Bundler::URI must be ascii only #{uri.dump}"
|
|
85
|
+
if m = RFC3986_URI.match(uri)
|
|
86
|
+
query = m["query"]
|
|
87
|
+
scheme = m["scheme"]
|
|
88
|
+
opaque = m["path-rootless"]
|
|
89
|
+
if opaque
|
|
90
|
+
opaque << "?#{query}" if query
|
|
91
|
+
[ scheme,
|
|
92
|
+
nil, # userinfo
|
|
93
|
+
nil, # host
|
|
94
|
+
nil, # port
|
|
95
|
+
nil, # registry
|
|
96
|
+
nil, # path
|
|
97
|
+
opaque,
|
|
98
|
+
nil, # query
|
|
99
|
+
m["fragment"]
|
|
100
|
+
]
|
|
101
|
+
else # normal
|
|
102
|
+
[ scheme,
|
|
103
|
+
m["userinfo"],
|
|
104
|
+
m["host"],
|
|
105
|
+
m["port"],
|
|
106
|
+
nil, # registry
|
|
107
|
+
(m["path-abempty"] ||
|
|
108
|
+
m["path-absolute"] ||
|
|
109
|
+
m["path-empty"]),
|
|
110
|
+
nil, # opaque
|
|
111
|
+
query,
|
|
112
|
+
m["fragment"]
|
|
113
|
+
]
|
|
114
|
+
end
|
|
115
|
+
elsif m = RFC3986_relative_ref.match(uri)
|
|
116
|
+
[ nil, # scheme
|
|
117
|
+
m["userinfo"],
|
|
118
|
+
m["host"],
|
|
119
|
+
m["port"],
|
|
120
|
+
nil, # registry,
|
|
121
|
+
(m["path-abempty"] ||
|
|
122
|
+
m["path-absolute"] ||
|
|
123
|
+
m["path-noscheme"] ||
|
|
124
|
+
m["path-empty"]),
|
|
125
|
+
nil, # opaque
|
|
126
|
+
m["query"],
|
|
127
|
+
m["fragment"]
|
|
128
|
+
]
|
|
129
|
+
else
|
|
130
|
+
raise InvalidURIError, "bad Bundler::URI (is not Bundler::URI?): #{uri.inspect}"
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def parse(uri) # :nodoc:
|
|
135
|
+
Bundler::URI.for(*self.split(uri), self)
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def join(*uris) # :nodoc:
|
|
139
|
+
uris[0] = convert_to_uri(uris[0])
|
|
140
|
+
uris.inject :merge
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
# Compatibility for RFC2396 parser
|
|
144
|
+
def extract(str, schemes = nil, &block) # :nodoc:
|
|
145
|
+
warn "Bundler::URI::RFC3986_PARSER.extract is obsolete. Use Bundler::URI::RFC2396_PARSER.extract explicitly.", uplevel: 1 if $VERBOSE
|
|
146
|
+
RFC2396_PARSER.extract(str, schemes, &block)
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
# Compatibility for RFC2396 parser
|
|
150
|
+
def make_regexp(schemes = nil) # :nodoc:
|
|
151
|
+
warn "Bundler::URI::RFC3986_PARSER.make_regexp is obsolete. Use Bundler::URI::RFC2396_PARSER.make_regexp explicitly.", uplevel: 1 if $VERBOSE
|
|
152
|
+
RFC2396_PARSER.make_regexp(schemes)
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# Compatibility for RFC2396 parser
|
|
156
|
+
def escape(str, unsafe = nil) # :nodoc:
|
|
157
|
+
warn "Bundler::URI::RFC3986_PARSER.escape is obsolete. Use Bundler::URI::RFC2396_PARSER.escape explicitly.", uplevel: 1 if $VERBOSE
|
|
158
|
+
unsafe ? RFC2396_PARSER.escape(str, unsafe) : RFC2396_PARSER.escape(str)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
# Compatibility for RFC2396 parser
|
|
162
|
+
def unescape(str, escaped = nil) # :nodoc:
|
|
163
|
+
warn "Bundler::URI::RFC3986_PARSER.unescape is obsolete. Use Bundler::URI::RFC2396_PARSER.unescape explicitly.", uplevel: 1 if $VERBOSE
|
|
164
|
+
escaped ? RFC2396_PARSER.unescape(str, escaped) : RFC2396_PARSER.unescape(str)
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
@@to_s = Kernel.instance_method(:to_s)
|
|
168
|
+
if @@to_s.respond_to?(:bind_call)
|
|
169
|
+
def inspect
|
|
170
|
+
@@to_s.bind_call(self)
|
|
171
|
+
end
|
|
172
|
+
else
|
|
173
|
+
def inspect
|
|
174
|
+
@@to_s.bind(self).call
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
private
|
|
179
|
+
|
|
180
|
+
def default_regexp # :nodoc:
|
|
181
|
+
{
|
|
182
|
+
SCHEME: %r[\A#{SCHEME}\z]o,
|
|
183
|
+
USERINFO: %r[\A#{USERINFO}\z]o,
|
|
184
|
+
HOST: %r[\A#{HOST}\z]o,
|
|
185
|
+
ABS_PATH: %r[\A/#{SEG}*+\z]o,
|
|
186
|
+
REL_PATH: %r[\A(?!/)#{SEG}++\z]o,
|
|
187
|
+
QUERY: %r[\A(?:%\h\h|[!$&-.0-9:;=@A-Z_a-z~/?])*+\z],
|
|
188
|
+
FRAGMENT: %r[\A#{FRAGMENT}\z]o,
|
|
189
|
+
OPAQUE: %r[\A(?:[^/].*)?\z],
|
|
190
|
+
PORT: /\A[\x09\x0a\x0c\x0d ]*+\d*[\x09\x0a\x0c\x0d ]*\z/,
|
|
191
|
+
}
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def convert_to_uri(uri)
|
|
195
|
+
if uri.is_a?(Bundler::URI::Generic)
|
|
196
|
+
uri
|
|
197
|
+
elsif uri = String.try_convert(uri)
|
|
198
|
+
parse(uri)
|
|
199
|
+
else
|
|
200
|
+
raise ArgumentError,
|
|
201
|
+
"bad argument (expected Bundler::URI object or Bundler::URI string)"
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
end # class Parser
|
|
206
|
+
end # module Bundler::URI
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# frozen_string_literal: false
|
|
2
|
+
# = uri/ws.rb
|
|
3
|
+
#
|
|
4
|
+
# Author:: Matt Muller <mamuller@amazon.com>
|
|
5
|
+
# License:: You can redistribute it and/or modify it under the same term as Ruby.
|
|
6
|
+
#
|
|
7
|
+
# See Bundler::URI for general documentation
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require_relative 'generic'
|
|
11
|
+
|
|
12
|
+
module Bundler::URI
|
|
13
|
+
|
|
14
|
+
#
|
|
15
|
+
# The syntax of WS URIs is defined in RFC6455 section 3.
|
|
16
|
+
#
|
|
17
|
+
# Note that the Ruby Bundler::URI library allows WS URLs containing usernames and
|
|
18
|
+
# passwords. This is not legal as per the RFC, but used to be
|
|
19
|
+
# supported in Internet Explorer 5 and 6, before the MS04-004 security
|
|
20
|
+
# update. See <URL:http://support.microsoft.com/kb/834489>.
|
|
21
|
+
#
|
|
22
|
+
class WS < Generic
|
|
23
|
+
# A Default port of 80 for Bundler::URI::WS.
|
|
24
|
+
DEFAULT_PORT = 80
|
|
25
|
+
|
|
26
|
+
# An Array of the available components for Bundler::URI::WS.
|
|
27
|
+
COMPONENT = %i[
|
|
28
|
+
scheme
|
|
29
|
+
userinfo host port
|
|
30
|
+
path
|
|
31
|
+
query
|
|
32
|
+
].freeze
|
|
33
|
+
|
|
34
|
+
#
|
|
35
|
+
# == Description
|
|
36
|
+
#
|
|
37
|
+
# Creates a new Bundler::URI::WS object from components, with syntax checking.
|
|
38
|
+
#
|
|
39
|
+
# The components accepted are userinfo, host, port, path, and query.
|
|
40
|
+
#
|
|
41
|
+
# The components should be provided either as an Array, or as a Hash
|
|
42
|
+
# with keys formed by preceding the component names with a colon.
|
|
43
|
+
#
|
|
44
|
+
# If an Array is used, the components must be passed in the
|
|
45
|
+
# order <code>[userinfo, host, port, path, query]</code>.
|
|
46
|
+
#
|
|
47
|
+
# Example:
|
|
48
|
+
#
|
|
49
|
+
# uri = Bundler::URI::WS.build(host: 'www.example.com', path: '/foo/bar')
|
|
50
|
+
#
|
|
51
|
+
# uri = Bundler::URI::WS.build([nil, "www.example.com", nil, "/path", "query"])
|
|
52
|
+
#
|
|
53
|
+
# Currently, if passed userinfo components this method generates
|
|
54
|
+
# invalid WS URIs as per RFC 1738.
|
|
55
|
+
#
|
|
56
|
+
def self.build(args)
|
|
57
|
+
tmp = Util.make_components_hash(self, args)
|
|
58
|
+
super(tmp)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
#
|
|
62
|
+
# == Description
|
|
63
|
+
#
|
|
64
|
+
# Returns the full path for a WS Bundler::URI, as required by Net::HTTP::Get.
|
|
65
|
+
#
|
|
66
|
+
# If the Bundler::URI contains a query, the full path is Bundler::URI#path + '?' + Bundler::URI#query.
|
|
67
|
+
# Otherwise, the path is simply Bundler::URI#path.
|
|
68
|
+
#
|
|
69
|
+
# Example:
|
|
70
|
+
#
|
|
71
|
+
# uri = Bundler::URI::WS.build(path: '/foo/bar', query: 'test=true')
|
|
72
|
+
# uri.request_uri # => "/foo/bar?test=true"
|
|
73
|
+
#
|
|
74
|
+
def request_uri
|
|
75
|
+
return unless @path
|
|
76
|
+
|
|
77
|
+
url = @query ? "#@path?#@query" : @path.dup
|
|
78
|
+
url.start_with?(?/.freeze) ? url : ?/ + url
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
register_scheme 'WS', WS
|
|
83
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: false
|
|
2
|
+
# = uri/wss.rb
|
|
3
|
+
#
|
|
4
|
+
# Author:: Matt Muller <mamuller@amazon.com>
|
|
5
|
+
# License:: You can redistribute it and/or modify it under the same term as Ruby.
|
|
6
|
+
#
|
|
7
|
+
# See Bundler::URI for general documentation
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require_relative 'ws'
|
|
11
|
+
|
|
12
|
+
module Bundler::URI
|
|
13
|
+
|
|
14
|
+
# The default port for WSS URIs is 443, and the scheme is 'wss:' rather
|
|
15
|
+
# than 'ws:'. Other than that, WSS URIs are identical to WS URIs;
|
|
16
|
+
# see Bundler::URI::WS.
|
|
17
|
+
class WSS < WS
|
|
18
|
+
# A Default port of 443 for Bundler::URI::WSS
|
|
19
|
+
DEFAULT_PORT = 443
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
register_scheme 'WSS', WSS
|
|
23
|
+
end
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# frozen_string_literal: false
|
|
2
|
+
# Bundler::URI is a module providing classes to handle Uniform Resource Identifiers
|
|
3
|
+
# (RFC2396[https://www.rfc-editor.org/rfc/rfc2396]).
|
|
4
|
+
#
|
|
5
|
+
# == Features
|
|
6
|
+
#
|
|
7
|
+
# * Uniform way of handling URIs.
|
|
8
|
+
# * Flexibility to introduce custom Bundler::URI schemes.
|
|
9
|
+
# * Flexibility to have an alternate Bundler::URI::Parser (or just different patterns
|
|
10
|
+
# and regexp's).
|
|
11
|
+
#
|
|
12
|
+
# == Basic example
|
|
13
|
+
#
|
|
14
|
+
# require 'bundler/vendor/uri/lib/uri'
|
|
15
|
+
#
|
|
16
|
+
# uri = Bundler::URI("http://foo.com/posts?id=30&limit=5#time=1305298413")
|
|
17
|
+
# #=> #<Bundler::URI::HTTP http://foo.com/posts?id=30&limit=5#time=1305298413>
|
|
18
|
+
#
|
|
19
|
+
# uri.scheme #=> "http"
|
|
20
|
+
# uri.host #=> "foo.com"
|
|
21
|
+
# uri.path #=> "/posts"
|
|
22
|
+
# uri.query #=> "id=30&limit=5"
|
|
23
|
+
# uri.fragment #=> "time=1305298413"
|
|
24
|
+
#
|
|
25
|
+
# uri.to_s #=> "http://foo.com/posts?id=30&limit=5#time=1305298413"
|
|
26
|
+
#
|
|
27
|
+
# == Adding custom URIs
|
|
28
|
+
#
|
|
29
|
+
# module Bundler::URI
|
|
30
|
+
# class RSYNC < Generic
|
|
31
|
+
# DEFAULT_PORT = 873
|
|
32
|
+
# end
|
|
33
|
+
# register_scheme 'RSYNC', RSYNC
|
|
34
|
+
# end
|
|
35
|
+
# #=> Bundler::URI::RSYNC
|
|
36
|
+
#
|
|
37
|
+
# Bundler::URI.scheme_list
|
|
38
|
+
# #=> {"FILE"=>Bundler::URI::File, "FTP"=>Bundler::URI::FTP, "HTTP"=>Bundler::URI::HTTP,
|
|
39
|
+
# # "HTTPS"=>Bundler::URI::HTTPS, "LDAP"=>Bundler::URI::LDAP, "LDAPS"=>Bundler::URI::LDAPS,
|
|
40
|
+
# # "MAILTO"=>Bundler::URI::MailTo, "RSYNC"=>Bundler::URI::RSYNC}
|
|
41
|
+
#
|
|
42
|
+
# uri = Bundler::URI("rsync://rsync.foo.com")
|
|
43
|
+
# #=> #<Bundler::URI::RSYNC rsync://rsync.foo.com>
|
|
44
|
+
#
|
|
45
|
+
# == RFC References
|
|
46
|
+
#
|
|
47
|
+
# A good place to view an RFC spec is http://www.ietf.org/rfc.html.
|
|
48
|
+
#
|
|
49
|
+
# Here is a list of all related RFC's:
|
|
50
|
+
# - RFC822[https://www.rfc-editor.org/rfc/rfc822]
|
|
51
|
+
# - RFC1738[https://www.rfc-editor.org/rfc/rfc1738]
|
|
52
|
+
# - RFC2255[https://www.rfc-editor.org/rfc/rfc2255]
|
|
53
|
+
# - RFC2368[https://www.rfc-editor.org/rfc/rfc2368]
|
|
54
|
+
# - RFC2373[https://www.rfc-editor.org/rfc/rfc2373]
|
|
55
|
+
# - RFC2396[https://www.rfc-editor.org/rfc/rfc2396]
|
|
56
|
+
# - RFC2732[https://www.rfc-editor.org/rfc/rfc2732]
|
|
57
|
+
# - RFC3986[https://www.rfc-editor.org/rfc/rfc3986]
|
|
58
|
+
#
|
|
59
|
+
# == Class tree
|
|
60
|
+
#
|
|
61
|
+
# - Bundler::URI::Generic (in uri/generic.rb)
|
|
62
|
+
# - Bundler::URI::File - (in uri/file.rb)
|
|
63
|
+
# - Bundler::URI::FTP - (in uri/ftp.rb)
|
|
64
|
+
# - Bundler::URI::HTTP - (in uri/http.rb)
|
|
65
|
+
# - Bundler::URI::HTTPS - (in uri/https.rb)
|
|
66
|
+
# - Bundler::URI::LDAP - (in uri/ldap.rb)
|
|
67
|
+
# - Bundler::URI::LDAPS - (in uri/ldaps.rb)
|
|
68
|
+
# - Bundler::URI::MailTo - (in uri/mailto.rb)
|
|
69
|
+
# - Bundler::URI::Parser - (in uri/common.rb)
|
|
70
|
+
# - Bundler::URI::REGEXP - (in uri/common.rb)
|
|
71
|
+
# - Bundler::URI::REGEXP::PATTERN - (in uri/common.rb)
|
|
72
|
+
# - Bundler::URI::Util - (in uri/common.rb)
|
|
73
|
+
# - Bundler::URI::Error - (in uri/common.rb)
|
|
74
|
+
# - Bundler::URI::InvalidURIError - (in uri/common.rb)
|
|
75
|
+
# - Bundler::URI::InvalidComponentError - (in uri/common.rb)
|
|
76
|
+
# - Bundler::URI::BadURIError - (in uri/common.rb)
|
|
77
|
+
#
|
|
78
|
+
# == Copyright Info
|
|
79
|
+
#
|
|
80
|
+
# Author:: Akira Yamada <akira@ruby-lang.org>
|
|
81
|
+
# Documentation::
|
|
82
|
+
# Akira Yamada <akira@ruby-lang.org>
|
|
83
|
+
# Dmitry V. Sabanin <sdmitry@lrn.ru>
|
|
84
|
+
# Vincent Batts <vbatts@hashbangbash.com>
|
|
85
|
+
# License::
|
|
86
|
+
# Copyright (c) 2001 akira yamada <akira@ruby-lang.org>
|
|
87
|
+
# You can redistribute it and/or modify it under the same term as Ruby.
|
|
88
|
+
#
|
|
89
|
+
|
|
90
|
+
module Bundler::URI
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
require_relative 'uri/version'
|
|
94
|
+
require_relative 'uri/common'
|
|
95
|
+
require_relative 'uri/generic'
|
|
96
|
+
require_relative 'uri/file'
|
|
97
|
+
require_relative 'uri/ftp'
|
|
98
|
+
require_relative 'uri/http'
|
|
99
|
+
require_relative 'uri/https'
|
|
100
|
+
require_relative 'uri/ldap'
|
|
101
|
+
require_relative 'uri/ldaps'
|
|
102
|
+
require_relative 'uri/mailto'
|
|
103
|
+
require_relative 'uri/ws'
|
|
104
|
+
require_relative 'uri/wss'
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# This defined? guard can be removed once RubyGems 3.4 support is dropped.
|
|
4
|
+
#
|
|
5
|
+
# Bundler specs load this code from `spec/support/vendored_net_http.rb` to avoid
|
|
6
|
+
# activating the Bundler gem too early. Without this guard, we get redefinition
|
|
7
|
+
# warnings once Bundler is actually activated and
|
|
8
|
+
# `lib/bundler/vendored_net_http.rb` is required. This is not an issue in
|
|
9
|
+
# RubyGems versions including `rubygems/vendored_net_http` since `require` takes
|
|
10
|
+
# care of avoiding the double load.
|
|
11
|
+
#
|
|
12
|
+
unless defined?(Gem::Net)
|
|
13
|
+
begin
|
|
14
|
+
require "rubygems/vendored_net_http"
|
|
15
|
+
rescue LoadError
|
|
16
|
+
begin
|
|
17
|
+
require "rubygems/net/http"
|
|
18
|
+
rescue LoadError
|
|
19
|
+
require "net/http"
|
|
20
|
+
Gem::Net = Net
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Use RubyGems vendored copy when available. Otherwise fallback to Bundler
|
|
4
|
+
# vendored copy. The vendored copy in Bundler can be removed once support for
|
|
5
|
+
# RubyGems 3.5.18 is dropped.
|
|
6
|
+
|
|
7
|
+
begin
|
|
8
|
+
require "rubygems/vendored_securerandom"
|
|
9
|
+
rescue LoadError
|
|
10
|
+
require_relative "vendor/securerandom/lib/securerandom"
|
|
11
|
+
Gem::SecureRandom = Bundler::SecureRandom
|
|
12
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bundler; end
|
|
4
|
+
|
|
5
|
+
# Use RubyGems vendored copy when available. Otherwise fallback to Bundler
|
|
6
|
+
# vendored copy. The vendored copy in Bundler can be removed once support for
|
|
7
|
+
# RubyGems 3.5 is dropped.
|
|
8
|
+
|
|
9
|
+
begin
|
|
10
|
+
require "rubygems/vendor/uri/lib/uri"
|
|
11
|
+
rescue LoadError
|
|
12
|
+
require_relative "vendor/uri/lib/uri"
|
|
13
|
+
Gem::URI = Bundler::URI
|
|
14
|
+
|
|
15
|
+
module Gem
|
|
16
|
+
def URI(uri) # rubocop:disable Naming/MethodName
|
|
17
|
+
Bundler::URI(uri)
|
|
18
|
+
end
|
|
19
|
+
module_function :URI
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: false
|
|
2
|
+
|
|
3
|
+
module Bundler
|
|
4
|
+
VERSION = "4.0.15".freeze
|
|
5
|
+
|
|
6
|
+
def self.bundler_major_version
|
|
7
|
+
@bundler_major_version ||= gem_version.segments.first
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def self.gem_version
|
|
11
|
+
@gem_version ||= Gem::Version.create(VERSION)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def self.verbose_version
|
|
15
|
+
@verbose_version ||= "#{VERSION}#{simulated_version ? " (simulating Bundler #{simulated_version})" : ""}"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.simulated_version
|
|
19
|
+
@simulated_version ||= Bundler.settings[:simulate_version]
|
|
20
|
+
end
|
|
21
|
+
end
|
data/lib/bundler/vlad.rb
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Bundler
|
|
4
|
+
class Worker
|
|
5
|
+
POISON = Object.new
|
|
6
|
+
|
|
7
|
+
class WrappedException < StandardError
|
|
8
|
+
attr_reader :exception
|
|
9
|
+
def initialize(exn)
|
|
10
|
+
@exception = exn
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# @return [String] the name of the worker
|
|
15
|
+
attr_reader :name
|
|
16
|
+
|
|
17
|
+
# Creates a worker pool of specified size
|
|
18
|
+
#
|
|
19
|
+
# @param size [Integer] Size of pool
|
|
20
|
+
# @param name [String] name the name of the worker
|
|
21
|
+
# @param func [Proc] job to run in inside the worker pool
|
|
22
|
+
def initialize(size, name, func)
|
|
23
|
+
@name = name
|
|
24
|
+
@request_queue = Thread::Queue.new
|
|
25
|
+
@request_queue_with_priority = Thread::Queue.new
|
|
26
|
+
@response_queue = Thread::Queue.new
|
|
27
|
+
@func = func
|
|
28
|
+
@size = size
|
|
29
|
+
@threads = nil
|
|
30
|
+
@previous_interrupt_handler = nil
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Enqueue a request to be executed in the worker pool
|
|
34
|
+
#
|
|
35
|
+
# @param obj [String] mostly it is name of spec that should be downloaded
|
|
36
|
+
def enq(obj, priority: false)
|
|
37
|
+
queue = priority ? @request_queue_with_priority : @request_queue
|
|
38
|
+
create_threads unless @threads
|
|
39
|
+
queue.enq obj
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Retrieves results of job function being executed in worker pool
|
|
43
|
+
def deq
|
|
44
|
+
result = @response_queue.deq
|
|
45
|
+
raise result.exception if result.is_a?(WrappedException)
|
|
46
|
+
result
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def stop
|
|
50
|
+
stop_threads
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
def process_queue(i)
|
|
56
|
+
loop do
|
|
57
|
+
obj = begin
|
|
58
|
+
@request_queue_with_priority.deq(true)
|
|
59
|
+
rescue ThreadError
|
|
60
|
+
@request_queue.deq(false, timeout: 0.05)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
next if obj.nil?
|
|
64
|
+
break if obj.equal? POISON
|
|
65
|
+
@response_queue.enq apply_func(obj, i)
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def apply_func(obj, i)
|
|
70
|
+
@func.call(obj, i)
|
|
71
|
+
rescue Exception => e # rubocop:disable Lint/RescueException
|
|
72
|
+
WrappedException.new(e)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Stop the worker threads by sending a poison object down the request queue
|
|
76
|
+
# so as worker threads after retrieving it, shut themselves down
|
|
77
|
+
def stop_threads
|
|
78
|
+
return unless @threads
|
|
79
|
+
|
|
80
|
+
@threads.each { @request_queue.enq POISON }
|
|
81
|
+
@threads.each(&:join)
|
|
82
|
+
|
|
83
|
+
remove_interrupt_handler
|
|
84
|
+
|
|
85
|
+
@threads = nil
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def abort_threads
|
|
89
|
+
Bundler.ui.debug("\n#{caller.join("\n")}")
|
|
90
|
+
@threads.each(&:exit)
|
|
91
|
+
exit 1
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def create_threads
|
|
95
|
+
creation_errors = []
|
|
96
|
+
|
|
97
|
+
@threads = Array.new(@size) do |i|
|
|
98
|
+
Thread.start { process_queue(i) }.tap do |thread|
|
|
99
|
+
thread.name = "#{name} Worker ##{i}"
|
|
100
|
+
end
|
|
101
|
+
rescue ThreadError => e
|
|
102
|
+
creation_errors << e
|
|
103
|
+
nil
|
|
104
|
+
end.compact
|
|
105
|
+
|
|
106
|
+
add_interrupt_handler unless @threads.empty?
|
|
107
|
+
|
|
108
|
+
return if creation_errors.empty?
|
|
109
|
+
|
|
110
|
+
message = "Failed to create threads for the #{name} worker: #{creation_errors.map(&:to_s).uniq.join(", ")}"
|
|
111
|
+
raise ThreadCreationError, message if @threads.empty?
|
|
112
|
+
Bundler.ui.info message
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def add_interrupt_handler
|
|
116
|
+
@previous_interrupt_handler = trap("INT") { abort_threads }
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def remove_interrupt_handler
|
|
120
|
+
return unless @previous_interrupt_handler
|
|
121
|
+
|
|
122
|
+
trap "INT", @previous_interrupt_handler
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|