diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3cf8b3d8..c0001e1e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,15 +17,17 @@ jobs: strategy: matrix: - java-version: [8, 15] - ruby-version: [jruby-9.2.18.0, jruby-head] + java-version: [8, 11, 15] + ruby-version: [jruby-9.3.7.0, jruby-head] task: ['', integration] fail-fast: false steps: - - name: checkout + - name: Checkout warbler uses: actions/checkout@v2 + with: + path: warbler - name: Set up java ${{ matrix.java-version }} uses: actions/setup-java@v2 @@ -37,25 +39,34 @@ jobs: uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby-version }} - bundler: 1.17.3 + bundler: 2.3.20 - name: Install fixed rubygems version - run: gem update --system 2.7.11 - if: matrix.ruby-version != 'jruby-head' - - # rubygems 2.7.11 is not supported on Ruby 3.1.0 (jruby-head). - # The oldest version supported by this ruby is 3.2.3. - - name: Install fixed rubygems version - run: gem update --system 3.2.11 && gem install bundler:1.17.3 - if: matrix.ruby-version == 'jruby-head' + run: gem update --system 3.3.20 - name: Install dependencies - run: bundle _1.17.3_ install --jobs=3 --retry=3 + run: bundle _2.3.20_ install --jobs=3 --retry=3 + working-directory: warbler + + - name: Checkout jbundler + uses: actions/checkout@v2 + with: + repository: deivid-rodriguez/jbundler + ref: add_rake_install + path: jbundler + + - name: Install jbundler + run: | + bundle install --jobs=3 --retry=3 + bundle exec rake install + working-directory: jbundler - name: Run tests run: bundle exec rake ${{ matrix.TASK }} if: matrix.ruby-version != 'jruby-head' + working-directory: warbler - name: Run tests run: bundle exec rake ${{ matrix.TASK }} || exit 0 if: matrix.ruby-version == 'jruby-head' + working-directory: warbler diff --git a/.gitignore b/.gitignore index 6eff3c6f..c05a215f 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ integration/**/*.iml build.log .ruby-version .rspec_status +vendor diff --git a/Gemfile b/Gemfile index 4a270c85..71bbe13c 100644 --- a/Gemfile +++ b/Gemfile @@ -2,9 +2,13 @@ source "https://rubygems.org/" gemspec +gem 'jbundler', git: 'https://github.com/mkristian/jbundler' + rubyzip_version = ENV['RUBYZIP_VERSION'] gem 'rubyzip', rubyzip_version if rubyzip_version && !rubyzip_version.empty? group :development, :test do gem 'rdoc', ['>= 3.10', '< 4.3'], :require => nil end + +gem "jar-dependencies", "0.4.1" diff --git a/lib/warbler/gems.rb b/lib/warbler/gems.rb index 799c9cc7..b278442e 100644 --- a/lib/warbler/gems.rb +++ b/lib/warbler/gems.rb @@ -52,8 +52,6 @@ def specs(gem_dependencies) # Add a single gem to WEB-INF/gems def find_single_gem_files(gem_dependencies, gem_pattern, version = nil) gem_spec_class = Gem::Specification - gem_spec_class = Gem::BasicSpecification if Gem.const_defined?(:BasicSpecification) - # Gem::Specification < Gem::BasicSpecification (since RGs 2.1) case gem_pattern when gem_spec_class return BundlerHelper.to_spec(gem_pattern) diff --git a/lib/warbler/templates/bundler.erb b/lib/warbler/templates/bundler.erb index e171eae5..2f49dcc0 100644 --- a/lib/warbler/templates/bundler.erb +++ b/lib/warbler/templates/bundler.erb @@ -2,18 +2,3 @@ ENV['BUNDLE_WITHOUT'] = '<%= config.bundle_without.join(':') %>' <% if config.bundler[:frozen] -%> ENV['BUNDLE_FROZEN'] = '1' <% end -%> - -module Bundler - module Patch - def clean_load_path - # nothing to be done for embedded JRuby - end - end - module SharedHelpers - def included(bundler) - bundler.send :include, Patch - end - end -end - -require 'bundler/shared_helpers' diff --git a/lib/warbler/traits/bundler.rb b/lib/warbler/traits/bundler.rb index d7330edd..18ee9087 100644 --- a/lib/warbler/traits/bundler.rb +++ b/lib/warbler/traits/bundler.rb @@ -38,22 +38,6 @@ def add_bundler_gems; require 'bundler' bundler_specs.each do |spec| spec = to_spec(spec) - # Bundler HAX -- fixup bad #loaded_from attribute in fake - # bundler gemspec from bundler/source.rb - if spec.name == 'bundler' - full_gem_path = Pathname.new(spec.full_gem_path) - while ! full_gem_path.join('bundler.gemspec').exist? - full_gem_path = full_gem_path.dirname - # if at top of the path, meaning we cannot find bundler.gemspec, abort. - if full_gem_path.to_s =~ /^[\.\/]$/ - warn("Unable to detect bundler spec under '#{spec.full_gem_path}'' and its sub-dirs") - exit - end - end - - spec.loaded_from = full_gem_path.join('bundler.gemspec').to_s - spec.full_gem_path = full_gem_path.to_s - end case spec.source when ::Bundler::Source::Git @@ -143,7 +127,8 @@ def bundler_specs bundle_without = config.bundle_without.map { |s| s.to_sym } definition = ::Bundler.definition all = definition.specs.to_a - requested = definition.specs_for(definition.groups - bundle_without).to_a + dependencies = definition.dependencies_for(definition.groups - bundle_without) + requested = definition.send(:materialize, dependencies).to_a excluded_git_specs = (all - requested).select { |spec| ::Bundler::Source::Git === spec.source } excluded_git_specs.each { |spec| spec.groups << :warbler_excluded } requested + excluded_git_specs diff --git a/spec/rails4_stub/Gemfile.lock b/spec/rails4_stub/Gemfile.lock index 6d9801bf..e26d1439 100644 --- a/spec/rails4_stub/Gemfile.lock +++ b/spec/rails4_stub/Gemfile.lock @@ -120,4 +120,4 @@ DEPENDENCIES rails-api (~> 0.4) BUNDLED WITH - 1.16.1 + 2.3.20 diff --git a/spec/sample_bundler/.bundle/config b/spec/sample_bundler/.bundle/config deleted file mode 100644 index b50fd3d5..00000000 --- a/spec/sample_bundler/.bundle/config +++ /dev/null @@ -1,4 +0,0 @@ ---- -BUNDLE_FROZEN: "true" -BUNDLE_PATH: "vendor/bundle" -BUNDLE_DISABLE_SHARED_GEMS: "1" diff --git a/spec/sample_bundler/Gemfile.lock b/spec/sample_bundler/Gemfile.lock index 96c62c5e..a11850ff 100644 --- a/spec/sample_bundler/Gemfile.lock +++ b/spec/sample_bundler/Gemfile.lock @@ -11,4 +11,4 @@ DEPENDENCIES rake (= 12.3.3) BUNDLED WITH - 1.11.2 + 2.3.20 diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/bin/rake b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/bin/rake deleted file mode 100755 index bb5b395d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/bin/rake +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env jruby -# -# This file was generated by RubyGems. -# -# The application 'rake' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require 'rubygems' - -version = ">= 0.a" - -if ARGV.first - str = ARGV.first - str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding - if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then - version = $1 - ARGV.shift - end -end - -if Gem.respond_to?(:activate_bin_path) -load Gem.activate_bin_path('rake', 'rake', version) -else -gem "rake", version -load Gem.bin_path("rake", "rake", version) -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/cache/rake-12.3.3.gem b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/cache/rake-12.3.3.gem deleted file mode 100644 index e21bbafe..00000000 Binary files a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/cache/rake-12.3.3.gem and /dev/null differ diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/CONTRIBUTING.rdoc b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/CONTRIBUTING.rdoc deleted file mode 100644 index e8430ddb..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/CONTRIBUTING.rdoc +++ /dev/null @@ -1,43 +0,0 @@ -= Source Repository - -Rake is currently hosted at github. The github web page is -https://github.com/ruby/rake . The public git clone URL is - - https://github.com/ruby/rake.git - -= Running the Rake Test Suite - -If you wish to run the unit and functional tests that come with Rake: - -* +cd+ into the top project directory of rake. -* Install gem dependency using bundler: - - $ bundle install # Install bundler, minitest and rdoc - -* Run the test suite - - $ rake - -= Rubocop - -Rake uses Rubocop to enforce a consistent style on new changes being -proposed. You can check your code with Rubocop using: - - $ ./bin/rubocop - -= Issues and Bug Reports - -Feel free to submit commits or feature requests. If you send a patch, -remember to update the corresponding unit tests. In fact, I prefer -new feature to be submitted in the form of new unit tests. - -For other information, feel free to ask on the ruby-talk mailing list. - -If you have found a bug in rake please try with the latest version of rake -before filing an issue. Also check History.rdoc for bug fixes that may have -addressed your issue. - -When submitting pull requests please check the rake Travis-CI page for test -failures: - - https://travis-ci.org/ruby/rake diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/Gemfile b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/Gemfile deleted file mode 100644 index b4e2a20b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/Gemfile +++ /dev/null @@ -1,3 +0,0 @@ -source "https://rubygems.org" - -gemspec diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/History.rdoc b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/History.rdoc deleted file mode 100644 index 16b6331a..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/History.rdoc +++ /dev/null @@ -1,2344 +0,0 @@ -=== 12.3.3 - -==== Bug fixes - -* Use the application's name in error message if a task is not found. - Pull Request #303 by tmatilai - -==== Enhancements: - -* Use File.open explicitly. - -=== 12.3.2 - -==== Bug fixes - -* Fixed test fails caused by 2.6 warnings. - Pull Request #297 by hsbt - -==== Enhancements: - -* Rdoc improvements. - Pull Request #293 by colby-swandale -* Improve multitask performance. - Pull Request #273 by jsm -* Add alias `prereqs`. - Pull Request #268 by take-cheeze - -=== 12.3.1 - -==== Bug fixes - -* Support did_you_mean >= v1.2.0 which has a breaking change on formatters. - Pull request #262 by FUJI Goro. - -==== Enhancements: - -* Don't run task if it depends on already invoked but failed task. - Pull request #252 by Gonzalo Rodriguez. -* Make space trimming consistent for all task arguments. - Pull request #259 by Gonzalo Rodriguez. -* Removes duplicated inclusion of Rake::DSL in tests. - Pull request #254 by Gonzalo Rodriguez. -* Re-raise a LoadError that didn't come from require in the test loader. - Pull request #250 by Dylan Thacker-Smith. - -=== 12.3.0 - -==== Compatibility Changes - -* Bump `required_ruby_version` to Ruby 2.0.0. Rake has already - removed support for Ruby 1.9.x. - -==== Enhancements: - -* Support `test-bundled-gems` task on ruby core. - -=== 12.2.1 - -==== Bug fixes - -* Fixed to break Capistrano::Application on capistrano3. - -=== 12.2.0 - -==== Enhancements: - -* Make rake easier to use as a library - Pull request #211 by @drbrain -* Fix quadratic performance in FileTask#out_of_date? - Pull request #224 by @doudou -* Clarify output when printing nested exception traces - Pull request #232 by @urbanautomaton - -==== Bug fixes - -* Account for a file that match 2 or more patterns. - Pull request #231 by @styd - -=== 12.1.0 - -==== Enhancements: - -* Added did_you_mean feature for invalid rake task. - Pull request #221 by @xtina-starr -* Enabled to dependency chained by extensions. Pull request #39 by Petr Skocik. -* Make all of string literals to frozen objects on Ruby 2.4 or later. - -==== Bug fixes - -* Typo fixes in rakefile.rdoc. Pull request #180 by Yuta Kurotaki. -* Fix unexpected behavior of file task with dryrun option. - Pull request #183 by @aycabta. -* Make LoadError from running tests more obvious. Pull request #195 - by Eric Hodel. -* Fix unexpected TypeError with hash style option. Pull request #202 - by Kuniaki IGARASHI. - -=== 12.0.0 - -==== Compatibility Changes - -* Removed arguments on clear #157 by Jesse Bowes -* Removed `rake/contrib` packages. These are extracted to `rake-contrib` gem. -* Removed deprecated method named `last\_comment`. - -==== Enhancements: - -* Re-use trace option on `cleanup` task. #164 by Brian Henderson -* Actions adore keyword arguments #174 by Josh Cheek -* Rake::TaskArguments#key? alias of #has_key? #175 by Paul Annesley - -=== 11.3.0 / 2016-09-20 - -==== Enhancements: - -* Remove to reference `Fixnum` constant. Pull request #160 by nobu - -=== 11.2.2 / 2016-06-12 - -==== Bug fixes - -* Fix unexpected behavior with multiple dependencies on Rake::TestTask - -=== 11.2.1 / 2016-06-12 - -==== Bug fixes - -* Fix regression of dependencies handling on Rake::TestTask. Report #139 - -=== 11.2.0 / 2016-06-11 - -==== Bug fixes - -* Fix unexpected cut-out behavior on task description using triple dots - and exclamation. Report #106 from Stephan Kämper and Pull request #134 by Lee -* Fix empty argument assignment with `with_defaults` option. Pull request #135 - by bakunyo -* Ignore to use `hwprefs` on Darwin platform. Use sysctl now. Report #128 - -==== Enhancements - -* Spawn options for sh Pull equest #138 by Eric Hodel. -* Allow to specify dependencies(prerequisites) for Rake::TestTask - Pull request #117 by Tim Maslyuchenko -* Use Bundler task instead of hoe for gem release. -* Remove explicitly load to rubygems for Ruby 1.8. -* Unify to declare `Rake::VERSION`. -* Support xz format for PackageTask. - -=== 11.1.2 / 2016-03-28 - -==== Bug fixes - -* Remove `-W` option when Rake::TestTask#verbose enabled. It's misunderstanding - specification change with Rake 11. Partly revert #67 - -=== 11.1.1 / 2016-03-14 - -==== Bug fixes - -* Use `-W` instead of `--verbose` when Rake::TestTask#verbose enabled. - JRuby doesn't have `--verbose` option. - -=== 11.1.0 / 2016-03-11 - -==== Compatibility Changes - -* Revert to remove `last\_comment`. It will remove Rake 12. - -=== 11.0.1 / 2016-03-09 - -==== Bug fixes - -* Fixed packaging manifest. - -=== 11.0.0 / 2016-03-09 - -==== Bug fixes - -* Correctly handle bad encoding in exception messages. Pull request #113 - by Tomer Brisker -* Fix verbose option at TestTask. Pull request #67 by Mike Blumtritt - -==== Enhancements - -* Make FileList#exclude more analogous to FileList#include. -* Use IO.open instead of Open3.popen3 for CPU counter. -* Make Rake::Task#already_invoked publicly accessible. - Pull request #93 by Joe Rafaniello -* Lookup prerequisites with same name outside of scope instead of - matching self. Pull request #96 by Sandy Vanderbleek -* Make FileList#pathmap behave like String#pathmap. - Pull request #61 by Daniel Tamai -* Add fetch method to task arguments. - Pull request #12 by Chris Keathley -* Use ruby warnings by default. Pull request #97 by Harold Giménez - -==== Compatibility Changes - -* Removed to support Ruby 1.8.x -* Removed constant named `RAKEVERSION` -* Removed Rake::AltSystem -* Removed Rake::RubyForgePublisher -* Removed Rake::TaskManager#last\_comment. Use last\_description. -* Removed Rake::TaskLib#paste -* Removed Top-level SshDirPublisher, SshFreshDirPublisher, SshFilePublisher - and CompositePublisher from lib/rake/contrib/publisher.rb -* Removed "rake/runtest.rb" - -=== 10.5.0 / 2016-01-13 - -==== Enhancements - -* Removed monkey patching for Ruby 1.8. Pull request #46 by Pablo Herrero. -* Inheritance class of Rake::FileList returns always self class. - Pull request #74 by Thomas Scholz - -=== 10.4.2 / 2014-12-02 - -==== Bug fixes - -* Rake no longer edits ARGV. This allows you to re-exec rake from a rake - task. Pull requset #9 by Matt Palmer. -* Documented how Rake::DSL#desc handles sentences in task descriptions. - Issue #7 by Raza Sayed. -* Fixed test error on 1.9.3 with legacy RubyGems. Issue #8 by Matt Palmer. -* Deleted duplicated History entry. Pull request #10 by Yuji Yamamoto. - -=== 10.4.1 / 2014-12-01 - -==== Bug fixes - -* Reverted fix for #277 as it caused numerous issues for rake users. - rails/spring issue #366 by Gustavo Dutra. - -=== 10.4.0 / 2014-11-22 - -==== Enhancements - -* Upgraded to minitest 5. Pull request #292 by Teo Ljungberg. -* Added support for Pathname in rake tasks. Pull request #271 by Randy - Coulman. -* Rake now ignores falsy dependencies which allows for easier programmatic - creation of tasks. Pull request #273 by Manav. -* Rake no longer edits ARGV. This allows you to re-exec rake from a rake - task. Issue #277 by Matt Palmer. -* Etc.nprocessors is used for counting the number of CPUs. - -==== Bug fixes - -* Updated rake manpage. Issue #283 by Nathan Long, pull request #291 by - skittleys. -* Add Rake::LATE to allow rebuilding of files that depend on deleted files. - Bug #286, pull request #287 by David Grayson. -* Fix relinking of files when repackaging. Bug #276 by Muenze. -* Fixed some typos. Pull request #280 by Jed Northridge. -* Try counting CPUs via cpuinfo if host_os was not matched. Pull request - #282 by Edouard B. - -=== 10.3.2 / 2014-05-15 - -==== Bug fixes - -* Rake no longer infinitely loops when showing exception causes that refer to - each other. Bug #272 by Chris Bandy. -* Fixed documentation typos. Bug #275 by Jake Worth. - -=== 10.3.1 / 2014-04-17 - -==== Bug fixes - -* Really stop reporting an error when cleaning already-deleted files. Pull - request #269 by Randy Coulman -* Fixed infinite loop when cleaning already-deleted files on windows. - -=== 10.3 / 2014-04-15 - -==== Enhancements - -* Added --build-all option to rake which treats all file prerequisites as - out-of-date. Pull request #254 by Andrew Gilbert. -* Added Rake::NameSpace#scope. Issue #263 by Jon San Miguel. - -==== Bug fixes - -* Suppress org.jruby package files in rake error messages for JRuby users. - Issue #213 by Charles Nutter. -* Fixed typo, removed extra "h". Pull request #267 by Hsing-Hui Hsu. -* Rake no longer reports an error when cleaning already-deleted files. Pull - request #266 by Randy Coulman. -* Consume stderr while determining CPU count to avoid hang. Issue #268 by - Albert Sun. - -=== 10.2.2 / 2014-03-27 - -==== Bug fixes - -* Restored Ruby 1.8.7 compatibility - -=== 10.2.1 / 2014-03-25 - -==== Bug fixes - -* File tasks including a ':' are now top-level tasks again. Issue #262 by - Josh Holtrop. -* Use sysctl for CPU count for all BSDs. Pull request #261 by Joshua Stein. -* Fixed CPU detection for unknown platforms. - -=== 10.2.0 / 2014-03-24 - -==== Enhancements - -* Rake now requires Ruby 1.9 or newer. For me, this is a breaking change, but - it seems that Jim planned to release it with Rake 10.2. See also pull - request #247 by Philip Arndt. -* Rake now allows you to declare tasks under a namespace like: - - task 'a:b' do ... end - - Pull request #232 by Judson Lester. -* Task#source defaults to the first prerequisite in non-rule tasks. Pull - request #215 by Avdi Grimm. -* Rake now automatically rebuilds and reloads imported files. Pull request - #209 by Randy Coulman. -* The rake task arguments can contain escaped commas. Pull request #214 by - Filip Hrbek. -* Rake now prints the exception class on errors. Patch #251 by David Cornu. - -==== Bug fixes - -* Fixed typos. Pull request #256 by Valera Rozuvan, #250 via Jake Worth, #260 - by Zachary Scott. -* Fixed documentation for calling tasks with arguments. Pull request #235 by - John Varghese. -* Clarified `rake -f` usage message. Pull request #252 by Marco Pfatschbacher. -* Fixed a test failure on windows. Pull request #231 by Hiroshi Shirosaki. -* Fixed corrupted rake.1.gz. Pull request #225 by Michel Boaventura. -* Fixed bug in can\_detect\_signals? in test. Patch from #243 by Alexey - Borzenkov. - -=== 10.1.1 - -* Use http://github.com/jimweirich/rake instead of http://rake.rubyforge.org for - canonical project url. - -=== 10.1.0 - -==== Changes - -===== New Features - -* Add support for variable length task argument lists. If more actual - arguments are supplied than named arguments, then the extra - arguments values will be in args.extras. - -* Application name is not displayed in the help banner. (Previously - "rake" was hardcoded, now rake-based applications can display their - own names). - -===== Bug Fixes - -Bug fixes include: - -* Fix backtrace suppression issues. - -* Rules now explicit get task arguments passed to them. - -* Rename FileList#exclude? to FileList#exclude\_from\_list? to avoid - conflict with new Rails method. - -* Clean / Clobber tasks now report failure to remove files. - -* Plus heaps of internal code cleanup. - -==== Thanks - -As usual, it was input from users that drove a lot of these changes. -The following people contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Michael Nikitochkin (general code cleanup) -* Vipul A M (general code cleanup) -* Dennis Bell (variable length task argument lists) -* Jacob Swanner (rules arguments) -* Rafael Rosa Fu (documentation typo) -* Stuart Nelson (install.rb fixes) -* Lee Hambley (application name in help banner) - --- Jim Weirich - -=== 10.0.3 - - "Jim, when will Rake reach version 1.0?" - -Over the past several years I've been asked that question at -conferences, panels and over twitter. Due to historical reasons (or -maybe just plain laziness) Rake has (incorrectly) been treating the -second digit of the version as the major release number. So in my head -Rake was already at version 9. - -Well, it's time to fix things. This next version of Rake drops old, -crufty, backwards compatibility hacks such as top level constants, DSL -methods defined in Object and numerous other features that are just no -longer desired. It's also time to drop the leading zero from the -version number as well and call this new version of rake what it -really is: Version 10. - -So, welcome to Rake 10.0! - -Rake 10 is actually feature identical to the latest version of Rake 9 -(that would be the version spelled 0.9.3), *except* that Rake 10 drops -all the sundry deprecated features that have accumulated over the years. - -If your Rakefile is up to date and current with all the new features -of Rake 10, you are ready to go. If your Rakefile still uses a few -deprecated feeatures, feel free to use Rake 9 (0.9.3) with the same -feature set. Just be aware that future features will be in Rake 10 -family line. - -==== Changes - -As mentioned above, there are no new features in Rake 10. However, -there are a number of features missing: - -* Classic namespaces are now gone. Rake is no longer able to reflect - the options settings in the global variables ($rakefile, $show\_tasks, - $show\_prereqs, $trace, $dryrun and $silent). The - --classic-namespace option is no longer supported. - -* Global constants are no longer supported. This includes - Task, FileTask, FileCreationTask and - RakeApp). The constant missing hook to warn about using - global rake constants has been removed. - -* The Rake DSL methods (task, file, directory, etc) are in their own - module (Rake::DSL). The stub versions of these methods (that printed - warnings) in Object have been removed. However, the DSL methods are - added to the top-level main object. Since main is - not in the inheritance tree, the presence of the DSL methods in main - should be low impact on other libraries. - - If you want to use the Rake DSL commands from your own code, just - include Rake::DSL into your own classes and modules. - -* The deprecated syntax for task arguments (the one using - :needs) has been removed. - -* The --reduce-compat flag has been removed (it's not needed - anymore). - -* The deprecated rake/sys.rb library has been removed. - -* The deprecated rake/rdoctask.rb library has been removed. - RDoc supplies its own rake task now. - -* The deprecated rake/gempackagetask.rb library has been - removed. Gem supplies its own package task now. - -There is one small behavioral change: - -* Non-file tasks now always report the current time as their time - stamp. This is different from the previous behavior where non-file - tasks reported current time only if there were no prerequisites, and - the max prerequisite timestamp otherwise. This lead to inconsistent - and surprising behavior when adding prerequisites to tasks that in - turn were prequisites to file tasks. The new behavior is more - consistent and predictable. - -==== Changes (from 0.9.3, 0.9.4, 0.9.5) - -Since Rake 10 includes the changes from the last version of Rake 9, -we'll repeat the changes for versions 0.9.3 through 0.9.5 here. - -===== New Features (in 0.9.3) - -* Multitask tasks now use a thread pool. Use -j to limit the number of - available threads. - -* Use -m to turn regular tasks into multitasks (use at your own risk). - -* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to - programatically add rake task libraries. - -* You can specific backtrace suppression patterns (see - --suppress-backtrace) - -* Directory tasks can now take prerequisites and actions - -* Use --backtrace to request a full backtrace without the task trace. - -* You can say "--backtrace=stdout" and "--trace=stdout" to route trace - output to standard output rather than standard error. - -* Optional 'phony' target (enable with 'require 'rake/phony'") for - special purpose builds. - -* Task#clear now clears task comments as well as actions and - prerequisites. Task#clear_comment will specifically target comments. - -* The --all option will force -T and -D to consider all the tasks, - with and without descriptions. - -===== Bug Fixes (in 0.9.3) - -* Semi-colons in windows rakefile paths now work. - -* Improved Control-C support when invoking multiple test suites. - -* egrep method now reads files in text mode (better support for - Windows) - -* Better deprecation line number reporting. - -* The -W option now works with all tasks, whether they have a - description or not. - -* File globs in rake should not be sorted alphabetically, independent - of file system and platform. - -* Numerous internal improvements. - -* Documentation typos and fixes. - -===== Bug Fixes (in 0.9.4) - -* Exit status with failing tests is not correctly set to non-zero. - -* Simplified syntax for phony task (for older versions of RDoc). - -* Stand alone FileList usage gets glob function (without loading in - extra dependencies) - -===== Bug Fixes (in 0.9.5) - -* --trace and --backtrace no longer swallow following task names. - -==== Thanks - -As usual, it was input from users that drove a lot of these changes. The -following people contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Aaron Patterson -* Dylan Smith -* Jo Liss -* Jonas Pfenniger -* Kazuki Tsujimoto -* Michael Bishop -* Michael Elufimov -* NAKAMURA Usaku -* Ryan Davis -* Sam Grönblom -* Sam Phippen -* Sergio Wong -* Tay Ray Chuan -* grosser -* quix - -Also, many thanks to Eric Hodel for assisting with getting this release -out the door. - --- Jim Weirich - -=== 10.0.2 - -==== Changes - -===== Bug Fixes - -* --trace and --backtrace no longer swallow following task names. - -==== Thanks - -As usual, it was input from users that drove a lot of these changes. The -following people contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Aaron Patterson -* Dylan Smith -* Jo Liss -* Jonas Pfenniger -* Kazuki Tsujimoto -* Michael Bishop -* Michael Elufimov -* NAKAMURA Usaku -* Ryan Davis -* Sam Grönblom -* Sam Phippen -* Sergio Wong -* Tay Ray Chuan -* grosser -* quix - -Also, many thanks to Eric Hodel for assisting with getting this release -out the door. - --- Jim Weirich - -=== 10.0.1 - -==== Changes - -===== Bug Fixes - -* Exit status with failing tests is not correctly set to non-zero. - -* Simplified syntax for phony task (for older versions of RDoc). - -* Stand alone FileList usage gets glob function (without loading in - extra dependencies) - -==== Thanks - -As usual, it was input from users that drove a lot of these changes. The -following people contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Aaron Patterson -* Dylan Smith -* Jo Liss -* Jonas Pfenniger -* Kazuki Tsujimoto -* Michael Bishop -* Michael Elufimov -* NAKAMURA Usaku -* Ryan Davis -* Sam Grönblom -* Sam Phippen -* Sergio Wong -* Tay Ray Chuan -* grosser -* quix - -Also, many thanks to Eric Hodel for assisting with getting this release -out the door. - --- Jim Weirich - -=== 10.0.0 - - "Jim, when will Rake reach version 1.0?" - -Over the past several years I've been asked that question at -conferences, panels and over twitter. Due to historical reasons (or -maybe just plain laziness) Rake has (incorrectly) been treating the -second digit of the version as the major release number. So in my head -Rake was already at version 9. - -Well, it's time to fix things. This next version of Rake drops old, -crufty, backwards compatibility hacks such as top level constants, DSL -methods defined in Object and numerous other features that are just no -longer desired. It's also time to drop the leading zero from the -version number as well and call this new version of rake what it -really is: Version 10. - -So, welcome to Rake 10.0! - -Rake 10 is actually feature identical to the latest version of Rake 9 -(that would be the version spelled 0.9.3), *except* that Rake 10 drops -all the sundry deprecated features that have accumulated over the years. - -If your Rakefile is up to date and current with all the new features -of Rake 10, you are ready to go. If your Rakefile still uses a few -deprecated feeatures, feel free to use Rake 9 (0.9.3) with the same -feature set. Just be aware that future features will be in Rake 10 -family line. - -==== Changes in 10.0 - -As mentioned above, there are no new features in Rake 10. However, -there are a number of features missing: - -* Classic namespaces are now gone. Rake is no longer able to reflect - the options settings in the global variables ($rakefile, $show\_tasks, - $show\_prereqs, $trace, $dryrun and $silent). The - --classic-namespace option is no longer supported. - -* Global constants are no longer supported. This includes - Task, FileTask, FileCreationTask and - RakeApp). The constant missing hook to warn about using - global rake constants has been removed. - -* The Rake DSL methods (task, file, directory, etc) are in their own - module (Rake::DSL). The stub versions of these methods (that printed - warnings) in Object have been removed. However, the DSL methods are - added to the top-level main object. Since main is - not in the inheritance tree, the presence of the DSL methods in main - should be low impact on other libraries. - - If you want to use the Rake DSL commands from your own code, just - include Rake::DSL into your own classes and modules. - -* The deprecated syntax for task arguments (the one using - :needs) has been removed. - -* The --reduce-compat flag has been removed (it's not needed - anymore). - -* The deprecated rake/sys.rb library has been removed. - -* The deprecated rake/rdoctask.rb library has been removed. - RDoc supplies its own rake task now. - -* The deprecated rake/gempackagetask.rb library has been - removed. Gem supplies its own package task now. - -There is one small behavioral change: - -* Non-file tasks now always report the current time as their time - stamp. This is different from the previous behavior where non-file - tasks reported current time only if there were no prerequisites, and - the max prerequisite timestamp otherwise. This lead to inconsistent - and surprising behavior when adding prerequisites to tasks that in - turn were prequisites to file tasks. The new behavior is more - consistent and predictable. - -==== Changes (from 0.9.3) - -Since Rake 10 includes the changes from the last version of Rake 9, -we'll repeat the changes for version 0.9.3 here. - -===== New Features - -* Multitask tasks now use a thread pool. Use -j to limit the number of - available threads. - -* Use -m to turn regular tasks into multitasks (use at your own risk). - -* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to - programatically add rake task libraries. - -* You can specific backtrace suppression patterns (see - --suppress-backtrace) - -* Directory tasks can now take prerequisites and actions - -* Use --backtrace to request a full backtrace without the task trace. - -* You can say "--backtrace=stdout" and "--trace=stdout" to route trace - output to standard output rather than standard error. - -* Optional 'phony' target (enable with 'require 'rake/phony'") for - special purpose builds. - -* Task#clear now clears task comments as well as actions and - prerequisites. Task#clear_comment will specifically target comments. - -* The --all option will force -T and -D to consider all the tasks, - with and without descriptions. - -===== Bug Fixes - -* Semi-colons in windows rakefile paths now work. - -* Improved Control-C support when invoking multiple test suites. - -* egrep method now reads files in text mode (better support for - Windows) - -* Better deprecation line number reporting. - -* The -W option now works with all tasks, whether they have a - description or not. - -* File globs in rake should not be sorted alphabetically, independent - of file system and platform. - -* Numerous internal improvements. - -* Documentation typos and fixes. - - -==== Thanks - -As usual, it was input from users that drove a lot of these changes. The -following people contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Aaron Patterson -* Dylan Smith -* Jo Liss -* Jonas Pfenniger -* Kazuki Tsujimoto -* Michael Bishop -* Michael Elufimov -* NAKAMURA Usaku -* Ryan Davis -* Sam Grönblom -* Sam Phippen -* Sergio Wong -* Tay Ray Chuan -* grosser -* quix - -Also, many thanks to Eric Hodel for assisting with getting this release -out the door. - --- Jim Weirich - -=== 0.9.6 - -Rake version 0.9.6 contains a number of fixes mainly for merging -Rake into the Ruby source tree and fixing tests. - -==== Changes - -===== Bug Fixes (0.9.6) - -* Better trace output when using a multi-threaded Rakefile. -* Arg parsing is now consistent for tasks and multitasks. -* Skip exit code test in versions of Ruby that don't support it well. - -Changes for better integration with the Ruby source tree: - -* Fix version literal for Ruby source tree build. -* Better loading of libraries for testing in Ruby build. -* Use the ruby version provided by Ruby's tests. - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Aaron Patterson -* Dylan Smith -* Jo Liss -* Jonas Pfenniger -* Kazuki Tsujimoto -* Michael Bishop -* Michael Elufimov -* NAKAMURA Usaku -* Ryan Davis -* Sam Grönblom -* Sam Phippen -* Sergio Wong -* Tay Ray Chuan -* grosser -* quix - -Also, many thanks to Eric Hodel for assisting with getting this release -out the door. - --- Jim Weirich - -=== 0.9.5 - -Rake version 0.9.5 contains a number of bug fixes. - -==== Changes - -===== Bug Fixes (0.9.5) - -* --trace and --backtrace no longer swallow following task names. - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Aaron Patterson -* Dylan Smith -* Jo Liss -* Jonas Pfenniger -* Kazuki Tsujimoto -* Michael Bishop -* Michael Elufimov -* NAKAMURA Usaku -* Ryan Davis -* Sam Grönblom -* Sam Phippen -* Sergio Wong -* Tay Ray Chuan -* grosser -* quix - -Also, many thanks to Eric Hodel for assisting with getting this release -out the door. - --- Jim Weirich - -=== 0.9.4 - -Rake version 0.9.4 contains a number of bug fixes. - -==== Changes - -===== Bug Fixes (0.9.4) - -* Exit status with failing tests is not correctly set to non-zero. - -* Simplified syntax for phony task (for older versions of RDoc). - -* Stand alone FileList usage gets glob function (without loading in - extra dependencies) - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Aaron Patterson -* Dylan Smith -* Jo Liss -* Jonas Pfenniger -* Kazuki Tsujimoto -* Michael Bishop -* Michael Elufimov -* NAKAMURA Usaku -* Ryan Davis -* Sam Grönblom -* Sam Phippen -* Sergio Wong -* Tay Ray Chuan -* grosser -* quix - -Also, many thanks to Eric Hodel for assisting with getting this release -out the door. - --- Jim Weirich - -=== 0.9.3 - -Rake version 0.9.3 contains some new, backwards compatible features and -a number of bug fixes. - -==== Changes - -===== New Features - -* Multitask tasks now use a thread pool. Use -j to limit the number of - available threads. - -* Use -m to turn regular tasks into multitasks (use at your own risk). - -* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to - programatically add rake task libraries. - -* You can specific backtrace suppression patterns (see - --suppress-backtrace) - -* Directory tasks can now take prerequisites and actions - -* Use --backtrace to request a full backtrace without the task trace. - -* You can say "--backtrace=stdout" and "--trace=stdout" to route trace - output to standard output rather than standard error. - -* Optional 'phony' target (enable with 'require 'rake/phony'") for - special purpose builds. - -* Task#clear now clears task comments as well as actions and - prerequisites. Task#clear_comment will specifically target comments. - -* The --all option will force -T and -D to consider all the tasks, - with and without descriptions. - -===== Bug Fixes - -* Semi-colons in windows rakefile paths now work. - -* Improved Control-C support when invoking multiple test suites. - -* egrep method now reads files in text mode (better support for - Windows) - -* Better deprecation line number reporting. - -* The -W option now works with all tasks, whether they have a - description or not. - -* File globs in rake should not be sorted alphabetically, independent - of file system and platform. - -* Numerous internal improvements. - -* Documentation typos and fixes. - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Aaron Patterson -* Dylan Smith -* Jo Liss -* Jonas Pfenniger -* Kazuki Tsujimoto -* Michael Bishop -* Michael Elufimov -* NAKAMURA Usaku -* Ryan Davis -* Sam Grönblom -* Sam Phippen -* Sergio Wong -* Tay Ray Chuan -* grosser -* quix - -Also, many thanks to Eric Hodel for assisting with getting this release -out the door. - --- Jim Weirich - -=== Rake 0.9.2.2 - -Rake version 0.9.2.2 is mainly bug fixes. - -==== Changes - -* The rake test loader now removes arguments it has processed. Issue #51 -* Rake::TaskArguments now responds to #values\_at -* RakeFileUtils.verbose_flag = nil silences output the same as 0.8.7 -* Rake tests are now directory-independent -* Rake tests are no longer require flexmock -* Commands constant is no longer polluting top level namespace. -* Show only the interesting portion of the backtrace by default (James M. Lawrence). -* Added --reduce-compat option to remove backward compatible DSL hacks (James M. Lawrence). - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* James M. Lawrence (quix) -* Roger Pack -* Cezary Baginski -* Sean Scot August Moon -* R.T. Lechow -* Alex Chaffee -* James Tucker -* Matthias Lüdtke -* Santiago Pastorino - -Also, bit thanks to Eric Hodel for assisting with getting this release -out the door (where "assisting" includes, but is not by any means -limited to, "pushing" me to get it done). - --- Jim Weirich - -=== 0.9.2 - -Rake version 0.9.2 has a few small fixes. See below for details. - -==== Changes - -* Support for Ruby 1.8.6 was fixed. -* Global DSL warnings now honor --no-deprecate - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* James M. Lawrence (quix) -* Roger Pack -* Cezary Baginski -* Sean Scot August Moon -* R.T. Lechow -* Alex Chaffee -* James Tucker -* Matthias Lüdtke -* Santiago Pastorino - -Also, bit thanks to Eric Hodel for assisting with getting this release -out the door (where "assisting" includes, but is not by any means -limited to, "pushing" me to get it done). - --- Jim Weirich - -=== 0.9.1 - -Rake version 0.9.1 has a number of bug fixes and enhancments (see -below for more details). Additionally, the internals have be slightly -restructured and improved. - -==== Changes - -Rake 0.9.1 adds back the global DSL methods, but with deprecation -messages. This allows Rake 0.9.1 to be used with older rakefiles with -warning messages. - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* James M. Lawrence (quix) -* Roger Pack -* Cezary Baginski -* Sean Scot August Moon -* R.T. Lechow -* Alex Chaffee -* James Tucker -* Matthias Lüdtke -* Santiago Pastorino - -Also, bit thanks to Eric Hodel for assisting with getting this release -out the door (where "assisting" includes, but is not by any means -limited to, "pushing" me to get it done). - --- Jim Weirich - -=== 0.9.0 - -Rake version 0.9.0 has a number of bug fixes and enhancments (see -below for more details). Additionally, the internals have be slightly -restructured and improved. - -==== Changes - -===== New Features / Enhancements / Bug Fixes in Version 0.9.0 - -* Rake now warns when the deprecated :needs syntax used (and suggests - the proper syntax in the warning). - -* Moved Rake DSL commands to top level ruby object 'main'. Rake DSL - commands are no longer private methods in Object. (Suggested by - James M. Lawrence/quix) - -* Rake now uses case-insensitive comparisons to find the Rakefile on Windows. - Based on patch by Roger Pack. - -* Rake now requires (instead of loads) files in the test task. Patch by Cezary - Baginski. - -* Fixed typos. Patches by Sean Scot August Moon and R.T. Lechow. - -* Rake now prints the Rakefile directory only when it's different from the - current directory. Patch by Alex Chaffee. - -* Improved rakefile_location discovery on Windows. Patch by James Tucker. - -* Rake now recognizes "Windows Server" as a windows system. Patch by Matthias - Lüdtke - -* Rake::RDocTask is deprecated. Use RDoc::Task from RDoc 2.4.2+ (require - 'rdoc/task') - -* Rake::GemPackageTask is deprecated. Use Gem::PackageTask (require - 'rubygems/package\_task') - -* Rake now outputs various messages to $stderr instead of $stdout. - -* Rake no longer emits warnings for Config. Patch by Santiago Pastorino. - -* Removed Rake's DSL methods from the top level scope. If you need to - call 'task :xzy' in your code, include Rake::DSL into your class, or - put the code in a Rake::DSL.environment do ... end block. - -* Split rake.rb into individual files. - -* Support for the --where (-W) flag for showing where a task is defined. - -* Fixed quoting in test task. - (http://onestepback.org/redmine/issues/show/44, - http://www.pivotaltracker.com/story/show/1223138) - -* Fixed the silent option parsing problem. - (http://onestepback.org/redmine/issues/show/47) - -* Fixed :verbose=>false flag on sh and ruby commands. - -* Rake command line options may be given by default in a RAKEOPT - environment variable. - -* Errors in Rake will now display the task invocation chain in effect - at the time of the error. - -* Accepted change by warnickr to not expand test patterns in shell - (allowing more files in the test suite). - -* Fixed that file tasks did not perform prereq lookups in scope - (Redmine #57). - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* James M. Lawrence (quix) -* Roger Pack -* Cezary Baginski -* Sean Scot August Moon -* R.T. Lechow -* Alex Chaffee -* James Tucker -* Matthias Lüdtke -* Santiago Pastorino - -Also, bit thanks to Eric Hodel for assisting with getting this release -out the door (where "assisting" includes, but is not by any means -limited to, "pushing" me to get it done). - --- Jim Weirich - - -=== 0.8.7 - -Rake version 0.8.5 introduced greatly improved support for executing -commands on Windows. The "sh" command now has the same semantics on -Windows that it has on Unix based platforms. - -Rake version 0.8.6 includes minor fixes the the RDoc generation. -Rake version 0.8.7 includes a minor fix for JRuby running on windows. - -==== Changes - -===== New Features / Enhancements in Version 0.8.5 - -* Improved implementation of the Rake system command for Windows. - (patch from James M. Lawrence/quix) - -* Support for Ruby 1.9's improved system command. (patch from James - M. Lawrence/quix) - -* Rake now includes the configured extension when invoking an - executable (Config::CONFIG['EXEEXT]) - -===== Bug Fixes in Version 0.8.5 - -* Environment variable keys are now correctly cased (it matters in - some implementations). - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Charles Nutter - --- Jim Weirich - -=== 0.8.6 - -Rake version 0.8.5 introduced greatly improved support for executing -commands on Windows. The "sh" command now has the same semantics on -Windows that it has on Unix based platforms. - -Rake version 0.8.5 includes minor fixes the the RDoc generation. - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* James M. Lawrence/quix -* Luis Lavena - --- Jim Weirich - -=== 0.8.5 - -Rake version 0.8.5 is a new release of Rake with greatly improved -support for executing commands on Windows. The "sh" command now has -the same semantics on Windows that it has on Unix based platforms. - -==== Changes - -===== New Features / Enhancements in Version 0.8.5 - -* Improved implementation of the Rake system command for Windows. - (patch from James M. Lawrence/quix) - -* Support for Ruby 1.9's improved system command. (patch from James - M. Lawrence/quix) - -* Rake now includes the configured extension when invoking an - executable (Config::CONFIG['EXEEXT]) - -===== Bug Fixes in Version 0.8.5 - -* Environment variable keys are now correctly cased (it matters in - some implementations). - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* James M. Lawrence/quix -* Luis Lavena - --- Jim Weirich - -=== 0.8.4 - -Rake version 0.8.4 is a bug-fix release of rake. - -NOTE: The version of Rake that comes with Ruby 1.9 has diverged - slightly from the core Rake code base. Rake 0.8.4 will work - with Ruby 1.9, but is not a strict upgrade for the Rake that - comes with Ruby 1.9. A (near) future release of Rake will unify - those two codebases. - -==== Letter Writing Campaign - -Thanks to Aaron Patterson (@tenderlove) and Eric Hodel (@drbrain) for -their encouraging support in organizing a letter writing campaign to -lobby for the "Warning Free" release of rake 0.8.4. A special callout -goes to Jonathan D. Lord, Sr (Dr. Wingnut) whose postcard was the -first to actually reach me. (see -http://tenderlovemaking.com/2009/02/26/we-need-a-new-version-of-rake/ -for details) - -==== Changes - -===== New Features / Enhancements in Version 0.8.4 - -* Case is preserved on rakefile names. (patch from James - M. Lawrence/quix) - -* Improved Rakefile case insensitivity testing (patch from Luis - Lavena). - -* Windows system dir search order is now: HOME, HOMEDRIVE + HOMEPATH, - APPDATA, USERPROFILE (patch from Luis Lavena) - -* MingGW is now recognized as a windows platform. (patch from Luis - Lavena) - -===== Bug Fixes in Version 0.8.4 - -* Removed reference to manage_gem to fix the warning produced by the - gem package task. - -* Fixed stray ARGV option problem that was interfering with - Test::Unit::Runner. (patch from Pivotal Labs) - -===== Infrastructure Improvements in Version 0.8.4 - -* Numerous fixes to the windows test suite (patch from Luis Lavena). - -* Improved Rakefile case insensitivity testing (patch from Luis - Lavena). - -* Better support for windows paths in the test task (patch from Simon - Chiang/bahuvrihi) - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* James M. Lawrence/quix -* Luis Lavena -* Pivotal Labs -* Simon Chiang/bahuvrihi - --- Jim Weirich - -=== 0.8.3 - -Rake version 0.8.3 is a bug-fix release of rake. - -==== Changes - -===== Bug Fixes in Version 0.8.3 - -* Enhanced the system directory detection in windows. We now check - HOMEDRIVE/HOMEPATH and USERPROFILE if APPDATA isn't found. (Patch - supplied by James Tucker). Rake no long aborts if it can't find the - directory. - -* Added fix to handle ruby installations in directories with spaces in - their name. - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Edwin Pratomo -* Gavin Stark -* Adam Q. Salter -* Adam Majer -* Emanuel Indermühle -* Ittay Dror -* Bheeshmar Redheendran (for spending an afternoon with me debugging - windows issues) - --- Jim Weirich - - -=== 0.8.2 - -Rake version 0.8.2 is a new release of rake that includes a number of -new features and numerous bug fixes. - -==== Changes - -===== New Features in Version 0.8.2 - -* Switched from getoptlong to optparse (patches supplied by Edwin - Pratomo). - -* The -T option will now attempt to dynamically sense the size of the - terminal. The -T output will only self-truncate if the output is a - tty. However, if RAKE_COLUMNS is explicitly set, it will be honored - in any case. (Patch provided by Gavin Stark). - -* The following public methods have been added to rake task objects: - - * task.clear -- Clear both the prerequisites and actions of the - target rake task. - * task.clear_prerequisites -- Clear all the existing prerequisites - from the target rake task. - * task.clear_actions -- Clear all the existing actions from the - target rake task. - * task.reenable -- Re-enable a task, allowing its actions to be - executed again if the task is invoked. - -* Changed RDoc test task to have no default template. This makes it - easier for the tempate to pick up the template from the environment. - -* Default values for task arguments can easily be specified with the - :with_defaults method. (Idea for default argument merging supplied - by (Adam Q. Salter) - -===== Bug Fixes in Version 0.8.2 - -* Fixed bug in package task so that it will include the subdir - directory in the package for testing. (Bug found by Adam Majer) - -* Fixed filename dependency order bug in test\_inspect\_pending and - test\_to\_s\_pending. (Bug found by Adam Majer) - -* Fixed check for file utils options to make them immune to the - symbol/string differences. (Patch supplied by Edwin Pratomo) - -* Fixed bug with rules involving multiple source, where only the first - dependency of a rule has any effect (Patch supplied by Emanuel - Indermühle) - -* FileList#clone and FileList#dup have better sematics w.r.t. taint - and freeze. - -* Changed from using Mutex to Monitor. Evidently Mutex causes thread - join errors when Ruby is compiled with -disable-pthreads. (Patch - supplied by Ittay Dror) - -* Fixed bug in makefile parser that had problems with extra spaces in - file task names. (Patch supplied by Ittay Dror) - -==== Other changes in Version 0.8.2 - -* Added ENV var to rake's own Rakefile to prevent OS X from including - extended attribute junk in the rake package tar file. (Bug found by - Adam Majer) - -* Added a performance patch for reading large makefile dependency - files. (Patch supplied by Ittay Dror) - -==== Task Argument Examples - -Prior to version 0.8.0, rake was only able to handle command line -arguments of the form NAME=VALUE that were passed into Rake via the -ENV hash. Many folks had asked for some kind of simple command line -arguments, perhaps using "--" to separate regular task names from -argument values on the command line. The problem is that there was no -easy way to associate positional arguments on the command line with -different tasks. Suppose both tasks :a and :b expect a command line -argument: does the first value go with :a? What if :b is run first? -Should it then get the first command line argument. - -Rake 0.8.0 solves this problem by explicitly passing values directly -to the tasks that need them. For example, if I had a release task -that required a version number, I could say: - - rake release[0.8.2] - -And the string "0.8.2" will be passed to the :release task. Multiple -arguments can be passed by separating them with a comma, for example: - - rake name[john,doe] - -Just a few words of caution. The rake task name and its arguments -need to be a single command line argument to rake. This generally -means no spaces. If spaces are needed, then the entire rake + -argument string should be quoted. Something like this: - - rake "name[billy bob, smith]" - -(Quoting rules vary between operating systems and shells, so make sure -you consult the proper docs for your OS/shell). - -===== Tasks that Expect Parameters - -Parameters are only given to tasks that are setup to expect them. In -order to handle named parameters, the task declaration syntax for -tasks has been extended slightly. - -For example, a task that needs a first name and last name might be -declared as: - - task :name, :first_name, :last_name - -The first argument is still the name of the task (:name in this case). -The next to argumements are the names of the parameters expected by -:name (:first_name and :last_name in the example). - -To access the values of the parameters, the block defining the task -behaviour can now accept a second parameter: - - task :name, :first_name, :last_name do |t, args| - puts "First name is #{args.first_name}" - puts "Last name is #{args.last_name}" - end - -The first argument of the block "t" is always bound to the current -task object. The second argument "args" is an open-struct like object -that allows access to the task arguments. Extra command line -arguments to a task are ignored. Missing command line arguments are -given the nil value. - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Edwin Pratomo -* Gavin Stark -* Adam Q. Salter -* Adam Majer -* Emanuel Indermühle -* Ittay Dror -* Bheeshmar Redheendran (for spending an afternoon with me debugging - windows issues) - --- Jim Weirich - -=== 0.8.0/0.8.1 - -Rake version 0.8.0 is a new release of rake that includes serveral new -features. - -==== Changes - -===== New Features in Version 0.8.0 - -* Tasks can now receive command line parameters. See the examples - below for more details. - -* Comments are limited to 80 columns on output, but full comments can - be seen by using the -D parameter. (feature suggested by Jamis - Buck). - -* Explicit exit(n) calls will now set the exit status to n. (patch - provided by Stephen Touset). - -* Rake is now compatible with Ruby 1.9. - -Version 0.8.1 is a minor update that includes additional Ruby 1.9 -compatibility fixes. - -==== Task Argument Examples - -Prior to version 0.8.0, rake was only able to handle command line -arguments of the form NAME=VALUE that were passed into Rake via the -ENV hash. Many folks had asked for some kind of simple command line -arguments, perhaps using "--" to separate regular task names from -argument values on the command line. The problem is that there was no -easy way to associate positional arguments on the command line with -different tasks. Suppose both tasks :a and :b expect a command line -argument: does the first value go with :a? What if :b is run first? -Should it then get the first command line argument. - -Rake 0.8.0 solves this problem by explicitly passing values directly -to the tasks that need them. For example, if I had a release task -that required a version number, I could say: - - rake release[0.8.0] - -And the string "0.8.0" will be passed to the :release task. Multiple -arguments can be passed by separating them with a comma, for example: - - rake name[john,doe] - -Just a few words of caution. The rake task name and its arguments -need to be a single command line argument to rake. This generally -means no spaces. If spaces are needed, then the entire rake + -argument string should be quoted. Something like this: - - rake "name[billy bob, smith]" - -(Quoting rules vary between operating systems and shells, so make sure -you consult the proper docs for your OS/shell). - -===== Tasks that Expect Parameters - -Parameters are only given to tasks that are setup to expect them. In -order to handle named parameters, the task declaration syntax for -tasks has been extended slightly. - -For example, a task that needs a first name and last name might be -declared as: - - task :name, :first_name, :last_name - -The first argument is still the name of the task (:name in this case). -The next to argumements are the names of the parameters expected by -:name (:first_name and :last_name in the example). - -To access the values of the parameters, the block defining the task -behaviour can now accept a second parameter: - - task :name, :first_name, :last_name do |t, args| - puts "First name is #{args.first_name}" - puts "Last name is #{args.last_name}" - end - -The first argument of the block "t" is always bound to the current -task object. The second argument "args" is an open-struct like object -that allows access to the task arguments. Extra command line -arguments to a task are ignored. Missing command line arguments are -given the nil value. - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Jamis Buck (for comment formatting suggestions) -* Stephen Touset (for exit status patch). - --- Jim Weirich - - -=== 0.7.3 - -Rake version 0.7.3 is a minor release that includes some refactoring to better -support custom Rake applications. - -==== Changes - -===== New Features in Version 0.7.3 - -* Added the +init+ and +top_level+ methods to make the creation of custom Rake applications a bit easier. E.g. - - gem 'rake', ">= 0.7.3" - require 'rake' - - Rake.application.init('myrake') - - task :default do - something_interesting - end - - Rake.application.top_level - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - --- Jim Weirich - - -=== 0.7.2 - - -Version 0.7.2 supplies a bug fix and a few minor enhancements. In -particular, the new version fixes an incompatibility with the soon to -be released Ruby 1.8.6. We strongly recommend upgrading to Rake 0.7.2 -in order to be compatible with the new version of Ruby. - -==== Changes - -===== Bug Fixes in 0.7.2 - -There are quite a number of bug fixes in the new 0.7.2 version of -Rake: - -* Removed dependency on internal fu_xxx functions from FileUtils. - -* Error messages are now send to stderr rather than stdout (from - Payton Quackenbush). - -* Better error handling on invalid command line arguments (from Payton - Quackenbush). - -* Fixed some bugs where the application object was going to the global - appliation instead of using its own data. - -* Fixed the method name leak from FileUtils (bug found by Glenn - Vanderburg). - -* Added test for noop, bad_option and verbose flags to sh command. - -* Added a description to the gem task in GemPackageTask. - -* Fixed a bug when rules have multiple prerequisites (patch by Joel - VanderWerf) - -* Added the handful of RakeFileUtils to the private method as well. - -===== New Features in 0.7.2 - -The following new features are available in Rake version 0.7.2: - -* Added square and curly bracket patterns to FileList#include (Tilman - Sauerbeck). - -* FileLists can now pass a block to FileList#exclude to exclude files - based on calculated values. - -* Added plain filename support to rule dependents (suggested by Nobu - Nakada). - -* Added pathmap support to rule dependents. In other words, if a - pathmap format (beginning with a '%') is given as a Rake rule - dependent, then the name of the depend will be the name of the - target with the pathmap format applied. - -* Added a 'tasks' method to a namespace to get a list of tasks - associated with the namespace. - -* Added tar_command and zip_command options to the Package task. - -* The clean task will no longer delete 'core' if it is a directory. - -===== Internal Rake Improvements - -The following changes will are mainly internal improvements and -refactorings and have little effect on the end user. But they may be -of interest to the general public. - -* Added rcov task and updated unit testing for better code coverage. - -* Added a 'shame' task to the Rakefile. - -* Added rake_extension to handle detection of extension collisions. - -* Added a protected 'require "rubygems"' to test/test_application to - unbreak cruisecontrol.rb. - -* Removed rake\_dup. Now we just simply rescue a bad dup. - -* Refactored the FileList reject logic to remove duplication. - -* Removed if \_\_FILE\_\_ at the end of the rake.rb file. - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. -The following people either contributed patches, made suggestions or -made otherwise helpful comments. Thanks to ... - -* Payton Quackenbush -- For several error handling improvements. - -* Glenn Vanderburg -- For finding and fixing the method name leak from - FileUtils. - -* Joel VanderWerf -- for finding and fixing a bug in the handling of - multiple prerequisites. - -* Tilman Sauerbeck -- For some enhancing FileList to support more - advanced file globbing. - -* Nobu Nakada -- For suggesting plain file name support to rule dependents. - --- Jim Weirich - -=== 0.7.1 - -Version 0.7.1 supplies a bug fix and a few minor enhancements. - -==== Changes - -===== Bug Fixes in 0.7.1 - -* Changes in the exception reported for the FileUtils.ln caused - safe_ln to fail with a NotImplementedError. Rake 0.7.1 will now - catch that error or any StandardError and properly fall back to - using +cp+. - -===== New Features in 0.7.1 - -* You can filter the results of the --task option by supplying an - optional regular expression. This allows the user to easily find a - particular task name in a long list of possible names. - -* Transforming procs in a rule may now return a list of prerequisites. - This allows more flexible rule formation. - -* FileList and String now support a +pathmap+ melthod that makes the - transforming paths a bit easier. See the API docs for +pathmap+ for - details. - -* The -f option without a value will disable the search for a - Rakefile. This allows the Rakefile to be defined entirely in a - library (and loaded with the -r option). The current working - directory is not changed when this is done. - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. -The following people either contributed patches, made suggestions or -made otherwise helpful comments. Thanks to ... - -* James Britt and Assaph Mehr for reporting and helping to debug the - safe_ln issue. - --- Jim Weirich - - -=== 0.7.0 - -These changes for Rake have been brewing for a long time. Here they -are, I hope you enjoy them. - -==== Changes - -===== New Features - -* Name space support for task names (see below). -* Prerequisites can be executed in parallel (see below). -* Added safe_ln support for openAFS (via Ludvig Omholt). -* RDoc defaults to internal (in-process) invocation. The old behavior - is still available by setting the +external+ flag to true. -* Rakefiles are now loaded with the expanded path to prevent - accidental pollution from the Ruby load path. -* Task objects my now be used in prerequisite lists directly. -* Task objects (in addition to task names) may now be included in the - prerequisite list of a task. -* Internals cleanup and refactoring. - -===== Bug Fixes - -* Compatibility fixes for Ruby 1.8.4 FileUtils changes. - -===== Namespaces - -Tasks can now be nested inside their own namespaces. Tasks within one -namespace will not accidentally interfer with tasks named in a different -namespace. - -For example: - - namespace "main" do - task :build do - # Build the main program - end - end - - namespace "samples" do - task :build do - # Build the sample programs - end - end - - task :build_all => ["main:build", "samples:build"] - -Even though both tasks are named :build, they are separate tasks in -their own namespaces. The :build_all task (defined in the toplevel -namespace) references both build tasks in its prerequisites. - -You may invoke each of the individual build tasks with the following -commands: - - rake main:build - rake samples:build - -Or invoke both via the :build_all command: - - rake build_all - -Namespaces may be nested arbitrarily. Since the name of file tasks -correspond to the name of a file in the external file system, -FileTasks are not affected by the namespaces. - -See the Rakefile format documentation (in the Rake API documents) for -more information. - -===== Parallel Tasks - -Sometimes you have several tasks that can be executed in parallel. By -specifying these tasks as prerequisites to a +multitask+ task. - -In the following example the tasks copy\_src, copy\_doc and copy\_bin -will all execute in parallel in their own thread. - - multitask :copy_files => [:copy_src, :copy_doc, :copy_bin] do - puts "All Copies Complete" - end - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. -The following people either contributed patches, made suggestions or -made otherwise helpful comments. Thanks to ... - -* Doug Young (inspiration for the parallel task) -* David Heinemeier Hansson (for --trace message enhancement and for - pushing for namespace support). -* Ludvig Omholt (for the openAFS fix) - --- Jim Weirich - -=== 0.6.1 - -* Rebuilt 0.6.0 gem without signing. - -=== 0.6.0 - -Its time for some long requested enhancements and lots of bug fixes -... And a whole new web page. - -==== New Web Page - -The primary documentation for rake has moved from the RubyForge based -wiki to its own Hieraki based web site. Constant spam on the wiki -made it a difficult to keep clean. The new site will be easier to -update and organize. - -Check out the new documentation at: http://docs.rubyrake.org - -We will be adding new documentation to the site as time goes on. - -In addition to the new docs page, make sure you check out Martin -Fowlers article on rake at http://martinfowler.com/articles/rake.html - -==== Changes - -===== New Features - -* Multiple prerequisites on Rake rules now allowed. However, keep the - following in mind: - - 1. All the prerequisites of a rule must be available before a rule - is triggered, where "enabled" means (a) an existing file, (b) a - defined rule, or (c) another rule which also must be - trigger-able. - 2. Rules are checked in order of definition, so it is important to - order your rules properly. If a file can be created by two - different rules, put the more specific rule first (otherwise the - more general rule will trigger first and the specific one will - never be triggered). - 3. The source method now returns the name of the first - prerequisite listed in the rule. sources returns the - names of all the rule prerequisites, ordered as they are defined - in the rule. If the task has other prerequisites not defined in - the rule (but defined in an explicit task definition), then they - will _not_ be included in the sources list. - -* FileLists may now use the egrep command. This popular enhancement - is now a core part of the FileList object. If you want to get a - list of all your to-dos, fixmes and TBD comments, add the following - to your Rakefile. - - desc "Look for TODO and FIXME tags in the code" - task :todo do - FileList['**/*.rb'].egrep /#.*(FIXME|TODO|TBD)/ - end - -* The investigation method was added to task object to dump - out some important values. This makes it a bit easier to debug Rake - tasks. - - For example, if you are having problems with a particular task, just - print it out: - - task :huh do - puts Rake::Task['huh'].investigation - end - -* The Rake::TestTask class now supports a "ruby\_opts" option to pass - arbitrary ruby options to a test subprocess. - -===== Some Incompatibilities - -* When using the ruby command to start a Ruby subprocess, the - Ruby interpreter that is currently running rake is used by default. - This makes it easier to use rake in an environment with multiple - ruby installation. (Previously, the first ruby command found in the - PATH was used). - - If you wish to chose a different Ruby interpreter, you can - explicitly choose the interpreter via the sh command. - -* The major rake classes (Task, FileTask, FileCreationTask, RakeApp) - have been moved out of the toplevel scope and are now accessible as - Rake::Task, Rake::FileTask, Rake::FileCreationTask and - Rake::Application. If your Rakefile - directly references any one of these tasks, you may: - - 1. Update your Rakefile to use the new classnames - 2. Use the --classic-namespace option on the rake command to get the - old behavior, - 3. Add require 'rake/classic_namespace' to the - Rakefile to get the old behavior. - - rake will print a rather annoying warning whenever a - deprecated class name is referenced without enabling classic - namespace. - -===== Bug Fixes - -* Several unit tests and functional tests were fixed to run better - under windows. - -* Directory tasks are now a specialized version of a File task. A - directory task will only be triggered if it doesn't exist. It will - not be triggered if it is out of date w.r.t. any of its - prerequisites. - -* Fixed a bug in the Rake::GemPackageTask class so that the gem now - properly contains the platform name. - -* Fixed a bug where a prerequisite on a file task would cause - an exception if the prerequisite did not exist. - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. -The following people either contributed patches, made suggestions or -made otherwise helpful comments. Thanks to ... - -* Greg Fast (better ruby_opt test options) -* Kelly Felkins (requested by better namespace support) -* Martin Fowler (suggested Task.investigation) -* Stuart Jansen (send initial patch for multiple prerequisites). -* Masao Mutch (better support for non-ruby Gem platforms) -* Philipp Neubeck (patch for file task exception fix) - --- Jim Weirich - -=== 0.5.4 - -Time for some minor bug fixes and small enhancements - -==== Changes - -Here are the changes for version 0.5.4 ... - -* Added double quotes to the test runner. This allows the location of - the tests (and runner) to be in a directory path that contains - spaces (e.g. "C:/Program Files/ruby/bin"). -* Added .svn to default ignore list. Now subversion project metadata - is automatically ignored by Rake's FileList. -* Updated FileList#include to support nested arrays and filelists. - FileLists are flat lists of file names. Using a FileList in an - include will flatten out the nested file names. - -== Thanks - -As usual, it was input from users that drove a alot of these changes. -Thanks to ... - -* Tilman Sauerbeck for the nested FileList suggestion. -* Josh Knowles for pointing out the spaces in directory name problem. - --- Jim Weirich - -=== 0.5.3 - -Although it has only been two weeks since the last release, we have -enough updates to the Rake program to make it time for another -release. - -==== Changes - -Here are the changes for version 0.5.3 ... - -* FileLists have been extensively changed so that they mimic the - behavior of real arrays even more closely. In particular, - operations on FileLists that return a new collection (e.g. collect, - reject) will now return a FileList rather than an array. In - addition, several places where FileLists were not properly expanded - before use have been fixed. -* A method (+ext+) to simplify the handling of file extensions was - added to String and to Array. -* The 'testrb' script in test/unit tends to silently swallow syntax - errors in test suites. Because of that, the default test loader is - now a rake-provided script. You can still use 'testrb' by setting - the loader flag in the test task to :testrb. (See the API documents - for TestTask for all the loader flag values). -* FileUtil methods (e.g. cp, mv, install) are now declared to be - private. This will cut down on the interference with user defined - methods of the same name. -* Fixed the verbose flag in the TestTask so that the test code is - controlled by the flag. Also shortened up some failure messages. - (Thanks to Tobias Luetke for the suggestion). -* Rules will now properly detect a task that can generate a source - file. Previously rules would only consider source files that were - already present. -* Added an +import+ command that allows Rake to dynamically import - dependendencies into a running Rake session. The +import+ command - can run tasks to update the dependency file before loading them. - Dependency files can be in rake or make format, allowing rake to - work with tools designed to generate dependencies for make. - -==== Thanks - -As usual, it was input from users that drove a alot of these changes. -Thanks to ... - -* Brian Gernhardt for the rules fix (especially for the patience to - explain the problem to me until I got what he was talking about). -* Stefan Lang for pointing out problems in the dark corners of the - FileList implementation. -* Alexey Verkhovsky pointing out the silently swallows syntax errors - in tests. -* Tobias Luetke for beautifying the test task output. -* Sam Roberts for some of the ideas behind dependency loading. - --- Jim Weirich - - -=== 0.5.0 - -It has been a long time in coming, but we finally have a new version -of Rake available. - -==== Changes - -* Fixed documentation that was lacking the Rake module name (Tilman - Sauerbeck). -* Added tar.gz and tar.bz2 support to package task (Tilman Sauerbeck). -* Recursive rules are now supported (Tilman Sauerbeck). -* Added warning option for the Test Task (requested by Eric Hodel). -* The jamis rdoc template is only used if it exists. -* Added fix for Ruby 1.8.2 test/unit and rails problem. -* Added contributed rake man file (Jani Monoses). -* Added Brian Candler's fix for problems in --trace and --dry-run - mode. - -==== Thanks - -Lots of people provided input to this release. Thanks to Tilman -Sauerbeck for numerous patches, documentation fixes and suggestions. -And for also pushing me to get this release out. Also, thanks to -Brian Candler for the finding and fixing --trace/dry-run fix. That -was an obscure bug. Also to Eric Hodel for some good suggestions. - --- Jim Weirich - -=== 0.4.15 - -==== Changes - -Version 0.4.15 is a bug fix update for the Ruby 1.8.2 compatibility -changes. This release includes: - -* Fixed a bug that prevented the TESTOPTS flag from working with the - revised for 1.8.2 test task. -* Updated the docs on --trace to indicate that it also enables a full - backtrace on errors. -* Several fixes for new warnings generated. - -==== Mini-Roadmap - -I will continue to issue Rake updates in the 0.4.xx series as new -Ruby-1.8.2 issues become manifest. Once the codebase stabilizes, I -will release a 0.5.0 version incorporating all the changes. If you -are not using Ruby-1.8.2 and wish to avoid version churn, I recommend -staying with a release prior to Rake-0.4.14. - -=== 0.4.14 - -Version 0.4.14 is a compatibility fix to allow Rake's test task to -work under Ruby 1.8.2. A change in the Test::Unit autorun feature -prevented Rake from running any tests. This release fixes the -problem. - -Rake 0.4.14 is the recommended release for anyone using Ruby 1.8.2. - -=== 0.4.13 - -* Fixed the dry-run flag so it is operating again. -* Multiple arguments to sh and ruby commands will not be interpreted - by the shell (patch provided by Jonathan Paisley). - -=== 0.4.12 - -* Added --silent (-s) to suppress the (in directory) rake message. - -=== 0.4.11 - -* Changed the "don't know how to rake" message (finally) -* Changes references to a literal "Rakefile" to reference the global - variable $rakefile (which contains the actual name of the rakefile). - -=== 0.4.10 - -* Added block support to the "sh" command, allowing users to take - special actions on the result of the system call. E.g. - - sh "shell_command" do |ok, res| - puts "Program returned #{res.exitstatus}" if ! ok - end - -=== 0.4.9 - -* Switched to Jamis Buck's RDoc template. -* Removed autorequire from Rake's gem spec. This prevents the Rake - libraries from loading while using rails. - -=== 0.4.8 - -* Added support for .rb versions of Rakefile. -* Removed \\\n's from test task. -* Fixed Ruby 1.9 compatibility issue with FileList. - -=== 0.4.7 - -* Fixed problem in FileList that caused Ruby 1.9 to go into infinite - recursion. Since to_a was removed from Object, it does not need to - added back into the list of methods to rewrite in FileList. (Thanks - to Kent Sibilev for pointing this out). - -=== 0.4.6 -* Removed test version of ln in FileUtils that prevented safe_ln from - using ln. - -=== 0.4.5 -* Upgraded comments in TestTask. -* FileList to_s and inspect now automatically resolve pending changes. -* FileList#exclude properly returns the FileList. - -=== 0.4.4 -* Fixed initialization problem with @comment. -* Now using multi -r technique in TestTask. Switch Rakefile back to - using the built-in test task macros because the rake runtime is no - longer needed. -* Added 'TEST=filename' and 'TESTOPTS=options' to the Test Task - macros. -* Allow a +test_files+ attribute in test tasks. This allows more - flexibility in specifying test files. - -=== 0.4.3 -* Fixed Comment leakage. - -=== 0.4.2 -* Added safe_ln that falls back to a copy if a file link is not supported. -* Package builder now uses safe\_ln. - -=== 0.4.1 -* Task comments are now additive, combined with "/". -* Works with (soon to be released) rubygems 0.6.2 (or 0.7.0) - -=== 0.4.0 -* FileList now uses deferred loading. The file system is not searched - until the first call that needs the file names. -* VAR=VALUE options are now accepted on the command line and are - treated like environment variables. The values may be tested in a - Rakefile by referencing ENV['VAR']. -* File.mtime is now used (instead of File.new().mtime). - -=== 0.3.2.x - -* Removed some hidden dependencies on rubygems. Tests now will test - gems only if they are installed. -* Removed Sys from some example files. I believe that is that last - reference to Sys outside of the contrib area. -* Updated all copyright notices to include 2004. - -=== 0.3.2 - -* GEM Installation now works with the application stub. - -=== 0.3.1 - -* FileLists now automatically ignore CVS, .bak, ! -* GEM Installation now works. - -=== 0.3.0 - -Promoted 0.2.10. - -=== 0.2.10 -General - -* Added title to Rake's rdocs -* Contrib packages are no longer included in the documentation. - -RDoc Issues - -* Removed default for the '--main' option -* Fixed rendering of the rdoc options -* Fixed clean/clobber confusion with rerdoc -* 'title' attribute added - -Package Task Library Issues - -* Version (or explicit :noversion) is required. -* +package_file+ attribute is now writable - -FileList Issues - -* Dropped bang version of exclude. Now using ant-like include/exclude semantics. -* Enabled the "yield self" idiom in FileList#initialize. - -=== 0.2.9 - -This version contains numerous changes as the RubyConf.new(2003) -presentation was being prepared. The changes include: - -* The monolithic rubyapp task library is in the process of being - dropped in favor of lighter weight task libraries. - -=== 0.2.7 - -* Added "desc" for task descriptions. -* -T will now display tasks with descriptions. -* -P will display tasks and prerequisites. -* Dropped the Sys module in favor of the 1.8.x FileUtils module. Sys - is still supported in the contrib area. - -=== 0.2.6 - -* Moved to RubyForge - -=== 0.2.5 - -* Switched to standard ruby app builder. -* Added no_match option to file matcher. - -=== 0.2.4 - -* Fixed indir, which neglected to actually change directories. - -=== 0.2.3 - -* Added rake module for a help target -* Added 'for\_files' to Sys -* Added a $rakefile constant -* Added test for selecting proper rule with multiple targets. diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/MIT-LICENSE b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/MIT-LICENSE deleted file mode 100644 index 4292f3b3..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/MIT-LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) Jim Weirich - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/README.rdoc b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/README.rdoc deleted file mode 100644 index ab136b85..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/README.rdoc +++ /dev/null @@ -1,156 +0,0 @@ -= RAKE -- Ruby Make - -home :: https://github.com/ruby/rake -bugs :: https://github.com/ruby/rake/issues -docs :: https://ruby.github.io/rake -build status :: {travis-ci}[https://travis-ci.org/ruby/rake] {appveyor}[https://ci.appveyor.com/project/ruby/rake] - -== Description - -Rake is a Make-like program implemented in Ruby. Tasks and dependencies are -specified in standard Ruby syntax. - -Rake has the following features: - -* Rakefiles (rake's version of Makefiles) are completely defined in - standard Ruby syntax. No XML files to edit. No quirky Makefile - syntax to worry about (is that a tab or a space?) - -* Users can specify tasks with prerequisites. - -* Rake supports rule patterns to synthesize implicit tasks. - -* Flexible FileLists that act like arrays but know about manipulating - file names and paths. - -* A library of prepackaged tasks to make building rakefiles easier. For example, - tasks for building tarballs. (Formerly - tasks for building RDoc, Gems, and publishing to FTP were included in rake but they're now - available in RDoc, RubyGems, and rake-contrib respectively.) - -* Supports parallel execution of tasks. - -== Installation - -=== Gem Installation - -Download and install rake with the following. - - gem install rake - -== Usage - -=== Simple Example - -First, you must write a "Rakefile" file which contains the build rules. Here's -a simple example: - - task default: %w[test] - - task :test do - ruby "test/unittest.rb" - end - -This Rakefile has two tasks: - -* A task named "test", which -- upon invocation -- will run a unit test file - in Ruby. -* A task named "default". This task does nothing by itself, but it has exactly - one dependency, namely the "test" task. Invoking the "default" task will - cause Rake to invoke the "test" task as well. - -Running the "rake" command without any options will cause it to run the -"default" task in the Rakefile: - - % ls - Rakefile test/ - % rake - (in /home/some_user/Projects/rake) - ruby test/unittest.rb - ....unit test output here... - -Type "rake --help" for all available options. - -== Resources - -=== Rake Information - -* {Rake command-line}[link:doc/command_line_usage.rdoc] -* {Writing Rakefiles}[link:doc/rakefile.rdoc] -* The original {Rake announcement}[link:doc/rational.rdoc] -* Rake {glossary}[link:doc/glossary.rdoc] - -=== Presentations and Articles about Rake - -* Avdi Grimm's rake series: - 1. {Rake Basics}[http://devblog.avdi.org/2014/04/21/rake-part-1-basics/] - 2. {Rake File Lists}[http://devblog.avdi.org/2014/04/22/rake-part-2-file-lists/] - 3. {Rake Rules}[http://devblog.avdi.org/2014/04/23/rake-part-3-rules/] - 4. {Rake Pathmap}[http://devblog.avdi.org/2014/04/24/rake-part-4-pathmap/] - 5. {File Operations}[http://devblog.avdi.org/2014/04/25/rake-part-5-file-operations/] - 6. {Clean and Clobber}[http://devblog.avdi.org/2014/04/28/rake-part-6-clean-and-clobber/] - 7. {MultiTask}[http://devblog.avdi.org/2014/04/29/rake-part-7-multitask/] -* {Jim Weirich's 2003 RubyConf presentation}[http://web.archive.org/web/20140221123354/http://onestepback.org/articles/buildingwithrake/] -* Martin Fowler's article on Rake: http://martinfowler.com/articles/rake.html - -== Other Make Re-envisionings ... - -Rake is a late entry in the make replacement field. Here are links to -other projects with similar (and not so similar) goals. - -* http://directory.fsf.org/wiki/Bras -- Bras, one of earliest - implementations of "make in a scripting language". -* http://www.a-a-p.org -- Make in Python -* http://ant.apache.org -- The Ant project -* http://search.cpan.org/search?query=PerlBuildSystem -- The Perl Build System -* http://www.rubydoc.info/gems/rant/0.5.7/frames -- Rant, another Ruby make tool. - -== Credits - -[Jim Weirich] Who originally created Rake. - -[Ryan Dlugosz] For the initial conversation that sparked Rake. - -[Nobuyoshi Nakada ] For the initial patch for rule support. - -[Tilman Sauerbeck ] For the recursive rule patch. - -[Eric Hodel] For aid in maintaining rake. - -[Hiroshi SHIBATA] Maintainer of Rake 10.X and Rake 11.X - -== License - -Rake is available under an MIT-style license. - -:include: MIT-LICENSE - ---- - -= Other stuff - -Author:: Jim Weirich -Requires:: Ruby 2.0.0 or later -License:: Copyright Jim Weirich. - Released under an MIT-style license. See the MIT-LICENSE - file included in the distribution. - -== Warranty - -This software is provided "as is" and without any express or implied -warranties, including, without limitation, the implied warranties of -merchantability and fitness for a particular purpose. - -== Historical - -Rake was originally created by Jim Weirich, who unfortunately passed away in -February 2014. This repository was originally hosted at -{github.com/jimweirich/rake}[https://github.com/jimweirich/rake/], however -with his passing, has been moved to {ruby/rake}[https://github.com/ruby/rake]. - -You can view Jim's last commit here: -https://github.com/jimweirich/rake/tree/336559f28f55bce418e2ebcc0a57548dcbac4025 - -You can {read more about Jim}[https://en.wikipedia.org/wiki/Jim_Weirich] at Wikipedia. - -Thank you for this great tool, Jim. We'll remember you. diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/Rakefile b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/Rakefile deleted file mode 100644 index e03dc6fe..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/Rakefile +++ /dev/null @@ -1,41 +0,0 @@ -# Rakefile for rake -*- ruby -*- - -# Copyright 2003, 2004, 2005 by Jim Weirich (jim@weirichhouse.org) -# All rights reserved. - -# This file may be distributed under an MIT style license. See -# MIT-LICENSE for details. - -lib = File.expand_path("../lib", __FILE__) -$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) - -begin - require "bundler/gem_tasks" -rescue LoadError -end - -require "rake/testtask" -Rake::TestTask.new(:test) do |t| - t.libs << "test" - t.verbose = true - t.test_files = FileList["test/**/test_*.rb"] -end - -require "rdoc/task" -RDoc::Task.new do |doc| - doc.main = "README.rdoc" - doc.title = "Rake -- Ruby Make" - doc.rdoc_files = FileList.new %w[lib MIT-LICENSE doc/**/*.rdoc *.rdoc] - doc.rdoc_dir = "html" -end - -task ghpages: :rdoc do - %x[git checkout gh-pages] - require "fileutils" - FileUtils.rm_rf "/tmp/html" - FileUtils.mv "html", "/tmp" - FileUtils.rm_rf "*" - FileUtils.cp_r Dir.glob("/tmp/html/*"), "." -end - -task default: :test diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/azure-pipelines.yml b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/azure-pipelines.yml deleted file mode 100644 index 19cce3ee..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/azure-pipelines.yml +++ /dev/null @@ -1,11 +0,0 @@ -jobs: -- job: macOS - pool: - vmImage: 'macos-10.13' - steps: - - script: | - gem install bundler - bundle install --retry=3 --jobs=4 - displayName: 'bundle install' - - script: ruby -Ilib exe/rake - displayName: 'ruby -Ilib exe/rake' diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/bundle b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/bundle deleted file mode 100755 index 524dfd3f..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/bundle +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env ruby -# frozen_string_literal: true - -# -# This file was generated by Bundler. -# -# The application 'bundle' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require "rubygems" - -m = Module.new do - module_function - - def invoked_as_script? - File.expand_path($0) == File.expand_path(__FILE__) - end - - def env_var_version - ENV["BUNDLER_VERSION"] - end - - def cli_arg_version - return unless invoked_as_script? # don't want to hijack other binstubs - return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update` - bundler_version = nil - update_index = nil - ARGV.each_with_index do |a, i| - if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN - bundler_version = a - end - next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/ - bundler_version = $1 || ">= 0.a" - update_index = i - end - bundler_version - end - - def gemfile - gemfile = ENV["BUNDLE_GEMFILE"] - return gemfile if gemfile && !gemfile.empty? - - File.expand_path("../../Gemfile", __FILE__) - end - - def lockfile - lockfile = - case File.basename(gemfile) - when "gems.rb" then gemfile.sub(/\.rb$/, gemfile) - else "#{gemfile}.lock" - end - File.expand_path(lockfile) - end - - def lockfile_version - return unless File.file?(lockfile) - lockfile_contents = File.read(lockfile) - return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/ - Regexp.last_match(1) - end - - def bundler_version - @bundler_version ||= begin - env_var_version || cli_arg_version || - lockfile_version || "#{Gem::Requirement.default}.a" - end - end - - def load_bundler! - ENV["BUNDLE_GEMFILE"] ||= gemfile - - # must dup string for RG < 1.8 compatibility - activate_bundler(bundler_version.dup) - end - - def activate_bundler(bundler_version) - if Gem::Version.correct?(bundler_version) && Gem::Version.new(bundler_version).release < Gem::Version.new("2.0") - bundler_version = "< 2" - end - gem_error = activation_error_handling do - gem "bundler", bundler_version - end - return if gem_error.nil? - require_error = activation_error_handling do - require "bundler/version" - end - return if require_error.nil? && Gem::Requirement.new(bundler_version).satisfied_by?(Gem::Version.new(Bundler::VERSION)) - warn "Activating bundler (#{bundler_version}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_version}'`" - exit 42 - end - - def activation_error_handling - yield - nil - rescue StandardError, LoadError => e - e - end -end - -m.load_bundler! - -if m.invoked_as_script? - load Gem.bin_path("bundler", "bundle") -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/console b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/console deleted file mode 100755 index b8342352..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/console +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env ruby - -require "bundler/setup" -require "rake" - -require "irb" -IRB.start diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rake b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rake deleted file mode 100755 index 9275675e..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rake +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env ruby -# frozen_string_literal: true - -# -# This file was generated by Bundler. -# -# The application 'rake' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require "pathname" -ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", - Pathname.new(__FILE__).realpath) - -bundle_binstub = File.expand_path("../bundle", __FILE__) - -if File.file?(bundle_binstub) - if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ - load(bundle_binstub) - else - abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. -Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") - end -end - -require "rubygems" -require "bundler/setup" - -load Gem.bin_path("rake", "rake") diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rdoc b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rdoc deleted file mode 100755 index a952e798..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rdoc +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env ruby -# frozen_string_literal: true - -# -# This file was generated by Bundler. -# -# The application 'rdoc' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require "pathname" -ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", - Pathname.new(__FILE__).realpath) - -bundle_binstub = File.expand_path("../bundle", __FILE__) - -if File.file?(bundle_binstub) - if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ - load(bundle_binstub) - else - abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. -Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") - end -end - -require "rubygems" -require "bundler/setup" - -load Gem.bin_path("rdoc", "rdoc") diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rubocop b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rubocop deleted file mode 100755 index d0c48829..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/rubocop +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env ruby -# frozen_string_literal: true - -# -# This file was generated by Bundler. -# -# The application 'rubocop' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require "pathname" -ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", - Pathname.new(__FILE__).realpath) - -bundle_binstub = File.expand_path("../bundle", __FILE__) - -if File.file?(bundle_binstub) - if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ - load(bundle_binstub) - else - abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. -Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") - end -end - -require "rubygems" -require "bundler/setup" - -load Gem.bin_path("rubocop", "rubocop") diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/setup b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/setup deleted file mode 100755 index cf4ad25e..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/bin/setup +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -IFS=$'\n\t' -set -vx - -bundle install diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/exe/rake b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/exe/rake deleted file mode 100755 index a00975f3..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/exe/rake +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env ruby - -#-- -# Copyright (c) 2003, 2004, 2005, 2006, 2007 Jim Weirich -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -#++ - -require "rake" - -Rake.application.run diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake.rb deleted file mode 100644 index 0dfd0531..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake.rb +++ /dev/null @@ -1,71 +0,0 @@ -# frozen_string_literal: true -#-- -# Copyright 2003-2010 by Jim Weirich (jim.weirich@gmail.com) -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -#++ - -module Rake; end - -require "rake/version" - -require "rbconfig" -require "fileutils" -require "singleton" -require "monitor" -require "optparse" -require "ostruct" - -require "rake/ext/string" - -require "rake/win32" - -require "rake/linked_list" -require "rake/cpu_counter" -require "rake/scope" -require "rake/task_argument_error" -require "rake/rule_recursion_overflow_error" -require "rake/rake_module" -require "rake/trace_output" -require "rake/pseudo_status" -require "rake/task_arguments" -require "rake/invocation_chain" -require "rake/task" -require "rake/file_task" -require "rake/file_creation_task" -require "rake/multi_task" -require "rake/dsl_definition" -require "rake/file_utils_ext" -require "rake/file_list" -require "rake/default_loader" -require "rake/early_time" -require "rake/late_time" -require "rake/name_space" -require "rake/task_manager" -require "rake/application" -require "rake/backtrace" - -$trace = false - -# :stopdoc: -# -# Some top level Constants. - -FileList = Rake::FileList -RakeFileUtils = Rake::FileUtilsExt diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/application.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/application.rb deleted file mode 100644 index 9ac9b213..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/application.rb +++ /dev/null @@ -1,824 +0,0 @@ -# frozen_string_literal: true -require "optparse" - -require "rake/task_manager" -require "rake/file_list" -require "rake/thread_pool" -require "rake/thread_history_display" -require "rake/trace_output" -require "rake/win32" - -module Rake - - CommandLineOptionError = Class.new(StandardError) - - ## - # Rake main application object. When invoking +rake+ from the - # command line, a Rake::Application object is created and run. - - class Application - include TaskManager - include TraceOutput - - # The name of the application (typically 'rake') - attr_reader :name - - # The original directory where rake was invoked. - attr_reader :original_dir - - # Name of the actual rakefile used. - attr_reader :rakefile - - # Number of columns on the terminal - attr_accessor :terminal_columns - - # List of the top level task names (task names from the command line). - attr_reader :top_level_tasks - - # Override the detected TTY output state (mostly for testing) - attr_writer :tty_output - - DEFAULT_RAKEFILES = [ - "rakefile", - "Rakefile", - "rakefile.rb", - "Rakefile.rb" - ].freeze - - # Initialize a Rake::Application object. - def initialize - super - @name = "rake" - @rakefiles = DEFAULT_RAKEFILES.dup - @rakefile = nil - @pending_imports = [] - @imported = [] - @loaders = {} - @default_loader = Rake::DefaultLoader.new - @original_dir = Dir.pwd - @top_level_tasks = [] - add_loader("rb", DefaultLoader.new) - add_loader("rf", DefaultLoader.new) - add_loader("rake", DefaultLoader.new) - @tty_output = STDOUT.tty? - @terminal_columns = ENV["RAKE_COLUMNS"].to_i - - set_default_options - end - - # Run the Rake application. The run method performs the following - # three steps: - # - # * Initialize the command line options (+init+). - # * Define the tasks (+load_rakefile+). - # * Run the top level tasks (+top_level+). - # - # If you wish to build a custom rake command, you should call - # +init+ on your application. Then define any tasks. Finally, - # call +top_level+ to run your top level tasks. - def run(argv = ARGV) - standard_exception_handling do - init "rake", argv - load_rakefile - top_level - end - end - - # Initialize the command line parameters and app name. - def init(app_name="rake", argv = ARGV) - standard_exception_handling do - @name = app_name - begin - args = handle_options argv - rescue ArgumentError - # Backward compatibility for capistrano - args = handle_options - end - collect_command_line_tasks(args) - end - end - - # Find the rakefile and then load it and any pending imports. - def load_rakefile - standard_exception_handling do - raw_load_rakefile - end - end - - # Run the top level tasks of a Rake application. - def top_level - run_with_threads do - if options.show_tasks - display_tasks_and_comments - elsif options.show_prereqs - display_prerequisites - else - top_level_tasks.each { |task_name| invoke_task(task_name) } - end - end - end - - # Run the given block with the thread startup and shutdown. - def run_with_threads - thread_pool.gather_history if options.job_stats == :history - - yield - - thread_pool.join - if options.job_stats - stats = thread_pool.statistics - puts "Maximum active threads: #{stats[:max_active_threads]} + main" - puts "Total threads in play: #{stats[:total_threads_in_play]} + main" - end - ThreadHistoryDisplay.new(thread_pool.history).show if - options.job_stats == :history - end - - # Add a loader to handle imported files ending in the extension - # +ext+. - def add_loader(ext, loader) - ext = ".#{ext}" unless ext =~ /^\./ - @loaders[ext] = loader - end - - # Application options from the command line - def options - @options ||= OpenStruct.new - end - - # Return the thread pool used for multithreaded processing. - def thread_pool # :nodoc: - @thread_pool ||= ThreadPool.new(options.thread_pool_size || Rake.suggested_thread_count-1) - end - - # internal ---------------------------------------------------------------- - - # Invokes a task with arguments that are extracted from +task_string+ - def invoke_task(task_string) # :nodoc: - name, args = parse_task_string(task_string) - t = self[name] - t.invoke(*args) - end - - def parse_task_string(string) # :nodoc: - /^([^\[]+)(?:\[(.*)\])$/ =~ string.to_s - - name = $1 - remaining_args = $2 - - return string, [] unless name - return name, [] if remaining_args.empty? - - args = [] - - begin - /\s*((?:[^\\,]|\\.)*?)\s*(?:,\s*(.*))?$/ =~ remaining_args - - remaining_args = $2 - args << $1.gsub(/\\(.)/, '\1') - end while remaining_args - - return name, args - end - - # Provide standard exception handling for the given block. - def standard_exception_handling # :nodoc: - yield - rescue SystemExit - # Exit silently with current status - raise - rescue OptionParser::InvalidOption => ex - $stderr.puts ex.message - exit(false) - rescue Exception => ex - # Exit with error message - display_error_message(ex) - exit_because_of_exception(ex) - end - - # Exit the program because of an unhandled exception. - # (may be overridden by subclasses) - def exit_because_of_exception(ex) # :nodoc: - exit(false) - end - - # Display the error message that caused the exception. - def display_error_message(ex) # :nodoc: - trace "#{name} aborted!" - display_exception_details(ex) - trace "Tasks: #{ex.chain}" if has_chain?(ex) - trace "(See full trace by running task with --trace)" unless - options.backtrace - end - - def display_exception_details(ex) # :nodoc: - display_exception_details_seen << ex - - display_exception_message_details(ex) - display_exception_backtrace(ex) - display_cause_details(ex.cause) if has_cause?(ex) - end - - def display_cause_details(ex) # :nodoc: - return if display_exception_details_seen.include? ex - - trace "\nCaused by:" - display_exception_details(ex) - end - - def display_exception_details_seen # :nodoc: - Thread.current[:rake_display_exception_details_seen] ||= [] - end - - def has_cause?(ex) # :nodoc: - ex.respond_to?(:cause) && ex.cause - end - - def display_exception_message_details(ex) # :nodoc: - if ex.instance_of?(RuntimeError) - trace ex.message - else - trace "#{ex.class.name}: #{ex.message}" - end - end - - def display_exception_backtrace(ex) # :nodoc: - if options.backtrace - trace ex.backtrace.join("\n") - else - trace Backtrace.collapse(ex.backtrace).join("\n") - end - end - - # Warn about deprecated usage. - # - # Example: - # Rake.application.deprecate("import", "Rake.import", caller.first) - # - def deprecate(old_usage, new_usage, call_site) # :nodoc: - unless options.ignore_deprecate - $stderr.puts "WARNING: '#{old_usage}' is deprecated. " + - "Please use '#{new_usage}' instead.\n" + - " at #{call_site}" - end - end - - # Does the exception have a task invocation chain? - def has_chain?(exception) # :nodoc: - exception.respond_to?(:chain) && exception.chain - end - private :has_chain? - - # True if one of the files in RAKEFILES is in the current directory. - # If a match is found, it is copied into @rakefile. - def have_rakefile # :nodoc: - @rakefiles.each do |fn| - if File.exist?(fn) - others = FileList.glob(fn, File::FNM_CASEFOLD) - return others.size == 1 ? others.first : fn - elsif fn == "" - return fn - end - end - return nil - end - - # True if we are outputting to TTY, false otherwise - def tty_output? # :nodoc: - @tty_output - end - - # We will truncate output if we are outputting to a TTY or if we've been - # given an explicit column width to honor - def truncate_output? # :nodoc: - tty_output? || @terminal_columns.nonzero? - end - - # Display the tasks and comments. - def display_tasks_and_comments # :nodoc: - displayable_tasks = tasks.select { |t| - (options.show_all_tasks || t.comment) && - t.name =~ options.show_task_pattern - } - case options.show_tasks - when :tasks - width = displayable_tasks.map { |t| t.name_with_args.length }.max || 10 - if truncate_output? - max_column = terminal_width - name.size - width - 7 - else - max_column = nil - end - - displayable_tasks.each do |t| - printf("#{name} %-#{width}s # %s\n", - t.name_with_args, - max_column ? truncate(t.comment, max_column) : t.comment) - end - when :describe - displayable_tasks.each do |t| - puts "#{name} #{t.name_with_args}" - comment = t.full_comment || "" - comment.split("\n").each do |line| - puts " #{line}" - end - puts - end - when :lines - displayable_tasks.each do |t| - t.locations.each do |loc| - printf "#{name} %-30s %s\n", t.name_with_args, loc - end - end - else - fail "Unknown show task mode: '#{options.show_tasks}'" - end - end - - def terminal_width # :nodoc: - if @terminal_columns.nonzero? - result = @terminal_columns - else - result = unix? ? dynamic_width : 80 - end - (result < 10) ? 80 : result - rescue - 80 - end - - # Calculate the dynamic width of the - def dynamic_width # :nodoc: - @dynamic_width ||= (dynamic_width_stty.nonzero? || dynamic_width_tput) - end - - def dynamic_width_stty # :nodoc: - %x{stty size 2>/dev/null}.split[1].to_i - end - - def dynamic_width_tput # :nodoc: - %x{tput cols 2>/dev/null}.to_i - end - - def unix? # :nodoc: - RbConfig::CONFIG["host_os"] =~ - /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i - end - - def windows? # :nodoc: - Win32.windows? - end - - def truncate(string, width) # :nodoc: - if string.nil? - "" - elsif string.length <= width - string - else - (string[0, width - 3] || "") + "..." - end - end - - # Display the tasks and prerequisites - def display_prerequisites # :nodoc: - tasks.each do |t| - puts "#{name} #{t.name}" - t.prerequisites.each { |pre| puts " #{pre}" } - end - end - - def trace(*strings) # :nodoc: - options.trace_output ||= $stderr - trace_on(options.trace_output, *strings) - end - - def sort_options(options) # :nodoc: - options.sort_by { |opt| - opt.select { |o| o.is_a?(String) && o =~ /^-/ }.map(&:downcase).sort.reverse - } - end - private :sort_options - - # A list of all the standard options used in rake, suitable for - # passing to OptionParser. - def standard_rake_options # :nodoc: - sort_options( - [ - ["--all", "-A", - "Show all tasks, even uncommented ones (in combination with -T or -D)", - lambda { |value| - options.show_all_tasks = value - } - ], - ["--backtrace=[OUT]", - "Enable full backtrace. OUT can be stderr (default) or stdout.", - lambda { |value| - options.backtrace = true - select_trace_output(options, "backtrace", value) - } - ], - ["--build-all", "-B", - "Build all prerequisites, including those which are up-to-date.", - lambda { |value| - options.build_all = true - } - ], - ["--comments", - "Show commented tasks only", - lambda { |value| - options.show_all_tasks = !value - } - ], - ["--describe", "-D [PATTERN]", - "Describe the tasks (matching optional PATTERN), then exit.", - lambda { |value| - select_tasks_to_show(options, :describe, value) - } - ], - ["--dry-run", "-n", - "Do a dry run without executing actions.", - lambda { |value| - Rake.verbose(true) - Rake.nowrite(true) - options.dryrun = true - options.trace = true - } - ], - ["--execute", "-e CODE", - "Execute some Ruby code and exit.", - lambda { |value| - eval(value) - exit - } - ], - ["--execute-print", "-p CODE", - "Execute some Ruby code, print the result, then exit.", - lambda { |value| - puts eval(value) - exit - } - ], - ["--execute-continue", "-E CODE", - "Execute some Ruby code, " + - "then continue with normal task processing.", - lambda { |value| eval(value) } - ], - ["--jobs", "-j [NUMBER]", - "Specifies the maximum number of tasks to execute in parallel. " + - "(default is number of CPU cores + 4)", - lambda { |value| - if value.nil? || value == "" - value = Float::INFINITY - elsif value =~ /^\d+$/ - value = value.to_i - else - value = Rake.suggested_thread_count - end - value = 1 if value < 1 - options.thread_pool_size = value - 1 - } - ], - ["--job-stats [LEVEL]", - "Display job statistics. " + - "LEVEL=history displays a complete job list", - lambda { |value| - if value =~ /^history/i - options.job_stats = :history - else - options.job_stats = true - end - } - ], - ["--libdir", "-I LIBDIR", - "Include LIBDIR in the search path for required modules.", - lambda { |value| $:.push(value) } - ], - ["--multitask", "-m", - "Treat all tasks as multitasks.", - lambda { |value| options.always_multitask = true } - ], - ["--no-search", "--nosearch", - "-N", "Do not search parent directories for the Rakefile.", - lambda { |value| options.nosearch = true } - ], - ["--prereqs", "-P", - "Display the tasks and dependencies, then exit.", - lambda { |value| options.show_prereqs = true } - ], - ["--quiet", "-q", - "Do not log messages to standard output.", - lambda { |value| Rake.verbose(false) } - ], - ["--rakefile", "-f [FILENAME]", - "Use FILENAME as the rakefile to search for.", - lambda { |value| - value ||= "" - @rakefiles.clear - @rakefiles << value - } - ], - ["--rakelibdir", "--rakelib", "-R RAKELIBDIR", - "Auto-import any .rake files in RAKELIBDIR. " + - "(default is 'rakelib')", - lambda { |value| - options.rakelib = value.split(File::PATH_SEPARATOR) - } - ], - ["--require", "-r MODULE", - "Require MODULE before executing rakefile.", - lambda { |value| - begin - require value - rescue LoadError => ex - begin - rake_require value - rescue LoadError - raise ex - end - end - } - ], - ["--rules", - "Trace the rules resolution.", - lambda { |value| options.trace_rules = true } - ], - ["--silent", "-s", - "Like --quiet, but also suppresses the " + - "'in directory' announcement.", - lambda { |value| - Rake.verbose(false) - options.silent = true - } - ], - ["--suppress-backtrace PATTERN", - "Suppress backtrace lines matching regexp PATTERN. " + - "Ignored if --trace is on.", - lambda { |value| - options.suppress_backtrace_pattern = Regexp.new(value) - } - ], - ["--system", "-g", - "Using system wide (global) rakefiles " + - "(usually '~/.rake/*.rake').", - lambda { |value| options.load_system = true } - ], - ["--no-system", "--nosystem", "-G", - "Use standard project Rakefile search paths, " + - "ignore system wide rakefiles.", - lambda { |value| options.ignore_system = true } - ], - ["--tasks", "-T [PATTERN]", - "Display the tasks (matching optional PATTERN) " + - "with descriptions, then exit. " + - "-AT combination displays all of tasks contained no description.", - lambda { |value| - select_tasks_to_show(options, :tasks, value) - } - ], - ["--trace=[OUT]", "-t", - "Turn on invoke/execute tracing, enable full backtrace. " + - "OUT can be stderr (default) or stdout.", - lambda { |value| - options.trace = true - options.backtrace = true - select_trace_output(options, "trace", value) - Rake.verbose(true) - } - ], - ["--verbose", "-v", - "Log message to standard output.", - lambda { |value| Rake.verbose(true) } - ], - ["--version", "-V", - "Display the program version.", - lambda { |value| - puts "rake, version #{Rake::VERSION}" - exit - } - ], - ["--where", "-W [PATTERN]", - "Describe the tasks (matching optional PATTERN), then exit.", - lambda { |value| - select_tasks_to_show(options, :lines, value) - options.show_all_tasks = true - } - ], - ["--no-deprecation-warnings", "-X", - "Disable the deprecation warnings.", - lambda { |value| - options.ignore_deprecate = true - } - ], - ]) - end - - def select_tasks_to_show(options, show_tasks, value) # :nodoc: - options.show_tasks = show_tasks - options.show_task_pattern = Regexp.new(value || "") - Rake::TaskManager.record_task_metadata = true - end - private :select_tasks_to_show - - def select_trace_output(options, trace_option, value) # :nodoc: - value = value.strip unless value.nil? - case value - when "stdout" - options.trace_output = $stdout - when "stderr", nil - options.trace_output = $stderr - else - fail CommandLineOptionError, - "Unrecognized --#{trace_option} option '#{value}'" - end - end - private :select_trace_output - - # Read and handle the command line options. Returns the command line - # arguments that we didn't understand, which should (in theory) be just - # task names and env vars. - def handle_options(argv) # :nodoc: - set_default_options - - OptionParser.new do |opts| - opts.banner = "#{Rake.application.name} [-f rakefile] {options} targets..." - opts.separator "" - opts.separator "Options are ..." - - opts.on_tail("-h", "--help", "-H", "Display this help message.") do - puts opts - exit - end - - standard_rake_options.each { |args| opts.on(*args) } - opts.environment("RAKEOPT") - end.parse(argv) - end - - # Similar to the regular Ruby +require+ command, but will check - # for *.rake files in addition to *.rb files. - def rake_require(file_name, paths=$LOAD_PATH, loaded=$") # :nodoc: - fn = file_name + ".rake" - return false if loaded.include?(fn) - paths.each do |path| - full_path = File.join(path, fn) - if File.exist?(full_path) - Rake.load_rakefile(full_path) - loaded << fn - return true - end - end - fail LoadError, "Can't find #{file_name}" - end - - def find_rakefile_location # :nodoc: - here = Dir.pwd - until (fn = have_rakefile) - Dir.chdir("..") - return nil if Dir.pwd == here || options.nosearch - here = Dir.pwd - end - [fn, here] - ensure - Dir.chdir(Rake.original_dir) - end - - def print_rakefile_directory(location) # :nodoc: - $stderr.puts "(in #{Dir.pwd})" unless - options.silent or original_dir == location - end - - def raw_load_rakefile # :nodoc: - rakefile, location = find_rakefile_location - if (!options.ignore_system) && - (options.load_system || rakefile.nil?) && - system_dir && File.directory?(system_dir) - print_rakefile_directory(location) - glob("#{system_dir}/*.rake") do |name| - add_import name - end - else - fail "No Rakefile found (looking for: #{@rakefiles.join(', ')})" if - rakefile.nil? - @rakefile = rakefile - Dir.chdir(location) - print_rakefile_directory(location) - Rake.load_rakefile(File.expand_path(@rakefile)) if - @rakefile && @rakefile != "" - options.rakelib.each do |rlib| - glob("#{rlib}/*.rake") do |name| - add_import name - end - end - end - load_imports - end - - def glob(path, &block) # :nodoc: - FileList.glob(path.tr("\\", "/")).each(&block) - end - private :glob - - # The directory path containing the system wide rakefiles. - def system_dir # :nodoc: - @system_dir ||= - begin - if ENV["RAKE_SYSTEM"] - ENV["RAKE_SYSTEM"] - else - standard_system_dir - end - end - end - - # The standard directory containing system wide rake files. - if Win32.windows? - def standard_system_dir #:nodoc: - Win32.win32_system_dir - end - else - def standard_system_dir #:nodoc: - File.join(File.expand_path("~"), ".rake") - end - end - private :standard_system_dir - - # Collect the list of tasks on the command line. If no tasks are - # given, return a list containing only the default task. - # Environmental assignments are processed at this time as well. - # - # `args` is the list of arguments to peruse to get the list of tasks. - # It should be the command line that was given to rake, less any - # recognised command-line options, which OptionParser.parse will - # have taken care of already. - def collect_command_line_tasks(args) # :nodoc: - @top_level_tasks = [] - args.each do |arg| - if arg =~ /^(\w+)=(.*)$/m - ENV[$1] = $2 - else - @top_level_tasks << arg unless arg =~ /^-/ - end - end - @top_level_tasks.push(default_task_name) if @top_level_tasks.empty? - end - - # Default task name ("default"). - # (May be overridden by subclasses) - def default_task_name # :nodoc: - "default" - end - - # Add a file to the list of files to be imported. - def add_import(fn) # :nodoc: - @pending_imports << fn - end - - # Load the pending list of imported files. - def load_imports # :nodoc: - while fn = @pending_imports.shift - next if @imported.member?(fn) - fn_task = lookup(fn) and fn_task.invoke - ext = File.extname(fn) - loader = @loaders[ext] || @default_loader - loader.load(fn) - if fn_task = lookup(fn) and fn_task.needed? - fn_task.reenable - fn_task.invoke - loader.load(fn) - end - @imported << fn - end - end - - def rakefile_location(backtrace=caller) # :nodoc: - backtrace.map { |t| t[/([^:]+):/, 1] } - - re = /^#{@rakefile}$/ - re = /#{re.source}/i if windows? - - backtrace.find { |str| str =~ re } || "" - end - - def set_default_options # :nodoc: - options.always_multitask = false - options.backtrace = false - options.build_all = false - options.dryrun = false - options.ignore_deprecate = false - options.ignore_system = false - options.job_stats = false - options.load_system = false - options.nosearch = false - options.rakelib = %w[rakelib] - options.show_all_tasks = false - options.show_prereqs = false - options.show_task_pattern = nil - options.show_tasks = nil - options.silent = false - options.suppress_backtrace_pattern = nil - options.thread_pool_size = Rake.suggested_thread_count - options.trace = false - options.trace_output = $stderr - options.trace_rules = false - end - - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/backtrace.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/backtrace.rb deleted file mode 100644 index 31ff0545..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/backtrace.rb +++ /dev/null @@ -1,24 +0,0 @@ -# frozen_string_literal: true -module Rake - module Backtrace # :nodoc: all - SYS_KEYS = RbConfig::CONFIG.keys.grep(/(?:[a-z]prefix|libdir)\z/) - SYS_PATHS = RbConfig::CONFIG.values_at(*SYS_KEYS).uniq + - [ File.join(File.dirname(__FILE__), "..") ] - - SUPPRESSED_PATHS = SYS_PATHS. - map { |s| s.tr("\\", "/") }. - map { |f| File.expand_path(f) }. - reject { |s| s.nil? || s =~ /^ *$/ } - SUPPRESSED_PATHS_RE = SUPPRESSED_PATHS.map { |f| Regexp.quote(f) }.join("|") - SUPPRESSED_PATHS_RE << "|^org\\/jruby\\/\\w+\\.java" if - Object.const_defined?(:RUBY_ENGINE) and RUBY_ENGINE == "jruby" - - SUPPRESS_PATTERN = %r!(\A(#{SUPPRESSED_PATHS_RE})|bin/rake:\d+)!i - - def self.collapse(backtrace) - pattern = Rake.application.options.suppress_backtrace_pattern || - SUPPRESS_PATTERN - backtrace.reject { |elem| elem =~ pattern } - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/clean.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/clean.rb deleted file mode 100644 index 5af44015..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/clean.rb +++ /dev/null @@ -1,78 +0,0 @@ -# frozen_string_literal: true -# The 'rake/clean' file defines two file lists (CLEAN and CLOBBER) and -# two rake tasks (:clean and :clobber). -# -# [:clean] Clean up the project by deleting scratch files and backup -# files. Add files to the CLEAN file list to have the :clean -# target handle them. -# -# [:clobber] Clobber all generated and non-source files in a project. -# The task depends on :clean, so all the clean files will -# be deleted as well as files in the CLOBBER file list. -# The intent of this task is to return a project to its -# pristine, just unpacked state. - -require "rake" - -# :stopdoc: - -module Rake - module Cleaner - extend FileUtils - - module_function - - def cleanup_files(file_names) - file_names.each do |file_name| - cleanup(file_name) - end - end - - def cleanup(file_name, opts={}) - begin - opts = { verbose: Rake.application.options.trace }.merge(opts) - rm_r file_name, opts - rescue StandardError => ex - puts "Failed to remove #{file_name}: #{ex}" unless file_already_gone?(file_name) - end - end - - def file_already_gone?(file_name) - return false if File.exist?(file_name) - - path = file_name - prev = nil - - while path = File.dirname(path) - return false if cant_be_deleted?(path) - break if [prev, "."].include?(path) - prev = path - end - true - end - private_class_method :file_already_gone? - - def cant_be_deleted?(path_name) - File.exist?(path_name) && - (!File.readable?(path_name) || !File.executable?(path_name)) - end - private_class_method :cant_be_deleted? - end -end - -CLEAN = ::Rake::FileList["**/*~", "**/*.bak", "**/core"] -CLEAN.clear_exclude.exclude { |fn| - fn.pathmap("%f").downcase == "core" && File.directory?(fn) -} - -desc "Remove any temporary products." -task :clean do - Rake::Cleaner.cleanup_files(CLEAN) -end - -CLOBBER = ::Rake::FileList.new - -desc "Remove any generated files." -task clobber: [:clean] do - Rake::Cleaner.cleanup_files(CLOBBER) -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/cloneable.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/cloneable.rb deleted file mode 100644 index eddb77e2..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/cloneable.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true -module Rake - ## - # Mixin for creating easily cloned objects. - - module Cloneable # :nodoc: - # The hook that is invoked by 'clone' and 'dup' methods. - def initialize_copy(source) - super - source.instance_variables.each do |var| - src_value = source.instance_variable_get(var) - value = src_value.clone rescue src_value - instance_variable_set(var, value) - end - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/cpu_counter.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/cpu_counter.rb deleted file mode 100644 index 564a6285..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/cpu_counter.rb +++ /dev/null @@ -1,107 +0,0 @@ -# frozen_string_literal: true -module Rake - - # Based on a script at: - # http://stackoverflow.com/questions/891537/ruby-detect-number-of-cpus-installed - class CpuCounter # :nodoc: all - def self.count - new.count_with_default - end - - def count_with_default(default=4) - count || default - rescue StandardError - default - end - - begin - require "etc" - rescue LoadError - else - if Etc.respond_to?(:nprocessors) - def count - return Etc.nprocessors - end - end - end - end -end - -unless Rake::CpuCounter.method_defined?(:count) - Rake::CpuCounter.class_eval <<-'end;', __FILE__, __LINE__+1 - require 'rbconfig' - - def count - if RUBY_PLATFORM == 'java' - count_via_java_runtime - else - case RbConfig::CONFIG['host_os'] - when /linux/ - count_via_cpuinfo - when /darwin|bsd/ - count_via_sysctl - when /mswin|mingw/ - count_via_win32 - else - # Try everything - count_via_win32 || - count_via_sysctl || - count_via_cpuinfo - end - end - end - - def count_via_java_runtime - Java::Java.lang.Runtime.getRuntime.availableProcessors - rescue StandardError - nil - end - - def count_via_win32 - require 'win32ole' - wmi = WIN32OLE.connect("winmgmts://") - cpu = wmi.ExecQuery("select NumberOfCores from Win32_Processor") # TODO count hyper-threaded in this - cpu.to_enum.first.NumberOfCores - rescue StandardError, LoadError - nil - end - - def count_via_cpuinfo - open('/proc/cpuinfo') { |f| f.readlines }.grep(/processor/).size - rescue StandardError - nil - end - - def count_via_sysctl - run 'sysctl', '-n', 'hw.ncpu' - end - - def run(command, *args) - cmd = resolve_command(command) - if cmd - IO.popen [cmd, *args] do |io| - io.read.to_i - end - else - nil - end - end - - def resolve_command(command) - look_for_command("/usr/sbin", command) || - look_for_command("/sbin", command) || - in_path_command(command) - end - - def look_for_command(dir, command) - path = File.join(dir, command) - File.exist?(path) ? path : nil - end - - def in_path_command(command) - IO.popen ['which', command] do |io| - io.eof? ? nil : command - end - end - end; -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/default_loader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/default_loader.rb deleted file mode 100644 index d3b4650d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/default_loader.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true -module Rake - - # Default Rakefile loader used by +import+. - class DefaultLoader - - ## - # Loads a rakefile into the current application from +fn+ - - def load(fn) - Rake.load_rakefile(File.expand_path(fn)) - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/dsl_definition.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/dsl_definition.rb deleted file mode 100644 index c8046402..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/dsl_definition.rb +++ /dev/null @@ -1,195 +0,0 @@ -# frozen_string_literal: true -# Rake DSL functions. -require "rake/file_utils_ext" - -module Rake - - ## - # DSL is a module that provides #task, #desc, #namespace, etc. Use this - # when you'd like to use rake outside the top level scope. - # - # For a Rakefile you run from the command line this module is automatically - # included. - - module DSL - - #-- - # Include the FileUtils file manipulation functions in the top - # level module, but mark them private so that they don't - # unintentionally define methods on other objects. - #++ - - include FileUtilsExt - private(*FileUtils.instance_methods(false)) - private(*FileUtilsExt.instance_methods(false)) - - private - - # :call-seq: - # task(task_name) - # task(task_name: dependencies) - # task(task_name, arguments => dependencies) - # - # Declare a basic task. The +task_name+ is always the first argument. If - # the task name contains a ":" it is defined in that namespace. - # - # The +dependencies+ may be a single task name or an Array of task names. - # The +argument+ (a single name) or +arguments+ (an Array of names) define - # the arguments provided to the task. - # - # The task, argument and dependency names may be either symbols or - # strings. - # - # A task with a single dependency: - # - # task clobber: %w[clean] do - # rm_rf "html" - # end - # - # A task with an argument and a dependency: - # - # task :package, [:version] => :test do |t, args| - # # ... - # end - # - # To invoke this task from the command line: - # - # $ rake package[1.2.3] - # - def task(*args, &block) # :doc: - Rake::Task.define_task(*args, &block) - end - - # Declare a file task. - # - # Example: - # file "config.cfg" => ["config.template"] do - # open("config.cfg", "w") do |outfile| - # open("config.template") do |infile| - # while line = infile.gets - # outfile.puts line - # end - # end - # end - # end - # - def file(*args, &block) # :doc: - Rake::FileTask.define_task(*args, &block) - end - - # Declare a file creation task. - # (Mainly used for the directory command). - def file_create(*args, &block) - Rake::FileCreationTask.define_task(*args, &block) - end - - # Declare a set of files tasks to create the given directories on - # demand. - # - # Example: - # directory "testdata/doc" - # - def directory(*args, &block) # :doc: - result = file_create(*args, &block) - dir, _ = *Rake.application.resolve_args(args) - dir = Rake.from_pathname(dir) - Rake.each_dir_parent(dir) do |d| - file_create d do |t| - mkdir_p t.name unless File.exist?(t.name) - end - end - result - end - - # Declare a task that performs its prerequisites in - # parallel. Multitasks does *not* guarantee that its prerequisites - # will execute in any given order (which is obvious when you think - # about it) - # - # Example: - # multitask deploy: %w[deploy_gem deploy_rdoc] - # - def multitask(*args, &block) # :doc: - Rake::MultiTask.define_task(*args, &block) - end - - # Create a new rake namespace and use it for evaluating the given - # block. Returns a NameSpace object that can be used to lookup - # tasks defined in the namespace. - # - # Example: - # - # ns = namespace "nested" do - # # the "nested:run" task - # task :run - # end - # task_run = ns[:run] # find :run in the given namespace. - # - # Tasks can also be defined in a namespace by using a ":" in the task - # name: - # - # task "nested:test" do - # # ... - # end - # - def namespace(name=nil, &block) # :doc: - name = name.to_s if name.kind_of?(Symbol) - name = name.to_str if name.respond_to?(:to_str) - unless name.kind_of?(String) || name.nil? - raise ArgumentError, "Expected a String or Symbol for a namespace name" - end - Rake.application.in_namespace(name, &block) - end - - # Declare a rule for auto-tasks. - # - # Example: - # rule '.o' => '.c' do |t| - # sh 'cc', '-o', t.name, t.source - # end - # - def rule(*args, &block) # :doc: - Rake::Task.create_rule(*args, &block) - end - - # Describes the next rake task. Duplicate descriptions are discarded. - # Descriptions are shown with rake -T (up to the first - # sentence) and rake -D (the entire description). - # - # Example: - # desc "Run the Unit Tests" - # task test: [:build] - # # ... run tests - # end - # - def desc(description) # :doc: - Rake.application.last_description = description - end - - # Import the partial Rakefiles +fn+. Imported files are loaded - # _after_ the current file is completely loaded. This allows the - # import statement to appear anywhere in the importing file, and yet - # allowing the imported files to depend on objects defined in the - # importing file. - # - # A common use of the import statement is to include files - # containing dependency declarations. - # - # See also the --rakelibdir command line option. - # - # Example: - # import ".depend", "my_rules" - # - def import(*fns) # :doc: - fns.each do |fn| - Rake.application.add_import(fn) - end - end - end - extend FileUtilsExt -end - -# Extend the main object with the DSL commands. This allows top-level -# calls to task, etc. to work from a Rakefile without polluting the -# object inheritance tree. -self.extend Rake::DSL diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/early_time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/early_time.rb deleted file mode 100644 index 80cc6bfa..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/early_time.rb +++ /dev/null @@ -1,22 +0,0 @@ -# frozen_string_literal: true -module Rake - - # EarlyTime is a fake timestamp that occurs _before_ any other time value. - class EarlyTime - include Comparable - include Singleton - - ## - # The EarlyTime always comes before +other+! - - def <=>(other) - -1 - end - - def to_s # :nodoc: - "" - end - end - - EARLY = EarlyTime.instance -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/ext/core.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/ext/core.rb deleted file mode 100644 index 226f2125..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/ext/core.rb +++ /dev/null @@ -1,26 +0,0 @@ -# frozen_string_literal: true -class Module - # Check for an existing method in the current class before extending. If - # the method already exists, then a warning is printed and the extension is - # not added. Otherwise the block is yielded and any definitions in the - # block will take effect. - # - # Usage: - # - # class String - # rake_extension("xyz") do - # def xyz - # ... - # end - # end - # end - # - def rake_extension(method) # :nodoc: - if method_defined?(method) - $stderr.puts "WARNING: Possible conflict with Rake extension: " + - "#{self}##{method} already exists" - else - yield - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/ext/string.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/ext/string.rb deleted file mode 100644 index c70236ae..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/ext/string.rb +++ /dev/null @@ -1,176 +0,0 @@ -# frozen_string_literal: true -require "rake/ext/core" - -class String - - rake_extension("ext") do - # Replace the file extension with +newext+. If there is no extension on - # the string, append the new extension to the end. If the new extension - # is not given, or is the empty string, remove any existing extension. - # - # +ext+ is a user added method for the String class. - # - # This String extension comes from Rake - def ext(newext="") - return self.dup if [".", ".."].include? self - if newext != "" - newext = "." + newext unless newext =~ /^\./ - end - self.chomp(File.extname(self)) << newext - end - end - - rake_extension("pathmap") do - # Explode a path into individual components. Used by +pathmap+. - # - # This String extension comes from Rake - def pathmap_explode - head, tail = File.split(self) - return [self] if head == self - return [tail] if head == "." || tail == "/" - return [head, tail] if head == "/" - return head.pathmap_explode + [tail] - end - protected :pathmap_explode - - # Extract a partial path from the path. Include +n+ directories from the - # front end (left hand side) if +n+ is positive. Include |+n+| - # directories from the back end (right hand side) if +n+ is negative. - # - # This String extension comes from Rake - def pathmap_partial(n) - dirs = File.dirname(self).pathmap_explode - partial_dirs = - if n > 0 - dirs[0...n] - elsif n < 0 - dirs.reverse[0...-n].reverse - else - "." - end - File.join(partial_dirs) - end - protected :pathmap_partial - - # Perform the pathmap replacement operations on the given path. The - # patterns take the form 'pat1,rep1;pat2,rep2...'. - # - # This String extension comes from Rake - def pathmap_replace(patterns, &block) - result = self - patterns.split(";").each do |pair| - pattern, replacement = pair.split(",") - pattern = Regexp.new(pattern) - if replacement == "*" && block_given? - result = result.sub(pattern, &block) - elsif replacement - result = result.sub(pattern, replacement) - else - result = result.sub(pattern, "") - end - end - result - end - protected :pathmap_replace - - # Map the path according to the given specification. The specification - # controls the details of the mapping. The following special patterns are - # recognized: - # - # %p :: The complete path. - # %f :: The base file name of the path, with its file extension, - # but without any directories. - # %n :: The file name of the path without its file extension. - # %d :: The directory list of the path. - # %x :: The file extension of the path. An empty string if there - # is no extension. - # %X :: Everything *but* the file extension. - # %s :: The alternate file separator if defined, otherwise use # - # the standard file separator. - # %% :: A percent sign. - # - # The %d specifier can also have a numeric prefix (e.g. '%2d'). - # If the number is positive, only return (up to) +n+ directories in the - # path, starting from the left hand side. If +n+ is negative, return (up - # to) +n+ directories from the right hand side of the path. - # - # Examples: - # - # 'a/b/c/d/file.txt'.pathmap("%2d") => 'a/b' - # 'a/b/c/d/file.txt'.pathmap("%-2d") => 'c/d' - # - # Also the %d, %p, %f, %n, - # %x, and %X operators can take a pattern/replacement - # argument to perform simple string substitutions on a particular part of - # the path. The pattern and replacement are separated by a comma and are - # enclosed by curly braces. The replacement spec comes after the % - # character but before the operator letter. (e.g. "%{old,new}d"). - # Multiple replacement specs should be separated by semi-colons (e.g. - # "%{old,new;src,bin}d"). - # - # Regular expressions may be used for the pattern, and back refs may be - # used in the replacement text. Curly braces, commas and semi-colons are - # excluded from both the pattern and replacement text (let's keep parsing - # reasonable). - # - # For example: - # - # "src/org/onestepback/proj/A.java".pathmap("%{^src,class}X.class") - # - # returns: - # - # "class/org/onestepback/proj/A.class" - # - # If the replacement text is '*', then a block may be provided to perform - # some arbitrary calculation for the replacement. - # - # For example: - # - # "/path/to/file.TXT".pathmap("%X%{.*,*}x") { |ext| - # ext.downcase - # } - # - # Returns: - # - # "/path/to/file.txt" - # - # This String extension comes from Rake - def pathmap(spec=nil, &block) - return self if spec.nil? - result = "".dup - spec.scan(/%\{[^}]*\}-?\d*[sdpfnxX%]|%-?\d+d|%.|[^%]+/) do |frag| - case frag - when "%f" - result << File.basename(self) - when "%n" - result << File.basename(self).ext - when "%d" - result << File.dirname(self) - when "%x" - result << File.extname(self) - when "%X" - result << self.ext - when "%p" - result << self - when "%s" - result << (File::ALT_SEPARATOR || File::SEPARATOR) - when "%-" - # do nothing - when "%%" - result << "%" - when /%(-?\d+)d/ - result << pathmap_partial($1.to_i) - when /^%\{([^}]*)\}(\d*[dpfnxX])/ - patterns, operator = $1, $2 - result << pathmap("%" + operator).pathmap_replace(patterns, &block) - when /^%/ - fail ArgumentError, "Unknown pathmap specifier #{frag} in '#{spec}'" - else - result << frag - end - end - result - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_creation_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_creation_task.rb deleted file mode 100644 index 5a4c6849..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_creation_task.rb +++ /dev/null @@ -1,25 +0,0 @@ -# frozen_string_literal: true -require "rake/file_task" -require "rake/early_time" - -module Rake - - # A FileCreationTask is a file task that when used as a dependency will be - # needed if and only if the file has not been created. Once created, it is - # not re-triggered if any of its dependencies are newer, nor does trigger - # any rebuilds of tasks that depend on it whenever it is updated. - # - class FileCreationTask < FileTask - # Is this file task needed? Yes if it doesn't exist. - def needed? - !File.exist?(name) - end - - # Time stamp for file creation task. This time stamp is earlier - # than any other time stamp. - def timestamp - Rake::EARLY - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_list.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_list.rb deleted file mode 100644 index 22c339f2..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_list.rb +++ /dev/null @@ -1,435 +0,0 @@ -# frozen_string_literal: true -require "rake/cloneable" -require "rake/file_utils_ext" -require "rake/ext/string" - -module Rake - - ## - # A FileList is essentially an array with a few helper methods defined to - # make file manipulation a bit easier. - # - # FileLists are lazy. When given a list of glob patterns for possible files - # to be included in the file list, instead of searching the file structures - # to find the files, a FileList holds the pattern for latter use. - # - # This allows us to define a number of FileList to match any number of - # files, but only search out the actual files when then FileList itself is - # actually used. The key is that the first time an element of the - # FileList/Array is requested, the pending patterns are resolved into a real - # list of file names. - # - class FileList - - include Cloneable - - # == Method Delegation - # - # The lazy evaluation magic of FileLists happens by implementing all the - # array specific methods to call +resolve+ before delegating the heavy - # lifting to an embedded array object (@items). - # - # In addition, there are two kinds of delegation calls. The regular kind - # delegates to the @items array and returns the result directly. Well, - # almost directly. It checks if the returned value is the @items object - # itself, and if so will return the FileList object instead. - # - # The second kind of delegation call is used in methods that normally - # return a new Array object. We want to capture the return value of these - # methods and wrap them in a new FileList object. We enumerate these - # methods in the +SPECIAL_RETURN+ list below. - - # List of array methods (that are not in +Object+) that need to be - # delegated. - ARRAY_METHODS = (Array.instance_methods - Object.instance_methods).map(&:to_s) - - # List of additional methods that must be delegated. - MUST_DEFINE = %w[inspect <=>] - - # List of methods that should not be delegated here (we define special - # versions of them explicitly below). - MUST_NOT_DEFINE = %w[to_a to_ary partition * <<] - - # List of delegated methods that return new array values which need - # wrapping. - SPECIAL_RETURN = %w[ - map collect sort sort_by select find_all reject grep - compact flatten uniq values_at - + - & | - ] - - DELEGATING_METHODS = (ARRAY_METHODS + MUST_DEFINE - MUST_NOT_DEFINE).map(&:to_s).sort.uniq - - # Now do the delegation. - DELEGATING_METHODS.each do |sym| - if SPECIAL_RETURN.include?(sym) - ln = __LINE__ + 1 - class_eval %{ - def #{sym}(*args, &block) - resolve - result = @items.send(:#{sym}, *args, &block) - self.class.new.import(result) - end - }, __FILE__, ln - else - ln = __LINE__ + 1 - class_eval %{ - def #{sym}(*args, &block) - resolve - result = @items.send(:#{sym}, *args, &block) - result.object_id == @items.object_id ? self : result - end - }, __FILE__, ln - end - end - - GLOB_PATTERN = %r{[*?\[\{]} - - # Create a file list from the globbable patterns given. If you wish to - # perform multiple includes or excludes at object build time, use the - # "yield self" pattern. - # - # Example: - # file_list = FileList.new('lib/**/*.rb', 'test/test*.rb') - # - # pkg_files = FileList.new('lib/**/*') do |fl| - # fl.exclude(/\bCVS\b/) - # end - # - def initialize(*patterns) - @pending_add = [] - @pending = false - @exclude_patterns = DEFAULT_IGNORE_PATTERNS.dup - @exclude_procs = DEFAULT_IGNORE_PROCS.dup - @items = [] - patterns.each { |pattern| include(pattern) } - yield self if block_given? - end - - # Add file names defined by glob patterns to the file list. If an array - # is given, add each element of the array. - # - # Example: - # file_list.include("*.java", "*.cfg") - # file_list.include %w( math.c lib.h *.o ) - # - def include(*filenames) - # TODO: check for pending - filenames.each do |fn| - if fn.respond_to? :to_ary - include(*fn.to_ary) - else - @pending_add << Rake.from_pathname(fn) - end - end - @pending = true - self - end - alias :add :include - - # Register a list of file name patterns that should be excluded from the - # list. Patterns may be regular expressions, glob patterns or regular - # strings. In addition, a block given to exclude will remove entries that - # return true when given to the block. - # - # Note that glob patterns are expanded against the file system. If a file - # is explicitly added to a file list, but does not exist in the file - # system, then an glob pattern in the exclude list will not exclude the - # file. - # - # Examples: - # FileList['a.c', 'b.c'].exclude("a.c") => ['b.c'] - # FileList['a.c', 'b.c'].exclude(/^a/) => ['b.c'] - # - # If "a.c" is a file, then ... - # FileList['a.c', 'b.c'].exclude("a.*") => ['b.c'] - # - # If "a.c" is not a file, then ... - # FileList['a.c', 'b.c'].exclude("a.*") => ['a.c', 'b.c'] - # - def exclude(*patterns, &block) - patterns.each do |pat| - if pat.respond_to? :to_ary - exclude(*pat.to_ary) - else - @exclude_patterns << Rake.from_pathname(pat) - end - end - @exclude_procs << block if block_given? - resolve_exclude unless @pending - self - end - - # Clear all the exclude patterns so that we exclude nothing. - def clear_exclude - @exclude_patterns = [] - @exclude_procs = [] - self - end - - # A FileList is equal through array equality. - def ==(array) - to_ary == array - end - - # Return the internal array object. - def to_a - resolve - @items - end - - # Return the internal array object. - def to_ary - to_a - end - - # Lie about our class. - def is_a?(klass) - klass == Array || super(klass) - end - alias kind_of? is_a? - - # Redefine * to return either a string or a new file list. - def *(other) - result = @items * other - case result - when Array - self.class.new.import(result) - else - result - end - end - - def <<(obj) - resolve - @items << Rake.from_pathname(obj) - self - end - - # Resolve all the pending adds now. - def resolve - if @pending - @pending = false - @pending_add.each do |fn| resolve_add(fn) end - @pending_add = [] - resolve_exclude - end - self - end - - def resolve_add(fn) # :nodoc: - case fn - when GLOB_PATTERN - add_matching(fn) - else - self << fn - end - end - private :resolve_add - - def resolve_exclude # :nodoc: - reject! { |fn| excluded_from_list?(fn) } - self - end - private :resolve_exclude - - # Return a new FileList with the results of running +sub+ against each - # element of the original list. - # - # Example: - # FileList['a.c', 'b.c'].sub(/\.c$/, '.o') => ['a.o', 'b.o'] - # - def sub(pat, rep) - inject(self.class.new) { |res, fn| res << fn.sub(pat, rep) } - end - - # Return a new FileList with the results of running +gsub+ against each - # element of the original list. - # - # Example: - # FileList['lib/test/file', 'x/y'].gsub(/\//, "\\") - # => ['lib\\test\\file', 'x\\y'] - # - def gsub(pat, rep) - inject(self.class.new) { |res, fn| res << fn.gsub(pat, rep) } - end - - # Same as +sub+ except that the original file list is modified. - def sub!(pat, rep) - each_with_index { |fn, i| self[i] = fn.sub(pat, rep) } - self - end - - # Same as +gsub+ except that the original file list is modified. - def gsub!(pat, rep) - each_with_index { |fn, i| self[i] = fn.gsub(pat, rep) } - self - end - - # Apply the pathmap spec to each of the included file names, returning a - # new file list with the modified paths. (See String#pathmap for - # details.) - def pathmap(spec=nil, &block) - collect { |fn| fn.pathmap(spec, &block) } - end - - # Return a new FileList with String#ext method applied to - # each member of the array. - # - # This method is a shortcut for: - # - # array.collect { |item| item.ext(newext) } - # - # +ext+ is a user added method for the Array class. - def ext(newext="") - collect { |fn| fn.ext(newext) } - end - - # Grep each of the files in the filelist using the given pattern. If a - # block is given, call the block on each matching line, passing the file - # name, line number, and the matching line of text. If no block is given, - # a standard emacs style file:linenumber:line message will be printed to - # standard out. Returns the number of matched items. - def egrep(pattern, *options) - matched = 0 - each do |fn| - begin - File.open(fn, "r", *options) do |inf| - count = 0 - inf.each do |line| - count += 1 - if pattern.match(line) - matched += 1 - if block_given? - yield fn, count, line - else - puts "#{fn}:#{count}:#{line}" - end - end - end - end - rescue StandardError => ex - $stderr.puts "Error while processing '#{fn}': #{ex}" - end - end - matched - end - - # Return a new file list that only contains file names from the current - # file list that exist on the file system. - def existing - select { |fn| File.exist?(fn) }.uniq - end - - # Modify the current file list so that it contains only file name that - # exist on the file system. - def existing! - resolve - @items = @items.select { |fn| File.exist?(fn) }.uniq - self - end - - # FileList version of partition. Needed because the nested arrays should - # be FileLists in this version. - def partition(&block) # :nodoc: - resolve - result = @items.partition(&block) - [ - self.class.new.import(result[0]), - self.class.new.import(result[1]), - ] - end - - # Convert a FileList to a string by joining all elements with a space. - def to_s - resolve - self.join(" ") - end - - # Add matching glob patterns. - def add_matching(pattern) - self.class.glob(pattern).each do |fn| - self << fn unless excluded_from_list?(fn) - end - end - private :add_matching - - # Should the given file name be excluded from the list? - # - # NOTE: This method was formerly named "exclude?", but Rails - # introduced an exclude? method as an array method and setup a - # conflict with file list. We renamed the method to avoid - # confusion. If you were using "FileList#exclude?" in your user - # code, you will need to update. - def excluded_from_list?(fn) - return true if @exclude_patterns.any? do |pat| - case pat - when Regexp - fn =~ pat - when GLOB_PATTERN - flags = File::FNM_PATHNAME - # Ruby <= 1.9.3 does not support File::FNM_EXTGLOB - flags |= File::FNM_EXTGLOB if defined? File::FNM_EXTGLOB - File.fnmatch?(pat, fn, flags) - else - fn == pat - end - end - @exclude_procs.any? { |p| p.call(fn) } - end - - DEFAULT_IGNORE_PATTERNS = [ - /(^|[\/\\])CVS([\/\\]|$)/, - /(^|[\/\\])\.svn([\/\\]|$)/, - /\.bak$/, - /~$/ - ] - DEFAULT_IGNORE_PROCS = [ - proc { |fn| fn =~ /(^|[\/\\])core$/ && !File.directory?(fn) } - ] - - def import(array) # :nodoc: - @items = array - self - end - - class << self - # Create a new file list including the files listed. Similar to: - # - # FileList.new(*args) - def [](*args) - new(*args) - end - - # Get a sorted list of files matching the pattern. This method - # should be preferred to Dir[pattern] and Dir.glob(pattern) because - # the files returned are guaranteed to be sorted. - def glob(pattern, *args) - Dir.glob(pattern, *args).sort - end - end - end -end - -module Rake - class << self - - # Yield each file or directory component. - def each_dir_parent(dir) # :nodoc: - old_length = nil - while dir != "." && dir.length != old_length - yield(dir) - old_length = dir.length - dir = File.dirname(dir) - end - end - - # Convert Pathname and Pathname-like objects to strings; - # leave everything else alone - def from_pathname(path) # :nodoc: - path = path.to_path if path.respond_to?(:to_path) - path = path.to_str if path.respond_to?(:to_str) - path - end - end -end # module Rake diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_task.rb deleted file mode 100644 index db790e39..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_task.rb +++ /dev/null @@ -1,54 +0,0 @@ -# frozen_string_literal: true -require "rake/task" -require "rake/early_time" - -module Rake - - # A FileTask is a task that includes time based dependencies. If any of a - # FileTask's prerequisites have a timestamp that is later than the file - # represented by this task, then the file must be rebuilt (using the - # supplied actions). - # - class FileTask < Task - - # Is this file task needed? Yes if it doesn't exist, or if its time stamp - # is out of date. - def needed? - !File.exist?(name) || out_of_date?(timestamp) || @application.options.build_all - end - - # Time stamp for file task. - def timestamp - if File.exist?(name) - File.mtime(name.to_s) - else - Rake::LATE - end - end - - private - - # Are there any prerequisites with a later time than the given time stamp? - def out_of_date?(stamp) - all_prerequisite_tasks.any? { |prereq| - prereq_task = application[prereq, @scope] - if prereq_task.instance_of?(Rake::FileTask) - prereq_task.timestamp > stamp || @application.options.build_all - else - prereq_task.timestamp > stamp - end - } - end - - # ---------------------------------------------------------------- - # Task class methods. - # - class << self - # Apply the scope to the task name according to the rules for this kind - # of task. File based tasks ignore the scope when creating the name. - def scope_name(scope, task_name) - Rake.from_pathname(task_name) - end - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_utils.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_utils.rb deleted file mode 100644 index dc434c8d..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_utils.rb +++ /dev/null @@ -1,137 +0,0 @@ -# frozen_string_literal: true -require "rbconfig" -require "fileutils" - -#-- -# This a FileUtils extension that defines several additional commands to be -# added to the FileUtils utility functions. -module FileUtils - # Path to the currently running Ruby program - RUBY = ENV["RUBY"] || File.join( - RbConfig::CONFIG["bindir"], - RbConfig::CONFIG["ruby_install_name"] + RbConfig::CONFIG["EXEEXT"]). - sub(/.*\s.*/m, '"\&"') - - # Run the system command +cmd+. If multiple arguments are given the command - # is run directly (without the shell, same semantics as Kernel::exec and - # Kernel::system). - # - # It is recommended you use the multiple argument form over interpolating - # user input for both usability and security reasons. With the multiple - # argument form you can easily process files with spaces or other shell - # reserved characters in them. With the multiple argument form your rake - # tasks are not vulnerable to users providing an argument like - # ; rm # -rf /. - # - # If a block is given, upon command completion the block is called with an - # OK flag (true on a zero exit status) and a Process::Status object. - # Without a block a RuntimeError is raised when the command exits non-zero. - # - # Examples: - # - # sh 'ls -ltr' - # - # sh 'ls', 'file with spaces' - # - # # check exit status after command runs - # sh %{grep pattern file} do |ok, res| - # if !ok - # puts "pattern not found (status = #{res.exitstatus})" - # end - # end - # - def sh(*cmd, &block) - options = (Hash === cmd.last) ? cmd.pop : {} - shell_runner = block_given? ? block : create_shell_runner(cmd) - - set_verbose_option(options) - verbose = options.delete :verbose - noop = options.delete(:noop) || Rake::FileUtilsExt.nowrite_flag - - Rake.rake_output_message sh_show_command cmd if verbose - - unless noop - res = (Hash === cmd.last) ? system(*cmd) : system(*cmd, options) - status = $? - status = Rake::PseudoStatus.new(1) if !res && status.nil? - shell_runner.call(res, status) - end - end - - def create_shell_runner(cmd) # :nodoc: - show_command = sh_show_command cmd - show_command = show_command[0, 42] + "..." unless $trace - - lambda do |ok, status| - ok or - fail "Command failed with status (#{status.exitstatus}): " + - "[#{show_command}]" - end - end - private :create_shell_runner - - def sh_show_command(cmd) # :nodoc: - cmd = cmd.dup - - if Hash === cmd.first - env = cmd.first - env = env.map { |name, value| "#{name}=#{value}" }.join " " - cmd[0] = env - end - - cmd.join " " - end - private :sh_show_command - - def set_verbose_option(options) # :nodoc: - unless options.key? :verbose - options[:verbose] = - (Rake::FileUtilsExt.verbose_flag == Rake::FileUtilsExt::DEFAULT) || - Rake::FileUtilsExt.verbose_flag - end - end - private :set_verbose_option - - # Run a Ruby interpreter with the given arguments. - # - # Example: - # ruby %{-pe '$_.upcase!' 1 - sh(*([RUBY] + args + [options]), &block) - else - sh("#{RUBY} #{args.first}", options, &block) - end - end - - LN_SUPPORTED = [true] - - # Attempt to do a normal file link, but fall back to a copy if the link - # fails. - def safe_ln(*args) - if !LN_SUPPORTED[0] - cp(*args) - else - begin - ln(*args) - rescue StandardError, NotImplementedError - LN_SUPPORTED[0] = false - cp(*args) - end - end - end - - # Split a file path into individual directory names. - # - # Example: - # split_all("a/b/c") => ['a', 'b', 'c'] - # - def split_all(path) - head, tail = File.split(path) - return [tail] if head == "." || tail == "/" - return [head, tail] if head == "/" - return split_all(head) + [tail] - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_utils_ext.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_utils_ext.rb deleted file mode 100644 index bf558b74..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/file_utils_ext.rb +++ /dev/null @@ -1,145 +0,0 @@ -# frozen_string_literal: true -require "rake/file_utils" - -module Rake - # - # FileUtilsExt provides a custom version of the FileUtils methods - # that respond to the verbose and nowrite - # commands. - # - module FileUtilsExt - include FileUtils - - class << self - attr_accessor :verbose_flag, :nowrite_flag - end - - DEFAULT = Object.new - - FileUtilsExt.verbose_flag = DEFAULT - FileUtilsExt.nowrite_flag = false - - FileUtils.commands.each do |name| - opts = FileUtils.options_of name - default_options = [] - if opts.include?("verbose") - default_options << ":verbose => FileUtilsExt.verbose_flag" - end - if opts.include?("noop") - default_options << ":noop => FileUtilsExt.nowrite_flag" - end - - next if default_options.empty? - module_eval(<<-EOS, __FILE__, __LINE__ + 1) - def #{name}( *args, &block ) - super( - *rake_merge_option(args, - #{default_options.join(', ')} - ), &block) - end - EOS - end - - # Get/set the verbose flag controlling output from the FileUtils - # utilities. If verbose is true, then the utility method is - # echoed to standard output. - # - # Examples: - # verbose # return the current value of the - # # verbose flag - # verbose(v) # set the verbose flag to _v_. - # verbose(v) { code } # Execute code with the verbose flag set - # # temporarily to _v_. Return to the - # # original value when code is done. - def verbose(value=nil) - oldvalue = FileUtilsExt.verbose_flag - FileUtilsExt.verbose_flag = value unless value.nil? - if block_given? - begin - yield - ensure - FileUtilsExt.verbose_flag = oldvalue - end - end - FileUtilsExt.verbose_flag - end - - # Get/set the nowrite flag controlling output from the FileUtils - # utilities. If verbose is true, then the utility method is - # echoed to standard output. - # - # Examples: - # nowrite # return the current value of the - # # nowrite flag - # nowrite(v) # set the nowrite flag to _v_. - # nowrite(v) { code } # Execute code with the nowrite flag set - # # temporarily to _v_. Return to the - # # original value when code is done. - def nowrite(value=nil) - oldvalue = FileUtilsExt.nowrite_flag - FileUtilsExt.nowrite_flag = value unless value.nil? - if block_given? - begin - yield - ensure - FileUtilsExt.nowrite_flag = oldvalue - end - end - oldvalue - end - - # Use this function to prevent potentially destructive ruby code - # from running when the :nowrite flag is set. - # - # Example: - # - # when_writing("Building Project") do - # project.build - # end - # - # The following code will build the project under normal - # conditions. If the nowrite(true) flag is set, then the example - # will print: - # - # DRYRUN: Building Project - # - # instead of actually building the project. - # - def when_writing(msg=nil) - if FileUtilsExt.nowrite_flag - $stderr.puts "DRYRUN: #{msg}" if msg - else - yield - end - end - - # Merge the given options with the default values. - def rake_merge_option(args, defaults) - if Hash === args.last - defaults.update(args.last) - args.pop - end - args.push defaults - args - end - - # Send the message to the default rake output (which is $stderr). - def rake_output_message(message) - $stderr.puts(message) - end - - # Check that the options do not contain options not listed in - # +optdecl+. An ArgumentError exception is thrown if non-declared - # options are found. - def rake_check_options(options, *optdecl) - h = options.dup - optdecl.each do |name| - h.delete name - end - raise ArgumentError, "no such option: #{h.keys.join(' ')}" unless - h.empty? - end - - extend self - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/invocation_chain.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/invocation_chain.rb deleted file mode 100644 index 44a99549..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/invocation_chain.rb +++ /dev/null @@ -1,57 +0,0 @@ -# frozen_string_literal: true -module Rake - - # InvocationChain tracks the chain of task invocations to detect - # circular dependencies. - class InvocationChain < LinkedList - - # Is the invocation already in the chain? - def member?(invocation) - head == invocation || tail.member?(invocation) - end - - # Append an invocation to the chain of invocations. It is an error - # if the invocation already listed. - def append(invocation) - if member?(invocation) - fail RuntimeError, "Circular dependency detected: #{to_s} => #{invocation}" - end - conj(invocation) - end - - # Convert to string, ie: TOP => invocation => invocation - def to_s - "#{prefix}#{head}" - end - - # Class level append. - def self.append(invocation, chain) - chain.append(invocation) - end - - private - - def prefix - "#{tail} => " - end - - # Null object for an empty chain. - class EmptyInvocationChain < LinkedList::EmptyLinkedList - @parent = InvocationChain - - def member?(obj) - false - end - - def append(invocation) - conj(invocation) - end - - def to_s - "TOP" - end - end - - EMPTY = EmptyInvocationChain.new - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb deleted file mode 100644 index b0d307a4..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true -module Rake - module InvocationExceptionMixin - # Return the invocation chain (list of Rake tasks) that were in - # effect when this exception was detected by rake. May be null if - # no tasks were active. - def chain - @rake_invocation_chain ||= nil - end - - # Set the invocation chain in effect when this exception was - # detected. - def chain=(value) - @rake_invocation_chain = value - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/late_time.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/late_time.rb deleted file mode 100644 index 8fe02494..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/late_time.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true -module Rake - # LateTime is a fake timestamp that occurs _after_ any other time value. - class LateTime - include Comparable - include Singleton - - def <=>(other) - 1 - end - - def to_s - "" - end - end - - LATE = LateTime.instance -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/linked_list.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/linked_list.rb deleted file mode 100644 index 11fa46f0..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/linked_list.rb +++ /dev/null @@ -1,112 +0,0 @@ -# frozen_string_literal: true -module Rake - - # Polylithic linked list structure used to implement several data - # structures in Rake. - class LinkedList - include Enumerable - attr_reader :head, :tail - - # Polymorphically add a new element to the head of a list. The - # type of head node will be the same list type as the tail. - def conj(item) - self.class.cons(item, self) - end - - # Is the list empty? - # .make guards against a list being empty making any instantiated LinkedList - # object not empty by default - # You should consider overriding this method if you implement your own .make method - def empty? - false - end - - # Lists are structurally equivalent. - def ==(other) - current = self - while !current.empty? && !other.empty? - return false if current.head != other.head - current = current.tail - other = other.tail - end - current.empty? && other.empty? - end - - # Convert to string: LL(item, item...) - def to_s - items = map(&:to_s).join(", ") - "LL(#{items})" - end - - # Same as +to_s+, but with inspected items. - def inspect - items = map(&:inspect).join(", ") - "LL(#{items})" - end - - # For each item in the list. - def each - current = self - while !current.empty? - yield(current.head) - current = current.tail - end - self - end - - # Make a list out of the given arguments. This method is - # polymorphic - def self.make(*args) - # return an EmptyLinkedList if there are no arguments - return empty if !args || args.empty? - - # build a LinkedList by starting at the tail and iterating - # through each argument - # inject takes an EmptyLinkedList to start - args.reverse.inject(empty) do |list, item| - list = cons(item, list) - list # return the newly created list for each item in the block - end - end - - # Cons a new head onto the tail list. - def self.cons(head, tail) - new(head, tail) - end - - # The standard empty list class for the given LinkedList class. - def self.empty - self::EMPTY - end - - protected - - def initialize(head, tail=EMPTY) - @head = head - @tail = tail - end - - # Represent an empty list, using the Null Object Pattern. - # - # When inheriting from the LinkedList class, you should implement - # a type specific Empty class as well. Make sure you set the class - # instance variable @parent to the associated list class (this - # allows conj, cons and make to work polymorphically). - class EmptyLinkedList < LinkedList - @parent = LinkedList - - def initialize - end - - def empty? - true - end - - def self.cons(head, tail) - @parent.cons(head, tail) - end - end - - EMPTY = EmptyLinkedList.new - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/loaders/makefile.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/loaders/makefile.rb deleted file mode 100644 index 46f4beaa..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/loaders/makefile.rb +++ /dev/null @@ -1,54 +0,0 @@ -# frozen_string_literal: true -module Rake - - # Makefile loader to be used with the import file loader. Use this to - # import dependencies from make dependency tools: - # - # require 'rake/loaders/makefile' - # - # file ".depends.mf" => [SRC_LIST] do |t| - # sh "makedepend -f- -- #{CFLAGS} -- #{t.prerequisites} > #{t.name}" - # end - # - # import ".depends.mf" - # - # See {Importing Dependencies}[link:doc/rakefile_rdoc.html#label-Importing+Dependencies] - # for further details. - - class MakefileLoader - include Rake::DSL - - SPACE_MARK = "\0" # :nodoc: - - # Load the makefile dependencies in +fn+. - def load(fn) # :nodoc: - lines = File.read fn - lines.gsub!(/\\ /, SPACE_MARK) - lines.gsub!(/#[^\n]*\n/m, "") - lines.gsub!(/\\\n/, " ") - lines.each_line do |line| - process_line(line) - end - end - - private - - # Process one logical line of makefile data. - def process_line(line) # :nodoc: - file_tasks, args = line.split(":", 2) - return if args.nil? - dependents = args.split.map { |d| respace(d) } - file_tasks.scan(/\S+/) do |file_task| - file_task = respace(file_task) - file file_task => dependents - end - end - - def respace(str) # :nodoc: - str.tr SPACE_MARK, " " - end - end - - # Install the handler - Rake.application.add_loader("mf", MakefileLoader.new) -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/multi_task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/multi_task.rb deleted file mode 100644 index 3ae363cb..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/multi_task.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true -module Rake - - # Same as a regular task, but the immediate prerequisites are done in - # parallel using Ruby threads. - # - class MultiTask < Task - private - - def invoke_prerequisites(task_args, invocation_chain) # :nodoc: - invoke_prerequisites_concurrently(task_args, invocation_chain) - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/name_space.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/name_space.rb deleted file mode 100644 index 32f8139f..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/name_space.rb +++ /dev/null @@ -1,38 +0,0 @@ -# frozen_string_literal: true -## -# The NameSpace class will lookup task names in the scope defined by a -# +namespace+ command. - -class Rake::NameSpace - - ## - # Create a namespace lookup object using the given task manager - # and the list of scopes. - - def initialize(task_manager, scope_list) - @task_manager = task_manager - @scope = scope_list.dup - end - - ## - # Lookup a task named +name+ in the namespace. - - def [](name) - @task_manager.lookup(name, @scope) - end - - ## - # The scope of the namespace (a LinkedList) - - def scope - @scope.dup - end - - ## - # Return the list of tasks defined in this and nested namespaces. - - def tasks - @task_manager.tasks_in_scope(@scope) - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/packagetask.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/packagetask.rb deleted file mode 100644 index 72fef4d5..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/packagetask.rb +++ /dev/null @@ -1,207 +0,0 @@ -# frozen_string_literal: true -# Define a package task library to aid in the definition of -# redistributable package files. - -require "rake" -require "rake/tasklib" - -module Rake - - # Create a packaging task that will package the project into - # distributable files (e.g zip archive or tar files). - # - # The PackageTask will create the following targets: - # - # +:package+ :: - # Create all the requested package files. - # - # +:clobber_package+ :: - # Delete all the package files. This target is automatically - # added to the main clobber target. - # - # +:repackage+ :: - # Rebuild the package files from scratch, even if they are not out - # of date. - # - # "package_dir/name-version.tgz" :: - # Create a gzipped tar package (if need_tar is true). - # - # "package_dir/name-version.tar.gz" :: - # Create a gzipped tar package (if need_tar_gz is true). - # - # "package_dir/name-version.tar.bz2" :: - # Create a bzip2'd tar package (if need_tar_bz2 is true). - # - # "package_dir/name-version.zip" :: - # Create a zip package archive (if need_zip is true). - # - # Example: - # - # Rake::PackageTask.new("rake", "1.2.3") do |p| - # p.need_tar = true - # p.package_files.include("lib/**/*.rb") - # end - # - class PackageTask < TaskLib - # Name of the package (from the GEM Spec). - attr_accessor :name - - # Version of the package (e.g. '1.3.2'). - attr_accessor :version - - # Directory used to store the package files (default is 'pkg'). - attr_accessor :package_dir - - # True if a gzipped tar file (tgz) should be produced (default is - # false). - attr_accessor :need_tar - - # True if a gzipped tar file (tar.gz) should be produced (default - # is false). - attr_accessor :need_tar_gz - - # True if a bzip2'd tar file (tar.bz2) should be produced (default - # is false). - attr_accessor :need_tar_bz2 - - # True if a xz'd tar file (tar.xz) should be produced (default is false) - attr_accessor :need_tar_xz - - # True if a zip file should be produced (default is false) - attr_accessor :need_zip - - # List of files to be included in the package. - attr_accessor :package_files - - # Tar command for gzipped or bzip2ed archives. The default is 'tar'. - attr_accessor :tar_command - - # Zip command for zipped archives. The default is 'zip'. - attr_accessor :zip_command - - # Create a Package Task with the given name and version. Use +:noversion+ - # as the version to build a package without a version or to provide a - # fully-versioned package name. - - def initialize(name=nil, version=nil) - init(name, version) - yield self if block_given? - define unless name.nil? - end - - # Initialization that bypasses the "yield self" and "define" step. - def init(name, version) - @name = name - @version = version - @package_files = Rake::FileList.new - @package_dir = "pkg" - @need_tar = false - @need_tar_gz = false - @need_tar_bz2 = false - @need_tar_xz = false - @need_zip = false - @tar_command = "tar" - @zip_command = "zip" - end - - # Create the tasks defined by this task library. - def define - fail "Version required (or :noversion)" if @version.nil? - @version = nil if :noversion == @version - - desc "Build all the packages" - task :package - - desc "Force a rebuild of the package files" - task repackage: [:clobber_package, :package] - - desc "Remove package products" - task :clobber_package do - rm_r package_dir rescue nil - end - - task clobber: [:clobber_package] - - [ - [need_tar, tgz_file, "z"], - [need_tar_gz, tar_gz_file, "z"], - [need_tar_bz2, tar_bz2_file, "j"], - [need_tar_xz, tar_xz_file, "J"] - ].each do |need, file, flag| - if need - task package: ["#{package_dir}/#{file}"] - file "#{package_dir}/#{file}" => - [package_dir_path] + package_files do - chdir(package_dir) { sh @tar_command, "#{flag}cvf", file, package_name } - end - end - end - - if need_zip - task package: ["#{package_dir}/#{zip_file}"] - file "#{package_dir}/#{zip_file}" => - [package_dir_path] + package_files do - chdir(package_dir) { sh @zip_command, "-r", zip_file, package_name } - end - end - - directory package_dir_path => @package_files do - @package_files.each do |fn| - f = File.join(package_dir_path, fn) - fdir = File.dirname(f) - mkdir_p(fdir) unless File.exist?(fdir) - if File.directory?(fn) - mkdir_p(f) - else - rm_f f - safe_ln(fn, f) - end - end - end - self - end - - # The name of this package - - def package_name - @version ? "#{@name}-#{@version}" : @name - end - - # The directory this package will be built in - - def package_dir_path - "#{package_dir}/#{package_name}" - end - - # The package name with .tgz added - - def tgz_file - "#{package_name}.tgz" - end - - # The package name with .tar.gz added - - def tar_gz_file - "#{package_name}.tar.gz" - end - - # The package name with .tar.bz2 added - - def tar_bz2_file - "#{package_name}.tar.bz2" - end - - # The package name with .tar.xz added - - def tar_xz_file - "#{package_name}.tar.xz" - end - - # The package name with .zip added - - def zip_file - "#{package_name}.zip" - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/phony.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/phony.rb deleted file mode 100644 index 8caa5de1..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/phony.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true -# Defines a :phony task that you can use as a dependency. This allows -# file-based tasks to use non-file-based tasks as prerequisites -# without forcing them to rebuild. -# -# See FileTask#out_of_date? and Task#timestamp for more info. - -require "rake" - -task :phony - -Rake::Task[:phony].tap do |task| - def task.timestamp # :nodoc: - Time.at 0 - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/private_reader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/private_reader.rb deleted file mode 100644 index 2815ce64..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/private_reader.rb +++ /dev/null @@ -1,21 +0,0 @@ -# frozen_string_literal: true -module Rake - - # Include PrivateReader to use +private_reader+. - module PrivateReader # :nodoc: all - - def self.included(base) - base.extend(ClassMethods) - end - - module ClassMethods - - # Declare a list of private accessors - def private_reader(*names) - attr_reader(*names) - private(*names) - end - end - - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/promise.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/promise.rb deleted file mode 100644 index f45af4f3..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/promise.rb +++ /dev/null @@ -1,100 +0,0 @@ -# frozen_string_literal: true -module Rake - - # A Promise object represents a promise to do work (a chore) in the - # future. The promise is created with a block and a list of - # arguments for the block. Calling value will return the value of - # the promised chore. - # - # Used by ThreadPool. - # - class Promise # :nodoc: all - NOT_SET = Object.new.freeze # :nodoc: - - attr_accessor :recorder - - # Create a promise to do the chore specified by the block. - def initialize(args, &block) - @mutex = Mutex.new - @result = NOT_SET - @error = NOT_SET - @args = args - @block = block - end - - # Return the value of this promise. - # - # If the promised chore is not yet complete, then do the work - # synchronously. We will wait. - def value - unless complete? - stat :sleeping_on, item_id: object_id - @mutex.synchronize do - stat :has_lock_on, item_id: object_id - chore - stat :releasing_lock_on, item_id: object_id - end - end - error? ? raise(@error) : @result - end - - # If no one else is working this promise, go ahead and do the chore. - def work - stat :attempting_lock_on, item_id: object_id - if @mutex.try_lock - stat :has_lock_on, item_id: object_id - chore - stat :releasing_lock_on, item_id: object_id - @mutex.unlock - else - stat :bailed_on, item_id: object_id - end - end - - private - - # Perform the chore promised - def chore - if complete? - stat :found_completed, item_id: object_id - return - end - stat :will_execute, item_id: object_id - begin - @result = @block.call(*@args) - rescue Exception => e - @error = e - end - stat :did_execute, item_id: object_id - discard - end - - # Do we have a result for the promise - def result? - !@result.equal?(NOT_SET) - end - - # Did the promise throw an error - def error? - !@error.equal?(NOT_SET) - end - - # Are we done with the promise - def complete? - result? || error? - end - - # free up these items for the GC - def discard - @args = nil - @block = nil - end - - # Record execution statistics if there is a recorder - def stat(*args) - @recorder.call(*args) if @recorder - end - - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/pseudo_status.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/pseudo_status.rb deleted file mode 100644 index 8b3c9894..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/pseudo_status.rb +++ /dev/null @@ -1,30 +0,0 @@ -# frozen_string_literal: true -module Rake - - ## - # Exit status class for times the system just gives us a nil. - class PseudoStatus # :nodoc: all - attr_reader :exitstatus - - def initialize(code=0) - @exitstatus = code - end - - def to_i - @exitstatus << 8 - end - - def >>(n) - to_i >> n - end - - def stopped? - false - end - - def exited? - true - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_module.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_module.rb deleted file mode 100644 index 03c29562..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_module.rb +++ /dev/null @@ -1,67 +0,0 @@ -# frozen_string_literal: true -require "rake/application" - -module Rake - - class << self - # Current Rake Application - def application - @application ||= Rake::Application.new - end - - # Set the current Rake application object. - def application=(app) - @application = app - end - - def suggested_thread_count # :nodoc: - @cpu_count ||= Rake::CpuCounter.count - @cpu_count + 4 - end - - # Return the original directory where the Rake application was started. - def original_dir - application.original_dir - end - - # Load a rakefile. - def load_rakefile(path) - load(path) - end - - # Add files to the rakelib list - def add_rakelib(*files) - application.options.rakelib ||= [] - application.options.rakelib.concat(files) - end - - # Make +block_application+ the default rake application inside a block so - # you can load rakefiles into a different application. - # - # This is useful when you want to run rake tasks inside a library without - # running rake in a sub-shell. - # - # Example: - # - # Dir.chdir 'other/directory' - # - # other_rake = Rake.with_application do |rake| - # rake.load_rakefile - # end - # - # puts other_rake.tasks - - def with_application(block_application = Rake::Application.new) - orig_application = Rake.application - - Rake.application = block_application - - yield block_application - - block_application - ensure - Rake.application = orig_application - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_test_loader.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_test_loader.rb deleted file mode 100644 index f0f7772b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rake_test_loader.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true -require "rake" - -# Load the test files from the command line. -argv = ARGV.select do |argument| - begin - case argument - when /^-/ then - argument - when /\*/ then - FileList[argument].to_a.each do |file| - require File.expand_path file - end - - false - else - require File.expand_path argument - - false - end - rescue LoadError => e - raise unless e.path - abort "\nFile does not exist: #{e.path}\n\n" - end -end - -ARGV.replace argv diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb deleted file mode 100644 index a51e7748..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb +++ /dev/null @@ -1,20 +0,0 @@ -# frozen_string_literal: true -module Rake - - # Error indicating a recursion overflow error in task selection. - class RuleRecursionOverflowError < StandardError - def initialize(*args) - super - @targets = [] - end - - def add_target(target) - @targets << target - end - - def message - super + ": [" + @targets.reverse.join(" => ") + "]" - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/scope.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/scope.rb deleted file mode 100644 index fc1eb6c3..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/scope.rb +++ /dev/null @@ -1,43 +0,0 @@ -# frozen_string_literal: true -module Rake - class Scope < LinkedList # :nodoc: all - - # Path for the scope. - def path - map(&:to_s).reverse.join(":") - end - - # Path for the scope + the named path. - def path_with_task_name(task_name) - "#{path}:#{task_name}" - end - - # Trim +n+ innermost scope levels from the scope. In no case will - # this trim beyond the toplevel scope. - def trim(n) - result = self - while n > 0 && !result.empty? - result = result.tail - n -= 1 - end - result - end - - # Scope lists always end with an EmptyScope object. See Null - # Object Pattern) - class EmptyScope < EmptyLinkedList - @parent = Scope - - def path - "" - end - - def path_with_task_name(task_name) - task_name - end - end - - # Singleton null object for an empty scope. - EMPTY = EmptyScope.new - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task.rb deleted file mode 100644 index 10c563c9..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task.rb +++ /dev/null @@ -1,413 +0,0 @@ -# frozen_string_literal: true -require "rake/invocation_exception_mixin" - -module Rake - - ## - # A Task is the basic unit of work in a Rakefile. Tasks have associated - # actions (possibly more than one) and a list of prerequisites. When - # invoked, a task will first ensure that all of its prerequisites have an - # opportunity to run and then it will execute its own actions. - # - # Tasks are not usually created directly using the new method, but rather - # use the +file+ and +task+ convenience methods. - # - class Task - # List of prerequisites for a task. - attr_reader :prerequisites - alias prereqs prerequisites - - # List of actions attached to a task. - attr_reader :actions - - # Application owning this task. - attr_accessor :application - - # Array of nested namespaces names used for task lookup by this task. - attr_reader :scope - - # File/Line locations of each of the task definitions for this - # task (only valid if the task was defined with the detect - # location option set). - attr_reader :locations - - # Has this task already been invoked? Already invoked tasks - # will be skipped unless you reenable them. - attr_reader :already_invoked - - # Return task name - def to_s - name - end - - def inspect # :nodoc: - "<#{self.class} #{name} => [#{prerequisites.join(', ')}]>" - end - - # List of sources for task. - attr_writer :sources - def sources - if defined?(@sources) - @sources - else - prerequisites - end - end - - # List of prerequisite tasks - def prerequisite_tasks - prerequisites.map { |pre| lookup_prerequisite(pre) } - end - - def lookup_prerequisite(prerequisite_name) # :nodoc: - scoped_prerequisite_task = application[prerequisite_name, @scope] - if scoped_prerequisite_task == self - unscoped_prerequisite_task = application[prerequisite_name] - end - unscoped_prerequisite_task || scoped_prerequisite_task - end - private :lookup_prerequisite - - # List of all unique prerequisite tasks including prerequisite tasks' - # prerequisites. - # Includes self when cyclic dependencies are found. - def all_prerequisite_tasks - seen = {} - collect_prerequisites(seen) - seen.values - end - - def collect_prerequisites(seen) # :nodoc: - prerequisite_tasks.each do |pre| - next if seen[pre.name] - seen[pre.name] = pre - pre.collect_prerequisites(seen) - end - end - protected :collect_prerequisites - - # First source from a rule (nil if no sources) - def source - sources.first - end - - # Create a task named +task_name+ with no actions or prerequisites. Use - # +enhance+ to add actions and prerequisites. - def initialize(task_name, app) - @name = task_name.to_s - @prerequisites = [] - @actions = [] - @already_invoked = false - @comments = [] - @lock = Monitor.new - @application = app - @scope = app.current_scope - @arg_names = nil - @locations = [] - @invocation_exception = nil - end - - # Enhance a task with prerequisites or actions. Returns self. - def enhance(deps=nil, &block) - @prerequisites |= deps if deps - @actions << block if block_given? - self - end - - # Name of the task, including any namespace qualifiers. - def name - @name.to_s - end - - # Name of task with argument list description. - def name_with_args # :nodoc: - if arg_description - "#{name}#{arg_description}" - else - name - end - end - - # Argument description (nil if none). - def arg_description # :nodoc: - @arg_names ? "[#{arg_names.join(',')}]" : nil - end - - # Name of arguments for this task. - def arg_names - @arg_names || [] - end - - # Reenable the task, allowing its tasks to be executed if the task - # is invoked again. - def reenable - @already_invoked = false - end - - # Clear the existing prerequisites, actions, comments, and arguments of a rake task. - def clear - clear_prerequisites - clear_actions - clear_comments - clear_args - self - end - - # Clear the existing prerequisites of a rake task. - def clear_prerequisites - prerequisites.clear - self - end - - # Clear the existing actions on a rake task. - def clear_actions - actions.clear - self - end - - # Clear the existing comments on a rake task. - def clear_comments - @comments = [] - self - end - - # Clear the existing arguments on a rake task. - def clear_args - @arg_names = nil - self - end - - # Invoke the task if it is needed. Prerequisites are invoked first. - def invoke(*args) - task_args = TaskArguments.new(arg_names, args) - invoke_with_call_chain(task_args, InvocationChain::EMPTY) - end - - # Same as invoke, but explicitly pass a call chain to detect - # circular dependencies. - # - # If multiple tasks depend on this - # one in parallel, they will all fail if the first execution of - # this task fails. - def invoke_with_call_chain(task_args, invocation_chain) - new_chain = Rake::InvocationChain.append(self, invocation_chain) - @lock.synchronize do - begin - if application.options.trace - application.trace "** Invoke #{name} #{format_trace_flags}" - end - - if @already_invoked - if @invocation_exception - if application.options.trace - application.trace "** Previous invocation of #{name} failed #{format_trace_flags}" - end - raise @invocation_exception - else - return - end - end - - @already_invoked = true - - invoke_prerequisites(task_args, new_chain) - execute(task_args) if needed? - rescue Exception => ex - add_chain_to(ex, new_chain) - @invocation_exception = ex - raise ex - end - end - end - protected :invoke_with_call_chain - - def add_chain_to(exception, new_chain) # :nodoc: - exception.extend(InvocationExceptionMixin) unless - exception.respond_to?(:chain) - exception.chain = new_chain if exception.chain.nil? - end - private :add_chain_to - - # Invoke all the prerequisites of a task. - def invoke_prerequisites(task_args, invocation_chain) # :nodoc: - if application.options.always_multitask - invoke_prerequisites_concurrently(task_args, invocation_chain) - else - prerequisite_tasks.each { |p| - prereq_args = task_args.new_scope(p.arg_names) - p.invoke_with_call_chain(prereq_args, invocation_chain) - } - end - end - - # Invoke all the prerequisites of a task in parallel. - def invoke_prerequisites_concurrently(task_args, invocation_chain)# :nodoc: - futures = prerequisite_tasks.map do |p| - prereq_args = task_args.new_scope(p.arg_names) - application.thread_pool.future(p) do |r| - r.invoke_with_call_chain(prereq_args, invocation_chain) - end - end - # Iterate in reverse to improve performance related to thread waiting and switching - futures.reverse_each(&:value) - end - - # Format the trace flags for display. - def format_trace_flags - flags = [] - flags << "first_time" unless @already_invoked - flags << "not_needed" unless needed? - flags.empty? ? "" : "(" + flags.join(", ") + ")" - end - private :format_trace_flags - - # Execute the actions associated with this task. - def execute(args=nil) - args ||= EMPTY_TASK_ARGS - if application.options.dryrun - application.trace "** Execute (dry run) #{name}" - return - end - application.trace "** Execute #{name}" if application.options.trace - application.enhance_with_matching_rule(name) if @actions.empty? - @actions.each { |act| act.call(self, args) } - end - - # Is this task needed? - def needed? - true - end - - # Timestamp for this task. Basic tasks return the current time for their - # time stamp. Other tasks can be more sophisticated. - def timestamp - Time.now - end - - # Add a description to the task. The description can consist of an option - # argument list (enclosed brackets) and an optional comment. - def add_description(description) - return unless description - comment = description.strip - add_comment(comment) if comment && !comment.empty? - end - - def comment=(comment) # :nodoc: - add_comment(comment) - end - - def add_comment(comment) # :nodoc: - return if comment.nil? - @comments << comment unless @comments.include?(comment) - end - private :add_comment - - # Full collection of comments. Multiple comments are separated by - # newlines. - def full_comment - transform_comments("\n") - end - - # First line (or sentence) of all comments. Multiple comments are - # separated by a "/". - def comment - transform_comments(" / ") { |c| first_sentence(c) } - end - - # Transform the list of comments as specified by the block and - # join with the separator. - def transform_comments(separator, &block) - if @comments.empty? - nil - else - block ||= lambda { |c| c } - @comments.map(&block).join(separator) - end - end - private :transform_comments - - # Get the first sentence in a string. The sentence is terminated - # by the first period, exclamation mark, or the end of the line. - # Decimal points do not count as periods. - def first_sentence(string) - string.split(/(?<=\w)(\.|!)[ \t]|(\.$|!)|\n/).first - end - private :first_sentence - - # Set the names of the arguments for this task. +args+ should be - # an array of symbols, one for each argument name. - def set_arg_names(args) - @arg_names = args.map(&:to_sym) - end - - # Return a string describing the internal state of a task. Useful for - # debugging. - def investigation - result = "------------------------------\n".dup - result << "Investigating #{name}\n" - result << "class: #{self.class}\n" - result << "task needed: #{needed?}\n" - result << "timestamp: #{timestamp}\n" - result << "pre-requisites: \n" - prereqs = prerequisite_tasks - prereqs.sort! { |a, b| a.timestamp <=> b.timestamp } - prereqs.each do |p| - result << "--#{p.name} (#{p.timestamp})\n" - end - latest_prereq = prerequisite_tasks.map(&:timestamp).max - result << "latest-prerequisite time: #{latest_prereq}\n" - result << "................................\n\n" - return result - end - - # ---------------------------------------------------------------- - # Rake Module Methods - # - class << self - - # Clear the task list. This cause rake to immediately forget all the - # tasks that have been assigned. (Normally used in the unit tests.) - def clear - Rake.application.clear - end - - # List of all defined tasks. - def tasks - Rake.application.tasks - end - - # Return a task with the given name. If the task is not currently - # known, try to synthesize one from the defined rules. If no rules are - # found, but an existing file matches the task name, assume it is a file - # task with no dependencies or actions. - def [](task_name) - Rake.application[task_name] - end - - # TRUE if the task name is already defined. - def task_defined?(task_name) - Rake.application.lookup(task_name) != nil - end - - # Define a task given +args+ and an option block. If a rule with the - # given name already exists, the prerequisites and actions are added to - # the existing task. Returns the defined task. - def define_task(*args, &block) - Rake.application.define_task(self, *args, &block) - end - - # Define a rule for synthesizing tasks. - def create_rule(*args, &block) - Rake.application.create_rule(*args, &block) - end - - # Apply the scope to the task name according to the rules for - # this kind of task. Generic tasks will accept the scope as - # part of the name. - def scope_name(scope, task_name) - scope.path_with_task_name(task_name) - end - - end # class << Rake::Task - end # class Rake::Task -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_argument_error.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_argument_error.rb deleted file mode 100644 index ef20076c..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_argument_error.rb +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true -module Rake - - # Error indicating an ill-formed task declaration. - class TaskArgumentError < ArgumentError - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_arguments.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_arguments.rb deleted file mode 100644 index 0d3001af..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_arguments.rb +++ /dev/null @@ -1,109 +0,0 @@ -# frozen_string_literal: true -module Rake - - ## - # TaskArguments manage the arguments passed to a task. - # - class TaskArguments - include Enumerable - - # Argument names - attr_reader :names - - # Create a TaskArgument object with a list of argument +names+ and a set - # of associated +values+. +parent+ is the parent argument object. - def initialize(names, values, parent=nil) - @names = names - @parent = parent - @hash = {} - @values = values - names.each_with_index { |name, i| - next if values[i].nil? || values[i] == "" - @hash[name.to_sym] = values[i] - } - end - - # Retrieve the complete array of sequential values - def to_a - @values.dup - end - - # Retrieve the list of values not associated with named arguments - def extras - @values[@names.length..-1] || [] - end - - # Create a new argument scope using the prerequisite argument - # names. - def new_scope(names) - values = names.map { |n| self[n] } - self.class.new(names, values + extras, self) - end - - # Find an argument value by name or index. - def [](index) - lookup(index.to_sym) - end - - # Specify a hash of default values for task arguments. Use the - # defaults only if there is no specific value for the given - # argument. - def with_defaults(defaults) - @hash = defaults.merge(@hash) - end - - # Enumerates the arguments and their values - def each(&block) - @hash.each(&block) - end - - # Extracts the argument values at +keys+ - def values_at(*keys) - keys.map { |k| lookup(k) } - end - - # Returns the value of the given argument via method_missing - def method_missing(sym, *args) - lookup(sym.to_sym) - end - - # Returns a Hash of arguments and their values - def to_hash - @hash.dup - end - - def to_s # :nodoc: - inspect - end - - def inspect # :nodoc: - inspection = @hash.map do |k,v| - "#{k.to_s}: #{v.to_s}" - end.join(", ") - - "#<#{self.class} #{inspection}>" - end - - # Returns true if +key+ is one of the arguments - def has_key?(key) - @hash.has_key?(key) - end - alias key? has_key? - - def fetch(*args, &block) - @hash.fetch(*args, &block) - end - - protected - - def lookup(name) # :nodoc: - if @hash.has_key?(name) - @hash[name] - elsif @parent - @parent.lookup(name) - end - end - end - - EMPTY_TASK_ARGS = TaskArguments.new([], []) # :nodoc: -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_manager.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_manager.rb deleted file mode 100644 index 1991088f..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/task_manager.rb +++ /dev/null @@ -1,324 +0,0 @@ -# frozen_string_literal: true -module Rake - - # The TaskManager module is a mixin for managing tasks. - module TaskManager - # Track the last comment made in the Rakefile. - attr_accessor :last_description - - def initialize # :nodoc: - super - @tasks = Hash.new - @rules = Array.new - @scope = Scope.make - @last_description = nil - end - - def create_rule(*args, &block) # :nodoc: - pattern, args, deps = resolve_args(args) - pattern = Regexp.new(Regexp.quote(pattern) + "$") if String === pattern - @rules << [pattern, args, deps, block] - end - - def define_task(task_class, *args, &block) # :nodoc: - task_name, arg_names, deps = resolve_args(args) - - original_scope = @scope - if String === task_name and - not task_class.ancestors.include? Rake::FileTask - task_name, *definition_scope = *(task_name.split(":").reverse) - @scope = Scope.make(*(definition_scope + @scope.to_a)) - end - - task_name = task_class.scope_name(@scope, task_name) - deps = [deps] unless deps.respond_to?(:to_ary) - deps = deps.map { |d| Rake.from_pathname(d).to_s } - task = intern(task_class, task_name) - task.set_arg_names(arg_names) unless arg_names.empty? - if Rake::TaskManager.record_task_metadata - add_location(task) - task.add_description(get_description(task)) - end - task.enhance(deps, &block) - ensure - @scope = original_scope - end - - # Lookup a task. Return an existing task if found, otherwise - # create a task of the current type. - def intern(task_class, task_name) - @tasks[task_name.to_s] ||= task_class.new(task_name, self) - end - - # Find a matching task for +task_name+. - def [](task_name, scopes=nil) - task_name = task_name.to_s - self.lookup(task_name, scopes) or - enhance_with_matching_rule(task_name) or - synthesize_file_task(task_name) or - fail generate_message_for_undefined_task(task_name) - end - - def generate_message_for_undefined_task(task_name) - message = "Don't know how to build task '#{task_name}' "\ - "(See the list of available tasks with `#{Rake.application.name} --tasks`)" - message + generate_did_you_mean_suggestions(task_name) - end - - def generate_did_you_mean_suggestions(task_name) - return "" unless defined?(::DidYouMean::SpellChecker) - - suggestions = ::DidYouMean::SpellChecker.new(dictionary: @tasks.keys).correct(task_name.to_s) - if ::DidYouMean.respond_to?(:formatter)# did_you_mean v1.2.0 or later - ::DidYouMean.formatter.message_for(suggestions) - elsif defined?(::DidYouMean::Formatter) # before did_you_mean v1.2.0 - ::DidYouMean::Formatter.new(suggestions).to_s - else - "" - end - end - - def synthesize_file_task(task_name) # :nodoc: - return nil unless File.exist?(task_name) - define_task(Rake::FileTask, task_name) - end - - # Resolve the arguments for a task/rule. Returns a triplet of - # [task_name, arg_name_list, prerequisites]. - def resolve_args(args) - if args.last.is_a?(Hash) - deps = args.pop - resolve_args_with_dependencies(args, deps) - else - resolve_args_without_dependencies(args) - end - end - - # Resolve task arguments for a task or rule when there are no - # dependencies declared. - # - # The patterns recognized by this argument resolving function are: - # - # task :t - # task :t, [:a] - # - def resolve_args_without_dependencies(args) - task_name = args.shift - if args.size == 1 && args.first.respond_to?(:to_ary) - arg_names = args.first.to_ary - else - arg_names = args - end - [task_name, arg_names, []] - end - private :resolve_args_without_dependencies - - # Resolve task arguments for a task or rule when there are - # dependencies declared. - # - # The patterns recognized by this argument resolving function are: - # - # task :t => [:d] - # task :t, [a] => [:d] - # - def resolve_args_with_dependencies(args, hash) # :nodoc: - fail "Task Argument Error" if hash.size != 1 - key, value = hash.map { |k, v| [k, v] }.first - if args.empty? - task_name = key - arg_names = [] - deps = value || [] - else - task_name = args.shift - arg_names = key - deps = value - end - deps = [deps] unless deps.respond_to?(:to_ary) - [task_name, arg_names, deps] - end - private :resolve_args_with_dependencies - - # If a rule can be found that matches the task name, enhance the - # task with the prerequisites and actions from the rule. Set the - # source attribute of the task appropriately for the rule. Return - # the enhanced task or nil of no rule was found. - def enhance_with_matching_rule(task_name, level=0) - fail Rake::RuleRecursionOverflowError, - "Rule Recursion Too Deep" if level >= 16 - @rules.each do |pattern, args, extensions, block| - if pattern && pattern.match(task_name) - task = attempt_rule(task_name, pattern, args, extensions, block, level) - return task if task - end - end - nil - rescue Rake::RuleRecursionOverflowError => ex - ex.add_target(task_name) - fail ex - end - - # List of all defined tasks in this application. - def tasks - @tasks.values.sort_by { |t| t.name } - end - - # List of all the tasks defined in the given scope (and its - # sub-scopes). - def tasks_in_scope(scope) - prefix = scope.path - tasks.select { |t| - /^#{prefix}:/ =~ t.name - } - end - - # Clear all tasks in this application. - def clear - @tasks.clear - @rules.clear - end - - # Lookup a task, using scope and the scope hints in the task name. - # This method performs straight lookups without trying to - # synthesize file tasks or rules. Special scope names (e.g. '^') - # are recognized. If no scope argument is supplied, use the - # current scope. Return nil if the task cannot be found. - def lookup(task_name, initial_scope=nil) - initial_scope ||= @scope - task_name = task_name.to_s - if task_name =~ /^rake:/ - scopes = Scope.make - task_name = task_name.sub(/^rake:/, "") - elsif task_name =~ /^(\^+)/ - scopes = initial_scope.trim($1.size) - task_name = task_name.sub(/^(\^+)/, "") - else - scopes = initial_scope - end - lookup_in_scope(task_name, scopes) - end - - # Lookup the task name - def lookup_in_scope(name, scope) - loop do - tn = scope.path_with_task_name(name) - task = @tasks[tn] - return task if task - break if scope.empty? - scope = scope.tail - end - nil - end - private :lookup_in_scope - - # Return the list of scope names currently active in the task - # manager. - def current_scope - @scope - end - - # Evaluate the block in a nested namespace named +name+. Create - # an anonymous namespace if +name+ is nil. - def in_namespace(name) - name ||= generate_name - @scope = Scope.new(name, @scope) - ns = NameSpace.new(self, @scope) - yield(ns) - ns - ensure - @scope = @scope.tail - end - - private - - # Add a location to the locations field of the given task. - def add_location(task) - loc = find_location - task.locations << loc if loc - task - end - - # Find the location that called into the dsl layer. - def find_location - locations = caller - i = 0 - while locations[i] - return locations[i + 1] if locations[i] =~ /rake\/dsl_definition.rb/ - i += 1 - end - nil - end - - # Generate an anonymous namespace name. - def generate_name - @seed ||= 0 - @seed += 1 - "_anon_#{@seed}" - end - - def trace_rule(level, message) # :nodoc: - options.trace_output.puts "#{" " * level}#{message}" if - Rake.application.options.trace_rules - end - - # Attempt to create a rule given the list of prerequisites. - def attempt_rule(task_name, task_pattern, args, extensions, block, level) - sources = make_sources(task_name, task_pattern, extensions) - prereqs = sources.map { |source| - trace_rule level, "Attempting Rule #{task_name} => #{source}" - if File.exist?(source) || Rake::Task.task_defined?(source) - trace_rule level, "(#{task_name} => #{source} ... EXIST)" - source - elsif parent = enhance_with_matching_rule(source, level + 1) - trace_rule level, "(#{task_name} => #{source} ... ENHANCE)" - parent.name - else - trace_rule level, "(#{task_name} => #{source} ... FAIL)" - return nil - end - } - task = FileTask.define_task(task_name, { args => prereqs }, &block) - task.sources = prereqs - task - end - - # Make a list of sources from the list of file name extensions / - # translation procs. - def make_sources(task_name, task_pattern, extensions) - result = extensions.map { |ext| - case ext - when /%/ - task_name.pathmap(ext) - when %r{/} - ext - when /^\./ - source = task_name.sub(task_pattern, ext) - source == ext ? task_name.ext(ext) : source - when String - ext - when Proc, Method - if ext.arity == 1 - ext.call(task_name) - else - ext.call - end - else - fail "Don't know how to handle rule dependent: #{ext.inspect}" - end - } - result.flatten - end - - # Return the current description, clearing it in the process. - def get_description(task) - desc = @last_description - @last_description = nil - desc - end - - class << self - attr_accessor :record_task_metadata # :nodoc: - TaskManager.record_task_metadata = false - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/tasklib.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/tasklib.rb deleted file mode 100644 index 5354b4f9..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/tasklib.rb +++ /dev/null @@ -1,12 +0,0 @@ -# frozen_string_literal: true -require "rake" - -module Rake - - # Base class for Task Libraries. - class TaskLib - include Cloneable - include Rake::DSL - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/testtask.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/testtask.rb deleted file mode 100644 index 53762756..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/testtask.rb +++ /dev/null @@ -1,224 +0,0 @@ -# frozen_string_literal: true -require "rake" -require "rake/tasklib" - -module Rake - - # Create a task that runs a set of tests. - # - # Example: - # require "rake/testtask" - # - # Rake::TestTask.new do |t| - # t.libs << "test" - # t.test_files = FileList['test/test*.rb'] - # t.verbose = true - # end - # - # If rake is invoked with a "TEST=filename" command line option, - # then the list of test files will be overridden to include only the - # filename specified on the command line. This provides an easy way - # to run just one test. - # - # If rake is invoked with a "TESTOPTS=options" command line option, - # then the given options are passed to the test process after a - # '--'. This allows Test::Unit options to be passed to the test - # suite. - # - # Examples: - # - # rake test # run tests normally - # rake test TEST=just_one_file.rb # run just one test file. - # rake test TESTOPTS="-v" # run in verbose mode - # rake test TESTOPTS="--runner=fox" # use the fox test runner - # - class TestTask < TaskLib - - # Name of test task. (default is :test) - attr_accessor :name - - # List of directories added to $LOAD_PATH before running the - # tests. (default is 'lib') - attr_accessor :libs - - # True if verbose test output desired. (default is false) - attr_accessor :verbose - - # Test options passed to the test suite. An explicit - # TESTOPTS=opts on the command line will override this. (default - # is NONE) - attr_accessor :options - - # Request that the tests be run with the warning flag set. - # E.g. warning=true implies "ruby -w" used to run the tests. - # (default is true) - attr_accessor :warning - - # Glob pattern to match test files. (default is 'test/test*.rb') - attr_accessor :pattern - - # Style of test loader to use. Options are: - # - # * :rake -- Rake provided test loading script (default). - # * :testrb -- Ruby provided test loading script. - # * :direct -- Load tests using command line loader. - # - attr_accessor :loader - - # Array of command line options to pass to ruby when running test loader. - attr_accessor :ruby_opts - - # Description of the test task. (default is 'Run tests') - attr_accessor :description - - # Task prerequisites. - attr_accessor :deps - - # Explicitly define the list of test files to be included in a - # test. +list+ is expected to be an array of file names (a - # FileList is acceptable). If both +pattern+ and +test_files+ are - # used, then the list of test files is the union of the two. - def test_files=(list) - @test_files = list - end - - # Create a testing task. - def initialize(name=:test) - @name = name - @libs = ["lib"] - @pattern = nil - @options = nil - @test_files = nil - @verbose = false - @warning = true - @loader = :rake - @ruby_opts = [] - @description = "Run tests" + (@name == :test ? "" : " for #{@name}") - @deps = [] - if @name.is_a?(Hash) - @deps = @name.values.first - @name = @name.keys.first - end - yield self if block_given? - @pattern = "test/test*.rb" if @pattern.nil? && @test_files.nil? - define - end - - # Create the tasks defined by this task lib. - def define - desc @description - task @name => Array(deps) do - FileUtilsExt.verbose(@verbose) do - puts "Use TESTOPTS=\"--verbose\" to pass --verbose" \ - ", etc. to runners." if ARGV.include? "--verbose" - args = - "#{ruby_opts_string} #{run_code} " + - "#{file_list_string} #{option_list}" - ruby args do |ok, status| - if !ok && status.respond_to?(:signaled?) && status.signaled? - raise SignalException.new(status.termsig) - elsif !ok - status = "Command failed with status (#{status.exitstatus})" - details = ": [ruby #{args}]" - message = - if Rake.application.options.trace or @verbose - status + details - else - status - end - - fail message - end - end - end - end - self - end - - def option_list # :nodoc: - (ENV["TESTOPTS"] || - ENV["TESTOPT"] || - ENV["TEST_OPTS"] || - ENV["TEST_OPT"] || - @options || - "") - end - - def ruby_opts_string # :nodoc: - opts = @ruby_opts.dup - opts.unshift("-I\"#{lib_path}\"") unless @libs.empty? - opts.unshift("-w") if @warning - opts.join(" ") - end - - def lib_path # :nodoc: - @libs.join(File::PATH_SEPARATOR) - end - - def file_list_string # :nodoc: - file_list.map { |fn| "\"#{fn}\"" }.join(" ") - end - - def file_list # :nodoc: - if ENV["TEST"] - FileList[ENV["TEST"]] - else - result = [] - result += @test_files.to_a if @test_files - result += FileList[@pattern].to_a if @pattern - result - end - end - - def ruby_version # :nodoc: - RUBY_VERSION - end - - def run_code # :nodoc: - case @loader - when :direct - "-e \"ARGV.each{|f| require f}\"" - when :testrb - "-S testrb" - when :rake - "#{rake_include_arg} \"#{rake_loader}\"" - end - end - - def rake_loader # :nodoc: - find_file("rake/rake_test_loader") or - fail "unable to find rake test loader" - end - - def find_file(fn) # :nodoc: - $LOAD_PATH.each do |path| - file_path = File.join(path, "#{fn}.rb") - return file_path if File.exist? file_path - end - nil - end - - def rake_include_arg # :nodoc: - spec = Gem.loaded_specs["rake"] - if spec.respond_to?(:default_gem?) && spec.default_gem? - "" - else - "-I\"#{rake_lib_dir}\"" - end - end - - def rake_lib_dir # :nodoc: - find_dir("rake") or - fail "unable to find rake lib" - end - - def find_dir(fn) # :nodoc: - $LOAD_PATH.each do |path| - file_path = File.join(path, "#{fn}.rb") - return path if File.exist? file_path - end - nil - end - - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/thread_history_display.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/thread_history_display.rb deleted file mode 100644 index 412ea37b..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/thread_history_display.rb +++ /dev/null @@ -1,49 +0,0 @@ -# frozen_string_literal: true -require "rake/private_reader" - -module Rake - - class ThreadHistoryDisplay # :nodoc: all - include Rake::PrivateReader - - private_reader :stats, :items, :threads - - def initialize(stats) - @stats = stats - @items = { _seq_: 1 } - @threads = { _seq_: "A" } - end - - def show - puts "Job History:" - stats.each do |stat| - stat[:data] ||= {} - rename(stat, :thread, threads) - rename(stat[:data], :item_id, items) - rename(stat[:data], :new_thread, threads) - rename(stat[:data], :deleted_thread, threads) - printf("%8d %2s %-20s %s\n", - (stat[:time] * 1_000_000).round, - stat[:thread], - stat[:event], - stat[:data].map do |k, v| "#{k}:#{v}" end.join(" ")) - end - end - - private - - def rename(hash, key, renames) - if hash && hash[key] - original = hash[key] - value = renames[original] - unless value - value = renames[:_seq_] - renames[:_seq_] = renames[:_seq_].succ - renames[original] = value - end - hash[key] = value - end - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/thread_pool.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/thread_pool.rb deleted file mode 100644 index b01a5efe..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/thread_pool.rb +++ /dev/null @@ -1,163 +0,0 @@ -# frozen_string_literal: true -require "set" - -require "rake/promise" - -module Rake - - class ThreadPool # :nodoc: all - - # Creates a ThreadPool object. The +thread_count+ parameter is the size - # of the pool. - def initialize(thread_count) - @max_active_threads = [thread_count, 0].max - @threads = Set.new - @threads_mon = Monitor.new - @queue = Queue.new - @join_cond = @threads_mon.new_cond - - @history_start_time = nil - @history = [] - @history_mon = Monitor.new - @total_threads_in_play = 0 - end - - # Creates a future executed by the +ThreadPool+. - # - # The args are passed to the block when executing (similarly to - # Thread#new) The return value is an object representing - # a future which has been created and added to the queue in the - # pool. Sending #value to the object will sleep the - # current thread until the future is finished and will return the - # result (or raise an exception thrown from the future) - def future(*args, &block) - promise = Promise.new(args, &block) - promise.recorder = lambda { |*stats| stat(*stats) } - - @queue.enq promise - stat :queued, item_id: promise.object_id - start_thread - promise - end - - # Waits until the queue of futures is empty and all threads have exited. - def join - @threads_mon.synchronize do - begin - stat :joining - @join_cond.wait unless @threads.empty? - stat :joined - rescue Exception => e - stat :joined - $stderr.puts e - $stderr.print "Queue contains #{@queue.size} items. " + - "Thread pool contains #{@threads.count} threads\n" - $stderr.print "Current Thread #{Thread.current} status = " + - "#{Thread.current.status}\n" - $stderr.puts e.backtrace.join("\n") - @threads.each do |t| - $stderr.print "Thread #{t} status = #{t.status}\n" - $stderr.puts t.backtrace.join("\n") - end - raise e - end - end - end - - # Enable the gathering of history events. - def gather_history #:nodoc: - @history_start_time = Time.now if @history_start_time.nil? - end - - # Return a array of history events for the thread pool. - # - # History gathering must be enabled to be able to see the events - # (see #gather_history). Best to call this when the job is - # complete (i.e. after ThreadPool#join is called). - def history # :nodoc: - @history_mon.synchronize { @history.dup }. - sort_by { |i| i[:time] }. - each { |i| i[:time] -= @history_start_time } - end - - # Return a hash of always collected statistics for the thread pool. - def statistics # :nodoc: - { - total_threads_in_play: @total_threads_in_play, - max_active_threads: @max_active_threads, - } - end - - private - - # processes one item on the queue. Returns true if there was an - # item to process, false if there was no item - def process_queue_item #:nodoc: - return false if @queue.empty? - - # Even though we just asked if the queue was empty, it - # still could have had an item which by this statement - # is now gone. For this reason we pass true to Queue#deq - # because we will sleep indefinitely if it is empty. - promise = @queue.deq(true) - stat :dequeued, item_id: promise.object_id - promise.work - return true - - rescue ThreadError # this means the queue is empty - false - end - - def safe_thread_count - @threads_mon.synchronize do - @threads.count - end - end - - def start_thread # :nodoc: - @threads_mon.synchronize do - next unless @threads.count < @max_active_threads - - t = Thread.new do - begin - while safe_thread_count <= @max_active_threads - break unless process_queue_item - end - ensure - @threads_mon.synchronize do - @threads.delete Thread.current - stat :ended, thread_count: @threads.count - @join_cond.broadcast if @threads.empty? - end - end - end - - @threads << t - stat( - :spawned, - new_thread: t.object_id, - thread_count: @threads.count) - @total_threads_in_play = @threads.count if - @threads.count > @total_threads_in_play - end - end - - def stat(event, data=nil) # :nodoc: - return if @history_start_time.nil? - info = { - event: event, - data: data, - time: Time.now, - thread: Thread.current.object_id, - } - @history_mon.synchronize { @history << info } - end - - # for testing only - - def __queue__ # :nodoc: - @queue - end - end - -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/trace_output.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/trace_output.rb deleted file mode 100644 index d713a092..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/trace_output.rb +++ /dev/null @@ -1,23 +0,0 @@ -# frozen_string_literal: true -module Rake - module TraceOutput # :nodoc: all - - # Write trace output to output stream +out+. - # - # The write is done as a single IO call (to print) to lessen the - # chance that the trace output is interrupted by other tasks also - # producing output. - def trace_on(out, *strings) - sep = $\ || "\n" - if strings.empty? - output = sep - else - output = strings.map { |s| - next if s.nil? - s.end_with?(sep) ? s : s + sep - }.join - end - out.print(output) - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/version.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/version.rb deleted file mode 100644 index 6014e932..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/version.rb +++ /dev/null @@ -1,10 +0,0 @@ -# frozen_string_literal: true -module Rake - VERSION = "12.3.3" - - module Version # :nodoc: all - MAJOR, MINOR, BUILD, *OTHER = Rake::VERSION.split "." - - NUMBERS = [MAJOR, MINOR, BUILD, *OTHER] - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/win32.rb b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/win32.rb deleted file mode 100644 index 6e620318..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/lib/rake/win32.rb +++ /dev/null @@ -1,51 +0,0 @@ -# frozen_string_literal: true -require "rbconfig" - -module Rake - # Win 32 interface methods for Rake. Windows specific functionality - # will be placed here to collect that knowledge in one spot. - module Win32 # :nodoc: all - - # Error indicating a problem in locating the home directory on a - # Win32 system. - class Win32HomeError < RuntimeError - end - - class << self - # True if running on a windows system. - def windows? - RbConfig::CONFIG["host_os"] =~ %r!(msdos|mswin|djgpp|mingw|[Ww]indows)! - end - - # The standard directory containing system wide rake files on - # Win 32 systems. Try the following environment variables (in - # order): - # - # * HOME - # * HOMEDRIVE + HOMEPATH - # * APPDATA - # * USERPROFILE - # - # If the above are not defined, the return nil. - def win32_system_dir #:nodoc: - win32_shared_path = ENV["HOME"] - if win32_shared_path.nil? && ENV["HOMEDRIVE"] && ENV["HOMEPATH"] - win32_shared_path = ENV["HOMEDRIVE"] + ENV["HOMEPATH"] - end - - win32_shared_path ||= ENV["APPDATA"] - win32_shared_path ||= ENV["USERPROFILE"] - raise Win32HomeError, - "Unable to determine home path environment variable." if - win32_shared_path.nil? or win32_shared_path.empty? - normalize(File.join(win32_shared_path, "Rake")) - end - - # Normalize a win32 path so that the slashes are all forward slashes. - def normalize(path) - path.gsub(/\\/, "/") - end - - end - end -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/rake.gemspec b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/rake.gemspec deleted file mode 100644 index 66c567ca..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/gems/rake-12.3.3/rake.gemspec +++ /dev/null @@ -1,42 +0,0 @@ -# frozen_string_literal: true -$LOAD_PATH.unshift File.expand_path('../lib', __FILE__) -require 'rake/version' - -Gem::Specification.new do |s| - s.name = "rake".freeze - s.version = Rake::VERSION - s.authors = ["Hiroshi SHIBATA".freeze, "Eric Hodel".freeze, "Jim Weirich".freeze] - s.email = ["hsbt@ruby-lang.org".freeze, "drbrain@segment7.net".freeze, "".freeze] - - s.summary = "Rake is a Make-like program implemented in Ruby".freeze - s.description = <<-DESCRIPTION -Rake is a Make-like program implemented in Ruby. Tasks and dependencies are -specified in standard Ruby syntax. -Rake has the following features: - * Rakefiles (rake's version of Makefiles) are completely defined in standard Ruby syntax. - No XML files to edit. No quirky Makefile syntax to worry about (is that a tab or a space?) - * Users can specify tasks with prerequisites. - * Rake supports rule patterns to synthesize implicit tasks. - * Flexible FileLists that act like arrays but know about manipulating file names and paths. - * Supports parallel execution of tasks. - DESCRIPTION - s.homepage = "https://github.com/ruby/rake".freeze - s.licenses = ["MIT".freeze] - - s.files = %x[git ls-files -z].split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } - - %w[.rubocop.yml .gitignore .travis.yml appveyor.yml] - s.bindir = "exe" - s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) } - s.require_paths = ["lib".freeze] - - s.required_ruby_version = Gem::Requirement.new(">= 2.0.0".freeze) - s.rubygems_version = "2.6.1".freeze - s.required_rubygems_version = Gem::Requirement.new(">= 1.3.2".freeze) - s.rdoc_options = ["--main".freeze, "README.rdoc".freeze] - - s.add_development_dependency(%q.freeze) - s.add_development_dependency(%q.freeze) - s.add_development_dependency(%q.freeze) - s.add_development_dependency(%q.freeze) - s.add_development_dependency(%q.freeze) -end diff --git a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/specifications/rake-12.3.3.gemspec b/spec/sample_bundler/vendor/bundle/jruby/2.5.0/specifications/rake-12.3.3.gemspec deleted file mode 100644 index 30d8f389..00000000 --- a/spec/sample_bundler/vendor/bundle/jruby/2.5.0/specifications/rake-12.3.3.gemspec +++ /dev/null @@ -1,49 +0,0 @@ -# -*- encoding: utf-8 -*- -# stub: rake 12.3.3 ruby lib - -Gem::Specification.new do |s| - s.name = "rake".freeze - s.version = "12.3.3" - - s.required_rubygems_version = Gem::Requirement.new(">= 1.3.2".freeze) if s.respond_to? :required_rubygems_version= - s.require_paths = ["lib".freeze] - s.authors = ["Hiroshi SHIBATA".freeze, "Eric Hodel".freeze, "Jim Weirich".freeze] - s.bindir = "exe".freeze - s.date = "2019-07-22" - s.description = "Rake is a Make-like program implemented in Ruby. Tasks and dependencies are\nspecified in standard Ruby syntax.\nRake has the following features:\n * Rakefiles (rake's version of Makefiles) are completely defined in standard Ruby syntax.\n No XML files to edit. No quirky Makefile syntax to worry about (is that a tab or a space?)\n * Users can specify tasks with prerequisites.\n * Rake supports rule patterns to synthesize implicit tasks.\n * Flexible FileLists that act like arrays but know about manipulating file names and paths.\n * Supports parallel execution of tasks.\n".freeze - s.email = ["hsbt@ruby-lang.org".freeze, "drbrain@segment7.net".freeze, "".freeze] - s.executables = ["rake".freeze] - s.files = ["exe/rake".freeze] - s.homepage = "https://github.com/ruby/rake".freeze - s.licenses = ["MIT".freeze] - s.rdoc_options = ["--main".freeze, "README.rdoc".freeze] - s.required_ruby_version = Gem::Requirement.new(">= 2.0.0".freeze) - s.rubygems_version = "2.7.11".freeze - s.summary = "Rake is a Make-like program implemented in Ruby".freeze - - s.installed_by_version = "2.7.11" if s.respond_to? :installed_by_version - - if s.respond_to? :specification_version then - s.specification_version = 4 - - if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_development_dependency(%q.freeze, [">= 0"]) - s.add_development_dependency(%q.freeze, [">= 0"]) - s.add_development_dependency(%q.freeze, [">= 0"]) - s.add_development_dependency(%q.freeze, [">= 0"]) - s.add_development_dependency(%q.freeze, [">= 0"]) - else - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, [">= 0"]) - end - else - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, [">= 0"]) - end -end diff --git a/spec/sample_jbundler/vendor/bundle/jruby/1.8/gems b/spec/sample_jbundler/vendor/bundle/jruby/1.8/gems deleted file mode 120000 index 5dccc207..00000000 --- a/spec/sample_jbundler/vendor/bundle/jruby/1.8/gems +++ /dev/null @@ -1 +0,0 @@ -../../gems \ No newline at end of file diff --git a/spec/sample_jbundler/vendor/bundle/jruby/1.8/specifications b/spec/sample_jbundler/vendor/bundle/jruby/1.8/specifications deleted file mode 120000 index 5b378857..00000000 --- a/spec/sample_jbundler/vendor/bundle/jruby/1.8/specifications +++ /dev/null @@ -1 +0,0 @@ -../../specifications \ No newline at end of file diff --git a/spec/sample_jbundler/vendor/bundle/jruby/1.9/gems b/spec/sample_jbundler/vendor/bundle/jruby/1.9/gems deleted file mode 120000 index 5dccc207..00000000 --- a/spec/sample_jbundler/vendor/bundle/jruby/1.9/gems +++ /dev/null @@ -1 +0,0 @@ -../../gems \ No newline at end of file diff --git a/spec/sample_jbundler/vendor/bundle/jruby/1.9/specifications b/spec/sample_jbundler/vendor/bundle/jruby/1.9/specifications deleted file mode 120000 index 5b378857..00000000 --- a/spec/sample_jbundler/vendor/bundle/jruby/1.9/specifications +++ /dev/null @@ -1 +0,0 @@ -../../specifications \ No newline at end of file diff --git a/spec/sample_jbundler/vendor/bundle/specifications/.keep b/spec/sample_jbundler/vendor/bundle/specifications/.keep deleted file mode 100644 index e69de29b..00000000 diff --git a/spec/warbler/bundler_spec.rb b/spec/warbler/bundler_spec.rb index a1b6a69f..a60818b9 100644 --- a/spec/warbler/bundler_spec.rb +++ b/spec/warbler/bundler_spec.rb @@ -25,6 +25,10 @@ def bundle_install(*args) `cd #{Dir.pwd} && #{RUBY_EXE} -S bundle install #{args.join(' ')}` end + def bundle_config(*args) + `cd #{Dir.pwd} && #{RUBY_EXE} -S bundle config #{args.join(' ')}` + end + let(:config) { drbclient.config(@extra_config) } let(:jar) { drbclient.jar } @@ -175,6 +179,12 @@ def bundle_install(*args) context "when frozen" do run_in_directory "spec/sample_bundler" + before do + bundle_config "set --local frozen true" + bundle_config "set --local path vendor/bundle" + bundle_install + end + it "includes the bundler gem" do bundle_install jar.apply(config) @@ -233,7 +243,8 @@ def bundle_install(*args) run_in_directory "spec/sample_bundler" it "includes the bundler gem" do - bundle_install '--deployment' + bundle_config "set --local deployment true" + bundle_install jar.apply(config) expect(file_list(%r{gems/rake-12.3.3/lib})).to_not be_empty expect(file_list(%r{gems/bundler-})).to_not be_empty