rake 12.0.0.beta1 → 13.0.0.pre.1

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.
Files changed (65) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/macos.yml +22 -0
  3. data/.github/workflows/ubuntu-rvm.yml +28 -0
  4. data/.github/workflows/ubuntu.yml +20 -0
  5. data/.github/workflows/windows.yml +20 -0
  6. data/CONTRIBUTING.rdoc +11 -4
  7. data/Gemfile +7 -0
  8. data/History.rdoc +124 -11
  9. data/README.rdoc +7 -8
  10. data/Rakefile +7 -4
  11. data/bin/bundle +105 -0
  12. data/bin/rake +29 -0
  13. data/bin/rdoc +29 -0
  14. data/bin/rubocop +29 -0
  15. data/doc/jamis.rb +1 -0
  16. data/doc/rakefile.rdoc +1 -1
  17. data/lib/rake.rb +1 -0
  18. data/lib/rake/application.rb +54 -15
  19. data/lib/rake/backtrace.rb +1 -0
  20. data/lib/rake/clean.rb +4 -3
  21. data/lib/rake/cloneable.rb +1 -0
  22. data/lib/rake/cpu_counter.rb +2 -1
  23. data/lib/rake/default_loader.rb +1 -0
  24. data/lib/rake/dsl_definition.rb +4 -3
  25. data/lib/rake/early_time.rb +1 -0
  26. data/lib/rake/ext/core.rb +1 -0
  27. data/lib/rake/ext/string.rb +2 -1
  28. data/lib/rake/file_creation_task.rb +2 -1
  29. data/lib/rake/file_list.rb +5 -4
  30. data/lib/rake/file_task.rb +11 -3
  31. data/lib/rake/file_utils.rb +10 -12
  32. data/lib/rake/file_utils_ext.rb +7 -17
  33. data/lib/rake/invocation_chain.rb +1 -0
  34. data/lib/rake/invocation_exception_mixin.rb +1 -0
  35. data/lib/rake/late_time.rb +1 -0
  36. data/lib/rake/linked_list.rb +1 -0
  37. data/lib/rake/loaders/makefile.rb +1 -0
  38. data/lib/rake/multi_task.rb +2 -37
  39. data/lib/rake/name_space.rb +1 -0
  40. data/lib/rake/packagetask.rb +18 -6
  41. data/lib/rake/phony.rb +1 -0
  42. data/lib/rake/private_reader.rb +1 -0
  43. data/lib/rake/promise.rb +3 -2
  44. data/lib/rake/pseudo_status.rb +1 -0
  45. data/lib/rake/rake_module.rb +29 -0
  46. data/lib/rake/rake_test_loader.rb +17 -11
  47. data/lib/rake/rule_recursion_overflow_error.rb +1 -0
  48. data/lib/rake/scope.rb +2 -1
  49. data/lib/rake/task.rb +59 -16
  50. data/lib/rake/task_argument_error.rb +1 -0
  51. data/lib/rake/task_arguments.rb +2 -0
  52. data/lib/rake/task_manager.rb +42 -17
  53. data/lib/rake/tasklib.rb +1 -0
  54. data/lib/rake/testtask.rb +3 -1
  55. data/lib/rake/thread_history_display.rb +1 -0
  56. data/lib/rake/thread_pool.rb +1 -0
  57. data/lib/rake/trace_output.rb +1 -0
  58. data/lib/rake/version.rb +2 -1
  59. data/lib/rake/win32.rb +1 -0
  60. data/rake.gemspec +4 -7
  61. metadata +13 -52
  62. data/.gitignore +0 -14
  63. data/.rubocop.yml +0 -57
  64. data/.travis.yml +0 -21
  65. data/appveyor.yml +0 -21
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
3
 
3
4
  # Error indicating an ill-formed task declaration.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
3
 
3
4
  ##
@@ -87,6 +88,7 @@ module Rake
87
88
  def has_key?(key)
88
89
  @hash.has_key?(key)
89
90
  end
91
+ alias key? has_key?
90
92
 
91
93
  def fetch(*args, &block)
92
94
  @hash.fetch(*args, &block)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
3
 
3
4
  # The TaskManager module is a mixin for managing tasks.
@@ -14,13 +15,13 @@ module Rake
14
15
  end
15
16
 
16
17
  def create_rule(*args, &block) # :nodoc:
17
- pattern, args, deps = resolve_args(args)
18
+ pattern, args, deps, order_only = resolve_args(args)
18
19
  pattern = Regexp.new(Regexp.quote(pattern) + "$") if String === pattern
19
- @rules << [pattern, args, deps, block]
20
+ @rules << [pattern, args, deps, order_only, block]
20
21
  end
21
22
 
22
23
  def define_task(task_class, *args, &block) # :nodoc:
23
- task_name, arg_names, deps = resolve_args(args)
24
+ task_name, arg_names, deps, order_only = resolve_args(args)
24
25
 
25
26
  original_scope = @scope
26
27
  if String === task_name and
@@ -30,15 +31,15 @@ module Rake
30
31
  end
31
32
 
32
33
  task_name = task_class.scope_name(@scope, task_name)
33
- deps = [deps] unless deps.respond_to?(:to_ary)
34
- deps = deps.map { |d| Rake.from_pathname(d).to_s }
35
34
  task = intern(task_class, task_name)
36
35
  task.set_arg_names(arg_names) unless arg_names.empty?
37
36
  if Rake::TaskManager.record_task_metadata
38
37
  add_location(task)
39
38
  task.add_description(get_description(task))
40
39
  end
41
- task.enhance(deps, &block)
40
+ task.enhance(Task.format_deps(deps), &block)
41
+ task | order_only unless order_only.nil?
42
+ task
42
43
  ensure
43
44
  @scope = original_scope
44
45
  end
@@ -55,7 +56,26 @@ module Rake
55
56
  self.lookup(task_name, scopes) or
56
57
  enhance_with_matching_rule(task_name) or
57
58
  synthesize_file_task(task_name) or
58
- fail "Don't know how to build task '#{task_name}' (see --tasks)"
59
+ fail generate_message_for_undefined_task(task_name)
60
+ end
61
+
62
+ def generate_message_for_undefined_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
67
+
68
+ def generate_did_you_mean_suggestions(task_name)
69
+ return "" unless defined?(::DidYouMean::SpellChecker)
70
+
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
59
79
  end
60
80
 
61
81
  def synthesize_file_task(task_name) # :nodoc:
@@ -89,7 +109,7 @@ module Rake
89
109
  else
90
110
  arg_names = args
91
111
  end
92
- [task_name, arg_names, []]
112
+ [task_name, arg_names, [], nil]
93
113
  end
94
114
  private :resolve_args_without_dependencies
95
115
 
@@ -102,7 +122,10 @@ module Rake
102
122
  # task :t, [a] => [:d]
103
123
  #
104
124
  def resolve_args_with_dependencies(args, hash) # :nodoc:
105
- fail "Task Argument Error" if hash.size != 1
125
+ fail "Task Argument Error" if
126
+ hash.size != 1 &&
127
+ (hash.size != 2 || !hash.key?(:order_only))
128
+ order_only = hash.delete(:order_only)
106
129
  key, value = hash.map { |k, v| [k, v] }.first
107
130
  if args.empty?
108
131
  task_name = key
@@ -114,7 +137,7 @@ module Rake
114
137
  deps = value
115
138
  end
116
139
  deps = [deps] unless deps.respond_to?(:to_ary)
117
- [task_name, arg_names, deps]
140
+ [task_name, arg_names, deps, order_only]
118
141
  end
119
142
  private :resolve_args_with_dependencies
120
143
 
@@ -125,9 +148,10 @@ module Rake
125
148
  def enhance_with_matching_rule(task_name, level=0)
126
149
  fail Rake::RuleRecursionOverflowError,
127
150
  "Rule Recursion Too Deep" if level >= 16
128
- @rules.each do |pattern, args, extensions, block|
129
- if pattern.match(task_name)
130
- task = attempt_rule(task_name, args, extensions, block, level)
151
+ @rules.each do |pattern, args, extensions, order_only, block|
152
+ if pattern && pattern.match(task_name)
153
+ task = attempt_rule(task_name, pattern, args, extensions, block, level)
154
+ task | order_only unless order_only.nil?
131
155
  return task if task
132
156
  end
133
157
  end
@@ -241,8 +265,8 @@ module Rake
241
265
  end
242
266
 
243
267
  # Attempt to create a rule given the list of prerequisites.
244
- def attempt_rule(task_name, args, extensions, block, level)
245
- sources = make_sources(task_name, extensions)
268
+ def attempt_rule(task_name, task_pattern, args, extensions, block, level)
269
+ sources = make_sources(task_name, task_pattern, extensions)
246
270
  prereqs = sources.map { |source|
247
271
  trace_rule level, "Attempting Rule #{task_name} => #{source}"
248
272
  if File.exist?(source) || Rake::Task.task_defined?(source)
@@ -263,7 +287,7 @@ module Rake
263
287
 
264
288
  # Make a list of sources from the list of file name extensions /
265
289
  # translation procs.
266
- def make_sources(task_name, extensions)
290
+ def make_sources(task_name, task_pattern, extensions)
267
291
  result = extensions.map { |ext|
268
292
  case ext
269
293
  when /%/
@@ -271,7 +295,8 @@ module Rake
271
295
  when %r{/}
272
296
  ext
273
297
  when /^\./
274
- task_name.ext(ext)
298
+ source = task_name.sub(task_pattern, ext)
299
+ source == ext ? task_name.ext(ext) : source
275
300
  when String
276
301
  ext
277
302
  when Proc, Method
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require "rake"
2
3
 
3
4
  module Rake
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require "rake"
2
3
  require "rake/tasklib"
3
4
 
@@ -50,6 +51,7 @@ module Rake
50
51
 
51
52
  # Request that the tests be run with the warning flag set.
52
53
  # E.g. warning=true implies "ruby -w" used to run the tests.
54
+ # (default is true)
53
55
  attr_accessor :warning
54
56
 
55
57
  # Glob pattern to match test files. (default is 'test/test*.rb')
@@ -119,7 +121,7 @@ module Rake
119
121
  status = "Command failed with status (#{status.exitstatus})"
120
122
  details = ": [ruby #{args}]"
121
123
  message =
122
- if Rake.application.options.trace or @verbose then
124
+ if Rake.application.options.trace or @verbose
123
125
  status + details
124
126
  else
125
127
  status
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require "rake/private_reader"
2
3
 
3
4
  module Rake
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require "set"
2
3
 
3
4
  require "rake/promise"
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
3
  module TraceOutput # :nodoc: all
3
4
 
@@ -1,5 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
- VERSION = "12.0.0.beta1"
3
+ VERSION = "13.0.0.pre.1"
3
4
 
4
5
  module Version # :nodoc: all
5
6
  MAJOR, MINOR, BUILD, *OTHER = Rake::VERSION.split "."
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require "rbconfig"
2
3
 
3
4
  module Rake
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
2
3
  require 'rake/version'
3
4
 
4
5
  Gem::Specification.new do |s|
5
6
  s.name = "rake".freeze
6
7
  s.version = Rake::VERSION
7
- s.date = "2016-06-12"
8
8
  s.authors = ["Hiroshi SHIBATA".freeze, "Eric Hodel".freeze, "Jim Weirich".freeze]
9
9
  s.email = ["hsbt@ruby-lang.org".freeze, "drbrain@segment7.net".freeze, "".freeze]
10
10
 
@@ -23,17 +23,14 @@ Rake has the following features:
23
23
  s.homepage = "https://github.com/ruby/rake".freeze
24
24
  s.licenses = ["MIT".freeze]
25
25
 
26
- s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
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]
27
28
  s.bindir = "exe"
28
29
  s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
30
  s.require_paths = ["lib".freeze]
30
31
 
31
- s.required_ruby_version = Gem::Requirement.new(">= 1.9.3".freeze)
32
+ s.required_ruby_version = Gem::Requirement.new(">= 2.2".freeze)
32
33
  s.rubygems_version = "2.6.1".freeze
33
34
  s.required_rubygems_version = Gem::Requirement.new(">= 1.3.2".freeze)
34
35
  s.rdoc_options = ["--main".freeze, "README.rdoc".freeze]
35
-
36
- s.add_development_dependency(%q<bundler>.freeze)
37
- s.add_development_dependency(%q<minitest>.freeze)
38
- s.add_development_dependency(%q<rdoc>.freeze, ["~> 5.0.0.beta2"])
39
36
  end
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.0.0.beta1
4
+ version: 13.0.0.pre.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroshi SHIBATA
@@ -10,50 +10,8 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2016-06-12 00:00:00.000000000 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: bundler
17
- requirement: !ruby/object:Gem::Requirement
18
- requirements:
19
- - - ">="
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :development
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- version: '0'
29
- - !ruby/object:Gem::Dependency
30
- name: minitest
31
- requirement: !ruby/object:Gem::Requirement
32
- requirements:
33
- - - ">="
34
- - !ruby/object:Gem::Version
35
- version: '0'
36
- type: :development
37
- prerelease: false
38
- version_requirements: !ruby/object:Gem::Requirement
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- version: '0'
43
- - !ruby/object:Gem::Dependency
44
- name: rdoc
45
- requirement: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: 5.0.0.beta2
50
- type: :development
51
- prerelease: false
52
- version_requirements: !ruby/object:Gem::Requirement
53
- requirements:
54
- - - "~>"
55
- - !ruby/object:Gem::Version
56
- version: 5.0.0.beta2
13
+ date: 2019-09-09 00:00:00.000000000 Z
14
+ dependencies: []
57
15
  description: |
58
16
  Rake is a Make-like program implemented in Ruby. Tasks and dependencies are
59
17
  specified in standard Ruby syntax.
@@ -73,17 +31,21 @@ executables:
73
31
  extensions: []
74
32
  extra_rdoc_files: []
75
33
  files:
76
- - ".gitignore"
77
- - ".rubocop.yml"
78
- - ".travis.yml"
34
+ - ".github/workflows/macos.yml"
35
+ - ".github/workflows/ubuntu-rvm.yml"
36
+ - ".github/workflows/ubuntu.yml"
37
+ - ".github/workflows/windows.yml"
79
38
  - CONTRIBUTING.rdoc
80
39
  - Gemfile
81
40
  - History.rdoc
82
41
  - MIT-LICENSE
83
42
  - README.rdoc
84
43
  - Rakefile
85
- - appveyor.yml
44
+ - bin/bundle
86
45
  - bin/console
46
+ - bin/rake
47
+ - bin/rdoc
48
+ - bin/rubocop
87
49
  - bin/setup
88
50
  - doc/command_line_usage.rdoc
89
51
  - doc/example/Rakefile1
@@ -156,15 +118,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
156
118
  requirements:
157
119
  - - ">="
158
120
  - !ruby/object:Gem::Version
159
- version: 1.9.3
121
+ version: '2.2'
160
122
  required_rubygems_version: !ruby/object:Gem::Requirement
161
123
  requirements:
162
124
  - - ">="
163
125
  - !ruby/object:Gem::Version
164
126
  version: 1.3.2
165
127
  requirements: []
166
- rubyforge_project:
167
- rubygems_version: 2.6.8
128
+ rubygems_version: 3.1.0.pre1
168
129
  signing_key:
169
130
  specification_version: 4
170
131
  summary: Rake is a Make-like program implemented in Ruby
data/.gitignore DELETED
@@ -1,14 +0,0 @@
1
- *.bak
2
- *.rbc
3
- *.swp
4
- *~
5
- .#*
6
- .DS_Store
7
- .idea
8
- .rbx
9
- /.rdoc
10
- /TAGS
11
- /coverage
12
- /html
13
- /pkg
14
- Gemfile.lock
@@ -1,57 +0,0 @@
1
- AllCops:
2
- TargetRubyVersion: 2.3
3
- DisabledByDefault: true
4
- Exclude:
5
- - doc/**/*.rb
6
- - rake.gemspec
7
-
8
- Style/LineLength:
9
- Enabled: true
10
- Max: 120
11
-
12
- Style/HashSyntax:
13
- Enabled: true
14
-
15
- Style/StringLiterals:
16
- Enabled: true
17
- EnforcedStyle: double_quotes
18
-
19
- Style/IndentationWidth:
20
- Enabled: true
21
-
22
- Style/Tab:
23
- Enabled: true
24
-
25
- Style/EmptyLines:
26
- Enabled: true
27
-
28
- Style/TrailingBlankLines:
29
- Enabled: true
30
-
31
- Style/TrailingWhitespace:
32
- Enabled: true
33
-
34
- Style/SpaceBeforeBlockBraces:
35
- Enabled: true
36
-
37
- Style/SpaceInsideBlockBraces:
38
- Enabled: true
39
-
40
- Style/SpaceInsideHashLiteralBraces:
41
- Enabled: true
42
-
43
- Style/CaseIndentation:
44
- Enabled: true
45
-
46
- Style/MultilineIfThen:
47
- Enabled: true
48
-
49
- Style/MethodDefParentheses:
50
- Enabled: true
51
-
52
- Style/BracesAroundHashParameters:
53
- Enabled: true
54
-
55
- Lint/EndAlignment:
56
- Enabled: true
57
- AlignWith: variable
@@ -1,21 +0,0 @@
1
- language: ruby
2
- sudo: false
3
- rvm:
4
- - 1.9.3
5
- - 2.0.0
6
- - 2.1.10
7
- - 2.2.5
8
- - 2.3.1
9
- - ruby-head
10
- - jruby-1.7.20
11
- - jruby-9.1.5.0
12
- - jruby-head
13
- before_install:
14
- - gem install bundler --no-document -v '~> 1.13.3'
15
- before_script:
16
- - unset JRUBY_OPTS
17
- script: ruby -Ilib exe/rake
18
- notifications:
19
- email:
20
- - hsbt@ruby-lang.org
21
- - drbrain@segment7.net