rake 12.0.0.beta1 → 13.0.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
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