rake 12.3.0 → 12.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CONTRIBUTING.rdoc +11 -4
- data/History.rdoc +48 -3
- data/README.rdoc +7 -7
- data/Rakefile +7 -4
- data/azure-pipelines.yml +11 -0
- data/bin/bundle +105 -0
- data/bin/rake +29 -0
- data/bin/rdoc +29 -0
- data/bin/rubocop +29 -0
- data/lib/rake/application.rb +5 -5
- data/lib/rake/cpu_counter.rb +1 -1
- data/lib/rake/dsl_definition.rb +3 -3
- data/lib/rake/file_creation_task.rb +1 -1
- data/lib/rake/file_list.rb +2 -2
- data/lib/rake/file_task.rb +2 -2
- data/lib/rake/file_utils.rb +2 -2
- data/lib/rake/multi_task.rb +1 -37
- data/lib/rake/packagetask.rb +2 -6
- data/lib/rake/promise.rb +2 -2
- data/lib/rake/rake_test_loader.rb +1 -0
- data/lib/rake/scope.rb +1 -1
- data/lib/rake/task.rb +35 -13
- data/lib/rake/task_manager.rb +14 -9
- data/lib/rake/version.rb +1 -1
- data/rake.gemspec +2 -3
- metadata +8 -5
- data/.gitignore +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8bdd2e72f2f0ed9bd143e9f691203343bc430717dde81d9928807ce267c60d49
|
4
|
+
data.tar.gz: 77a5a8acd239396ac98ae54b146d70e1c8407d18109010eaa495f4fb15310f6b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c47fee4f4436744de8cf095683f5298920128a12bd6415c689ca815626bbf36330015bed62e758324ee4762a018294695f6106f9c29883330cea7915787b957
|
7
|
+
data.tar.gz: 5d9c91f228cb06f6ebbb3b3aaae13664f4d12b04cfdd3413e4c0d1c6083ec5de2c3b89a5bf9e62a9a82105a7411ac2cb2bdb84cb36ca033a4b710d10a5661312
|
data/CONTRIBUTING.rdoc
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
Rake is currently hosted at github. The github web page is
|
4
4
|
https://github.com/ruby/rake . The public git clone URL is
|
5
5
|
|
6
|
-
|
6
|
+
https://github.com/ruby/rake.git
|
7
7
|
|
8
8
|
= Running the Rake Test Suite
|
9
9
|
|
@@ -12,11 +12,18 @@ If you wish to run the unit and functional tests that come with Rake:
|
|
12
12
|
* +cd+ into the top project directory of rake.
|
13
13
|
* Install gem dependency using bundler:
|
14
14
|
|
15
|
-
bundle install # Install bundler, minitest and rdoc
|
15
|
+
$ bundle install # Install bundler, minitest and rdoc
|
16
16
|
|
17
|
-
*
|
17
|
+
* Run the test suite
|
18
18
|
|
19
|
-
|
19
|
+
$ rake
|
20
|
+
|
21
|
+
= Rubocop
|
22
|
+
|
23
|
+
Rake uses Rubocop to enforce a consistent style on new changes being
|
24
|
+
proposed. You can check your code with Rubocop using:
|
25
|
+
|
26
|
+
$ ./bin/rubocop
|
20
27
|
|
21
28
|
= Issues and Bug Reports
|
22
29
|
|
data/History.rdoc
CHANGED
@@ -1,11 +1,56 @@
|
|
1
|
+
=== 12.3.3
|
2
|
+
|
3
|
+
==== Bug fixes
|
4
|
+
|
5
|
+
* Use the application's name in error message if a task is not found.
|
6
|
+
Pull Request #303 by tmatilai
|
7
|
+
|
8
|
+
==== Enhancements:
|
9
|
+
|
10
|
+
* Use File.open explicitly.
|
11
|
+
|
12
|
+
=== 12.3.2
|
13
|
+
|
14
|
+
==== Bug fixes
|
15
|
+
|
16
|
+
* Fixed test fails caused by 2.6 warnings.
|
17
|
+
Pull Request #297 by hsbt
|
18
|
+
|
19
|
+
==== Enhancements:
|
20
|
+
|
21
|
+
* Rdoc improvements.
|
22
|
+
Pull Request #293 by colby-swandale
|
23
|
+
* Improve multitask performance.
|
24
|
+
Pull Request #273 by jsm
|
25
|
+
* Add alias `prereqs`.
|
26
|
+
Pull Request #268 by take-cheeze
|
27
|
+
|
28
|
+
=== 12.3.1
|
29
|
+
|
30
|
+
==== Bug fixes
|
31
|
+
|
32
|
+
* Support did_you_mean >= v1.2.0 which has a breaking change on formatters.
|
33
|
+
Pull request #262 by FUJI Goro.
|
34
|
+
|
35
|
+
==== Enhancements:
|
36
|
+
|
37
|
+
* Don't run task if it depends on already invoked but failed task.
|
38
|
+
Pull request #252 by Gonzalo Rodriguez.
|
39
|
+
* Make space trimming consistent for all task arguments.
|
40
|
+
Pull request #259 by Gonzalo Rodriguez.
|
41
|
+
* Removes duplicated inclusion of Rake::DSL in tests.
|
42
|
+
Pull request #254 by Gonzalo Rodriguez.
|
43
|
+
* Re-raise a LoadError that didn't come from require in the test loader.
|
44
|
+
Pull request #250 by Dylan Thacker-Smith.
|
45
|
+
|
1
46
|
=== 12.3.0
|
2
47
|
|
3
48
|
==== Compatibility Changes
|
4
49
|
|
5
|
-
* Bump `
|
6
|
-
removed
|
50
|
+
* Bump `required_ruby_version` to Ruby 2.0.0. Rake has already
|
51
|
+
removed support for Ruby 1.9.x.
|
7
52
|
|
8
|
-
|
53
|
+
==== Enhancements:
|
9
54
|
|
10
55
|
* Support `test-bundled-gems` task on ruby core.
|
11
56
|
|
data/README.rdoc
CHANGED
@@ -25,8 +25,8 @@ Rake has the following features:
|
|
25
25
|
|
26
26
|
* A library of prepackaged tasks to make building rakefiles easier. For example,
|
27
27
|
tasks for building tarballs. (Formerly
|
28
|
-
tasks for building RDoc, Gems and publishing to FTP were included in rake but they're now
|
29
|
-
available in RDoc, RubyGems and
|
28
|
+
tasks for building RDoc, Gems, and publishing to FTP were included in rake but they're now
|
29
|
+
available in RDoc, RubyGems, and rake-contrib respectively.)
|
30
30
|
|
31
31
|
* Supports parallel execution of tasks.
|
32
32
|
|
@@ -75,10 +75,10 @@ Type "rake --help" for all available options.
|
|
75
75
|
|
76
76
|
=== Rake Information
|
77
77
|
|
78
|
-
* {Rake command-line}[
|
79
|
-
* {Writing Rakefiles}[
|
80
|
-
* The original {Rake announcement}[
|
81
|
-
* Rake {glossary}[
|
78
|
+
* {Rake command-line}[link:doc/command_line_usage.rdoc]
|
79
|
+
* {Writing Rakefiles}[link:doc/rakefile.rdoc]
|
80
|
+
* The original {Rake announcement}[link:doc/rational.rdoc]
|
81
|
+
* Rake {glossary}[link:doc/glossary.rdoc]
|
82
82
|
|
83
83
|
=== Presentations and Articles about Rake
|
84
84
|
|
@@ -130,7 +130,7 @@ Rake is available under an MIT-style license.
|
|
130
130
|
= Other stuff
|
131
131
|
|
132
132
|
Author:: Jim Weirich <jim.weirich@gmail.com>
|
133
|
-
Requires:: Ruby
|
133
|
+
Requires:: Ruby 2.0.0 or later
|
134
134
|
License:: Copyright Jim Weirich.
|
135
135
|
Released under an MIT-style license. See the MIT-LICENSE
|
136
136
|
file included in the distribution.
|
data/Rakefile
CHANGED
@@ -9,16 +9,19 @@
|
|
9
9
|
lib = File.expand_path("../lib", __FILE__)
|
10
10
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
11
11
|
|
12
|
-
|
13
|
-
require "
|
14
|
-
|
12
|
+
begin
|
13
|
+
require "bundler/gem_tasks"
|
14
|
+
rescue LoadError
|
15
|
+
end
|
15
16
|
|
17
|
+
require "rake/testtask"
|
16
18
|
Rake::TestTask.new(:test) do |t|
|
17
19
|
t.libs << "test"
|
18
20
|
t.verbose = true
|
19
21
|
t.test_files = FileList["test/**/test_*.rb"]
|
20
22
|
end
|
21
23
|
|
24
|
+
require "rdoc/task"
|
22
25
|
RDoc::Task.new do |doc|
|
23
26
|
doc.main = "README.rdoc"
|
24
27
|
doc.title = "Rake -- Ruby Make"
|
@@ -27,7 +30,7 @@ RDoc::Task.new do |doc|
|
|
27
30
|
end
|
28
31
|
|
29
32
|
task ghpages: :rdoc do
|
30
|
-
|
33
|
+
%x[git checkout gh-pages]
|
31
34
|
require "fileutils"
|
32
35
|
FileUtils.rm_rf "/tmp/html"
|
33
36
|
FileUtils.mv "html", "/tmp"
|
data/azure-pipelines.yml
ADDED
data/bin/bundle
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'bundle' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "rubygems"
|
12
|
+
|
13
|
+
m = Module.new do
|
14
|
+
module_function
|
15
|
+
|
16
|
+
def invoked_as_script?
|
17
|
+
File.expand_path($0) == File.expand_path(__FILE__)
|
18
|
+
end
|
19
|
+
|
20
|
+
def env_var_version
|
21
|
+
ENV["BUNDLER_VERSION"]
|
22
|
+
end
|
23
|
+
|
24
|
+
def cli_arg_version
|
25
|
+
return unless invoked_as_script? # don't want to hijack other binstubs
|
26
|
+
return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update`
|
27
|
+
bundler_version = nil
|
28
|
+
update_index = nil
|
29
|
+
ARGV.each_with_index do |a, i|
|
30
|
+
if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
|
31
|
+
bundler_version = a
|
32
|
+
end
|
33
|
+
next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/
|
34
|
+
bundler_version = $1 || ">= 0.a"
|
35
|
+
update_index = i
|
36
|
+
end
|
37
|
+
bundler_version
|
38
|
+
end
|
39
|
+
|
40
|
+
def gemfile
|
41
|
+
gemfile = ENV["BUNDLE_GEMFILE"]
|
42
|
+
return gemfile if gemfile && !gemfile.empty?
|
43
|
+
|
44
|
+
File.expand_path("../../Gemfile", __FILE__)
|
45
|
+
end
|
46
|
+
|
47
|
+
def lockfile
|
48
|
+
lockfile =
|
49
|
+
case File.basename(gemfile)
|
50
|
+
when "gems.rb" then gemfile.sub(/\.rb$/, gemfile)
|
51
|
+
else "#{gemfile}.lock"
|
52
|
+
end
|
53
|
+
File.expand_path(lockfile)
|
54
|
+
end
|
55
|
+
|
56
|
+
def lockfile_version
|
57
|
+
return unless File.file?(lockfile)
|
58
|
+
lockfile_contents = File.read(lockfile)
|
59
|
+
return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
|
60
|
+
Regexp.last_match(1)
|
61
|
+
end
|
62
|
+
|
63
|
+
def bundler_version
|
64
|
+
@bundler_version ||= begin
|
65
|
+
env_var_version || cli_arg_version ||
|
66
|
+
lockfile_version || "#{Gem::Requirement.default}.a"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def load_bundler!
|
71
|
+
ENV["BUNDLE_GEMFILE"] ||= gemfile
|
72
|
+
|
73
|
+
# must dup string for RG < 1.8 compatibility
|
74
|
+
activate_bundler(bundler_version.dup)
|
75
|
+
end
|
76
|
+
|
77
|
+
def activate_bundler(bundler_version)
|
78
|
+
if Gem::Version.correct?(bundler_version) && Gem::Version.new(bundler_version).release < Gem::Version.new("2.0")
|
79
|
+
bundler_version = "< 2"
|
80
|
+
end
|
81
|
+
gem_error = activation_error_handling do
|
82
|
+
gem "bundler", bundler_version
|
83
|
+
end
|
84
|
+
return if gem_error.nil?
|
85
|
+
require_error = activation_error_handling do
|
86
|
+
require "bundler/version"
|
87
|
+
end
|
88
|
+
return if require_error.nil? && Gem::Requirement.new(bundler_version).satisfied_by?(Gem::Version.new(Bundler::VERSION))
|
89
|
+
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}'`"
|
90
|
+
exit 42
|
91
|
+
end
|
92
|
+
|
93
|
+
def activation_error_handling
|
94
|
+
yield
|
95
|
+
nil
|
96
|
+
rescue StandardError, LoadError => e
|
97
|
+
e
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
m.load_bundler!
|
102
|
+
|
103
|
+
if m.invoked_as_script?
|
104
|
+
load Gem.bin_path("bundler", "bundle")
|
105
|
+
end
|
data/bin/rake
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rake' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rake", "rake")
|
data/bin/rdoc
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rdoc' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rdoc", "rdoc")
|
data/bin/rubocop
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rubocop' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rubocop", "rubocop")
|
data/lib/rake/application.rb
CHANGED
@@ -91,7 +91,7 @@ module Rake
|
|
91
91
|
begin
|
92
92
|
args = handle_options argv
|
93
93
|
rescue ArgumentError
|
94
|
-
#
|
94
|
+
# Backward compatibility for capistrano
|
95
95
|
args = handle_options
|
96
96
|
end
|
97
97
|
collect_command_line_tasks(args)
|
@@ -172,7 +172,7 @@ module Rake
|
|
172
172
|
args = []
|
173
173
|
|
174
174
|
begin
|
175
|
-
|
175
|
+
/\s*((?:[^\\,]|\\.)*?)\s*(?:,\s*(.*))?$/ =~ remaining_args
|
176
176
|
|
177
177
|
remaining_args = $2
|
178
178
|
args << $1.gsub(/\\(.)/, '\1')
|
@@ -392,7 +392,7 @@ module Rake
|
|
392
392
|
|
393
393
|
def sort_options(options) # :nodoc:
|
394
394
|
options.sort_by { |opt|
|
395
|
-
opt.select { |o| o =~ /^-/ }.map(&:downcase).sort.reverse
|
395
|
+
opt.select { |o| o.is_a?(String) && o =~ /^-/ }.map(&:downcase).sort.reverse
|
396
396
|
}
|
397
397
|
end
|
398
398
|
private :sort_options
|
@@ -687,7 +687,7 @@ module Rake
|
|
687
687
|
|
688
688
|
def raw_load_rakefile # :nodoc:
|
689
689
|
rakefile, location = find_rakefile_location
|
690
|
-
if (!
|
690
|
+
if (!options.ignore_system) &&
|
691
691
|
(options.load_system || rakefile.nil?) &&
|
692
692
|
system_dir && File.directory?(system_dir)
|
693
693
|
print_rakefile_directory(location)
|
@@ -797,7 +797,7 @@ module Rake
|
|
797
797
|
backtrace.find { |str| str =~ re } || ""
|
798
798
|
end
|
799
799
|
|
800
|
-
def set_default_options
|
800
|
+
def set_default_options # :nodoc:
|
801
801
|
options.always_multitask = false
|
802
802
|
options.backtrace = false
|
803
803
|
options.build_all = false
|
data/lib/rake/cpu_counter.rb
CHANGED
data/lib/rake/dsl_definition.rb
CHANGED
@@ -26,9 +26,9 @@ module Rake
|
|
26
26
|
private
|
27
27
|
|
28
28
|
# :call-seq:
|
29
|
-
# task
|
30
|
-
# task
|
31
|
-
# task
|
29
|
+
# task(task_name)
|
30
|
+
# task(task_name: dependencies)
|
31
|
+
# task(task_name, arguments => dependencies)
|
32
32
|
#
|
33
33
|
# Declare a basic task. The +task_name+ is always the first argument. If
|
34
34
|
# the task name contains a ":" it is defined in that namespace.
|
data/lib/rake/file_list.rb
CHANGED
@@ -294,7 +294,7 @@ module Rake
|
|
294
294
|
matched = 0
|
295
295
|
each do |fn|
|
296
296
|
begin
|
297
|
-
open(fn, "r", *options) do |inf|
|
297
|
+
File.open(fn, "r", *options) do |inf|
|
298
298
|
count = 0
|
299
299
|
inf.each do |line|
|
300
300
|
count += 1
|
@@ -385,7 +385,7 @@ module Rake
|
|
385
385
|
/~$/
|
386
386
|
]
|
387
387
|
DEFAULT_IGNORE_PROCS = [
|
388
|
-
proc { |fn| fn =~ /(^|[\/\\])core$/ && !
|
388
|
+
proc { |fn| fn =~ /(^|[\/\\])core$/ && !File.directory?(fn) }
|
389
389
|
]
|
390
390
|
|
391
391
|
def import(array) # :nodoc:
|
data/lib/rake/file_task.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require "rake/task
|
2
|
+
require "rake/task"
|
3
3
|
require "rake/early_time"
|
4
4
|
|
5
5
|
module Rake
|
@@ -14,7 +14,7 @@ module Rake
|
|
14
14
|
# Is this file task needed? Yes if it doesn't exist, or if its time stamp
|
15
15
|
# is out of date.
|
16
16
|
def needed?
|
17
|
-
!
|
17
|
+
!File.exist?(name) || out_of_date?(timestamp) || @application.options.build_all
|
18
18
|
end
|
19
19
|
|
20
20
|
# Time stamp for file task.
|
data/lib/rake/file_utils.rb
CHANGED
@@ -35,7 +35,7 @@ module FileUtils
|
|
35
35
|
#
|
36
36
|
# # check exit status after command runs
|
37
37
|
# sh %{grep pattern file} do |ok, res|
|
38
|
-
# if !
|
38
|
+
# if !ok
|
39
39
|
# puts "pattern not found (status = #{res.exitstatus})"
|
40
40
|
# end
|
41
41
|
# end
|
@@ -111,7 +111,7 @@ module FileUtils
|
|
111
111
|
# Attempt to do a normal file link, but fall back to a copy if the link
|
112
112
|
# fails.
|
113
113
|
def safe_ln(*args)
|
114
|
-
if !
|
114
|
+
if !LN_SUPPORTED[0]
|
115
115
|
cp(*args)
|
116
116
|
else
|
117
117
|
begin
|
data/lib/rake/multi_task.rb
CHANGED
@@ -5,46 +5,10 @@ module Rake
|
|
5
5
|
# parallel using Ruby threads.
|
6
6
|
#
|
7
7
|
class MultiTask < Task
|
8
|
-
|
9
|
-
# Same as invoke, but explicitly pass a call chain to detect
|
10
|
-
# circular dependencies. This is largely copied from Rake::Task
|
11
|
-
# but has been updated such that if multiple tasks depend on this
|
12
|
-
# one in parallel, they will all fail if the first execution of
|
13
|
-
# this task fails.
|
14
|
-
def invoke_with_call_chain(task_args, invocation_chain)
|
15
|
-
new_chain = Rake::InvocationChain.append(self, invocation_chain)
|
16
|
-
@lock.synchronize do
|
17
|
-
begin
|
18
|
-
if @already_invoked
|
19
|
-
if @invocation_exception
|
20
|
-
if application.options.trace
|
21
|
-
application.trace "** Previous invocation of #{name} failed #{format_trace_flags}"
|
22
|
-
end
|
23
|
-
raise @invocation_exception
|
24
|
-
else
|
25
|
-
return
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
if application.options.trace
|
30
|
-
application.trace "** Invoke #{name} #{format_trace_flags}"
|
31
|
-
end
|
32
|
-
@already_invoked = true
|
33
|
-
|
34
|
-
invoke_prerequisites(task_args, new_chain)
|
35
|
-
execute(task_args) if needed?
|
36
|
-
rescue Exception => ex
|
37
|
-
add_chain_to(ex, new_chain)
|
38
|
-
@invocation_exception = ex
|
39
|
-
raise
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
8
|
private
|
9
|
+
|
45
10
|
def invoke_prerequisites(task_args, invocation_chain) # :nodoc:
|
46
11
|
invoke_prerequisites_concurrently(task_args, invocation_chain)
|
47
12
|
end
|
48
13
|
end
|
49
|
-
|
50
14
|
end
|
data/lib/rake/packagetask.rb
CHANGED
@@ -132,9 +132,7 @@ module Rake
|
|
132
132
|
task package: ["#{package_dir}/#{file}"]
|
133
133
|
file "#{package_dir}/#{file}" =>
|
134
134
|
[package_dir_path] + package_files do
|
135
|
-
chdir(package_dir)
|
136
|
-
sh @tar_command, "#{flag}cvf", file, package_name
|
137
|
-
end
|
135
|
+
chdir(package_dir) { sh @tar_command, "#{flag}cvf", file, package_name }
|
138
136
|
end
|
139
137
|
end
|
140
138
|
end
|
@@ -143,9 +141,7 @@ module Rake
|
|
143
141
|
task package: ["#{package_dir}/#{zip_file}"]
|
144
142
|
file "#{package_dir}/#{zip_file}" =>
|
145
143
|
[package_dir_path] + package_files do
|
146
|
-
chdir(package_dir)
|
147
|
-
sh @zip_command, "-r", zip_file, package_name
|
148
|
-
end
|
144
|
+
chdir(package_dir) { sh @zip_command, "-r", zip_file, package_name }
|
149
145
|
end
|
150
146
|
end
|
151
147
|
|
data/lib/rake/promise.rb
CHANGED
@@ -71,12 +71,12 @@ module Rake
|
|
71
71
|
|
72
72
|
# Do we have a result for the promise
|
73
73
|
def result?
|
74
|
-
|
74
|
+
!@result.equal?(NOT_SET)
|
75
75
|
end
|
76
76
|
|
77
77
|
# Did the promise throw an error
|
78
78
|
def error?
|
79
|
-
|
79
|
+
!@error.equal?(NOT_SET)
|
80
80
|
end
|
81
81
|
|
82
82
|
# Are we done with the promise
|
data/lib/rake/scope.rb
CHANGED
data/lib/rake/task.rb
CHANGED
@@ -15,6 +15,7 @@ module Rake
|
|
15
15
|
class Task
|
16
16
|
# List of prerequisites for a task.
|
17
17
|
attr_reader :prerequisites
|
18
|
+
alias prereqs prerequisites
|
18
19
|
|
19
20
|
# List of actions attached to a task.
|
20
21
|
attr_reader :actions
|
@@ -103,6 +104,7 @@ module Rake
|
|
103
104
|
@scope = app.current_scope
|
104
105
|
@arg_names = nil
|
105
106
|
@locations = []
|
107
|
+
@invocation_exception = nil
|
106
108
|
end
|
107
109
|
|
108
110
|
# Enhance a task with prerequisites or actions. Returns self.
|
@@ -183,20 +185,39 @@ module Rake
|
|
183
185
|
|
184
186
|
# Same as invoke, but explicitly pass a call chain to detect
|
185
187
|
# circular dependencies.
|
186
|
-
|
187
|
-
|
188
|
+
#
|
189
|
+
# If multiple tasks depend on this
|
190
|
+
# one in parallel, they will all fail if the first execution of
|
191
|
+
# this task fails.
|
192
|
+
def invoke_with_call_chain(task_args, invocation_chain)
|
193
|
+
new_chain = Rake::InvocationChain.append(self, invocation_chain)
|
188
194
|
@lock.synchronize do
|
189
|
-
|
190
|
-
application.trace
|
195
|
+
begin
|
196
|
+
if application.options.trace
|
197
|
+
application.trace "** Invoke #{name} #{format_trace_flags}"
|
198
|
+
end
|
199
|
+
|
200
|
+
if @already_invoked
|
201
|
+
if @invocation_exception
|
202
|
+
if application.options.trace
|
203
|
+
application.trace "** Previous invocation of #{name} failed #{format_trace_flags}"
|
204
|
+
end
|
205
|
+
raise @invocation_exception
|
206
|
+
else
|
207
|
+
return
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
@already_invoked = true
|
212
|
+
|
213
|
+
invoke_prerequisites(task_args, new_chain)
|
214
|
+
execute(task_args) if needed?
|
215
|
+
rescue Exception => ex
|
216
|
+
add_chain_to(ex, new_chain)
|
217
|
+
@invocation_exception = ex
|
218
|
+
raise ex
|
191
219
|
end
|
192
|
-
return if @already_invoked
|
193
|
-
@already_invoked = true
|
194
|
-
invoke_prerequisites(task_args, new_chain)
|
195
|
-
execute(task_args) if needed?
|
196
220
|
end
|
197
|
-
rescue Exception => ex
|
198
|
-
add_chain_to(ex, new_chain)
|
199
|
-
raise ex
|
200
221
|
end
|
201
222
|
protected :invoke_with_call_chain
|
202
223
|
|
@@ -227,7 +248,8 @@ module Rake
|
|
227
248
|
r.invoke_with_call_chain(prereq_args, invocation_chain)
|
228
249
|
end
|
229
250
|
end
|
230
|
-
|
251
|
+
# Iterate in reverse to improve performance related to thread waiting and switching
|
252
|
+
futures.reverse_each(&:value)
|
231
253
|
end
|
232
254
|
|
233
255
|
# Format the trace flags for display.
|
@@ -267,7 +289,7 @@ module Rake
|
|
267
289
|
def add_description(description)
|
268
290
|
return unless description
|
269
291
|
comment = description.strip
|
270
|
-
add_comment(comment) if comment && !
|
292
|
+
add_comment(comment) if comment && !comment.empty?
|
271
293
|
end
|
272
294
|
|
273
295
|
def comment=(comment) # :nodoc:
|
data/lib/rake/task_manager.rb
CHANGED
@@ -60,17 +60,22 @@ module Rake
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def generate_message_for_undefined_task(task_name)
|
63
|
-
message = "Don't know how to build task '#{task_name}'
|
63
|
+
message = "Don't know how to build task '#{task_name}' "\
|
64
|
+
"(See the list of available tasks with `#{Rake.application.name} --tasks`)"
|
65
|
+
message + generate_did_you_mean_suggestions(task_name)
|
66
|
+
end
|
64
67
|
|
65
|
-
|
66
|
-
|
67
|
-
suggestions = ::DidYouMean::SpellChecker.new(dictionary: @tasks.keys).correct(task_name.to_s)
|
68
|
-
::DidYouMean::Formatter.new(suggestions).to_s
|
69
|
-
else
|
70
|
-
""
|
71
|
-
end
|
68
|
+
def generate_did_you_mean_suggestions(task_name)
|
69
|
+
return "" unless defined?(::DidYouMean::SpellChecker)
|
72
70
|
|
73
|
-
|
71
|
+
suggestions = ::DidYouMean::SpellChecker.new(dictionary: @tasks.keys).correct(task_name.to_s)
|
72
|
+
if ::DidYouMean.respond_to?(:formatter)# did_you_mean v1.2.0 or later
|
73
|
+
::DidYouMean.formatter.message_for(suggestions)
|
74
|
+
elsif defined?(::DidYouMean::Formatter) # before did_you_mean v1.2.0
|
75
|
+
::DidYouMean::Formatter.new(suggestions).to_s
|
76
|
+
else
|
77
|
+
""
|
78
|
+
end
|
74
79
|
end
|
75
80
|
|
76
81
|
def synthesize_file_task(task_name) # :nodoc:
|
data/lib/rake/version.rb
CHANGED
data/rake.gemspec
CHANGED
@@ -5,7 +5,6 @@ require 'rake/version'
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "rake".freeze
|
7
7
|
s.version = Rake::VERSION
|
8
|
-
s.date = "2017-10-25"
|
9
8
|
s.authors = ["Hiroshi SHIBATA".freeze, "Eric Hodel".freeze, "Jim Weirich".freeze]
|
10
9
|
s.email = ["hsbt@ruby-lang.org".freeze, "drbrain@segment7.net".freeze, "".freeze]
|
11
10
|
|
@@ -24,8 +23,8 @@ Rake has the following features:
|
|
24
23
|
s.homepage = "https://github.com/ruby/rake".freeze
|
25
24
|
s.licenses = ["MIT".freeze]
|
26
25
|
|
27
|
-
s.files =
|
28
|
-
%w[.rubocop.yml .travis.yml appveyor.yml]
|
26
|
+
s.files = %x[git ls-files -z].split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } -
|
27
|
+
%w[.rubocop.yml .gitignore .travis.yml appveyor.yml]
|
29
28
|
s.bindir = "exe"
|
30
29
|
s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
30
|
s.require_paths = ["lib".freeze]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 12.3.
|
4
|
+
version: 12.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiroshi SHIBATA
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2019-07-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -101,14 +101,18 @@ executables:
|
|
101
101
|
extensions: []
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
|
-
- ".gitignore"
|
105
104
|
- CONTRIBUTING.rdoc
|
106
105
|
- Gemfile
|
107
106
|
- History.rdoc
|
108
107
|
- MIT-LICENSE
|
109
108
|
- README.rdoc
|
110
109
|
- Rakefile
|
110
|
+
- azure-pipelines.yml
|
111
|
+
- bin/bundle
|
111
112
|
- bin/console
|
113
|
+
- bin/rake
|
114
|
+
- bin/rdoc
|
115
|
+
- bin/rubocop
|
112
116
|
- bin/setup
|
113
117
|
- doc/command_line_usage.rdoc
|
114
118
|
- doc/example/Rakefile1
|
@@ -188,8 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
188
192
|
- !ruby/object:Gem::Version
|
189
193
|
version: 1.3.2
|
190
194
|
requirements: []
|
191
|
-
|
192
|
-
rubygems_version: 2.7.2
|
195
|
+
rubygems_version: 3.0.3
|
193
196
|
signing_key:
|
194
197
|
specification_version: 4
|
195
198
|
summary: Rake is a Make-like program implemented in Ruby
|