vergissberlin 0.0.9 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. checksums.yaml +4 -4
  2. data/lib/vergissberlin/version.rb +1 -1
  3. data/test/cases/version_case.rb +26 -0
  4. data/test/rest_spec.rb +12 -0
  5. data/test/suites/suite_test.rb +12 -0
  6. data/test/utils.rb +13 -0
  7. metadata +83 -134
  8. data/.gitignore +0 -17
  9. data/.travis.yml +0 -7
  10. data/Gemfile +0 -4
  11. data/LICENSE.txt +0 -22
  12. data/Rakefile +0 -10
  13. data/test/test_test.rb +0 -5
  14. data/test/version_test.rb +0 -12
  15. data/vendor/bundle/bin/rake +0 -23
  16. data/vendor/bundle/bin/vergissberlin +0 -23
  17. data/vendor/bundle/build_info/capistrano_colors-0.5.5.info +0 -1
  18. data/vendor/bundle/build_info/rake-10.0.4.info +0 -1
  19. data/vendor/bundle/gems/capistrano_colors-0.5.5/Manifest +0 -7
  20. data/vendor/bundle/gems/capistrano_colors-0.5.5/README.rdoc +0 -130
  21. data/vendor/bundle/gems/capistrano_colors-0.5.5/Rakefile +0 -1
  22. data/vendor/bundle/gems/capistrano_colors-0.5.5/capistrano_colors.gemspec +0 -33
  23. data/vendor/bundle/gems/capistrano_colors-0.5.5/lib/capistrano_colors/configuration.rb +0 -70
  24. data/vendor/bundle/gems/capistrano_colors-0.5.5/lib/capistrano_colors/logger.rb +0 -72
  25. data/vendor/bundle/gems/capistrano_colors-0.5.5/lib/capistrano_colors.rb +0 -18
  26. data/vendor/bundle/gems/rake-10.0.4/CHANGES +0 -530
  27. data/vendor/bundle/gems/rake-10.0.4/MIT-LICENSE +0 -21
  28. data/vendor/bundle/gems/rake-10.0.4/README.rdoc +0 -187
  29. data/vendor/bundle/gems/rake-10.0.4/Rakefile +0 -375
  30. data/vendor/bundle/gems/rake-10.0.4/TODO +0 -21
  31. data/vendor/bundle/gems/rake-10.0.4/bin/rake +0 -33
  32. data/vendor/bundle/gems/rake-10.0.4/install.rb +0 -90
  33. data/vendor/bundle/gems/rake-10.0.4/lib/rake/alt_system.rb +0 -109
  34. data/vendor/bundle/gems/rake-10.0.4/lib/rake/application.rb +0 -681
  35. data/vendor/bundle/gems/rake-10.0.4/lib/rake/backtrace.rb +0 -19
  36. data/vendor/bundle/gems/rake-10.0.4/lib/rake/clean.rb +0 -32
  37. data/vendor/bundle/gems/rake-10.0.4/lib/rake/cloneable.rb +0 -16
  38. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/compositepublisher.rb +0 -21
  39. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/ftptools.rb +0 -151
  40. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/publisher.rb +0 -73
  41. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/rubyforgepublisher.rb +0 -16
  42. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/sshpublisher.rb +0 -50
  43. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/sys.rb +0 -1
  44. data/vendor/bundle/gems/rake-10.0.4/lib/rake/default_loader.rb +0 -10
  45. data/vendor/bundle/gems/rake-10.0.4/lib/rake/dsl_definition.rb +0 -156
  46. data/vendor/bundle/gems/rake-10.0.4/lib/rake/early_time.rb +0 -18
  47. data/vendor/bundle/gems/rake-10.0.4/lib/rake/ext/core.rb +0 -27
  48. data/vendor/bundle/gems/rake-10.0.4/lib/rake/ext/module.rb +0 -0
  49. data/vendor/bundle/gems/rake-10.0.4/lib/rake/ext/string.rb +0 -168
  50. data/vendor/bundle/gems/rake-10.0.4/lib/rake/ext/time.rb +0 -15
  51. data/vendor/bundle/gems/rake-10.0.4/lib/rake/file_creation_task.rb +0 -24
  52. data/vendor/bundle/gems/rake-10.0.4/lib/rake/file_list.rb +0 -410
  53. data/vendor/bundle/gems/rake-10.0.4/lib/rake/file_task.rb +0 -47
  54. data/vendor/bundle/gems/rake-10.0.4/lib/rake/file_utils.rb +0 -114
  55. data/vendor/bundle/gems/rake-10.0.4/lib/rake/file_utils_ext.rb +0 -143
  56. data/vendor/bundle/gems/rake-10.0.4/lib/rake/gempackagetask.rb +0 -1
  57. data/vendor/bundle/gems/rake-10.0.4/lib/rake/invocation_chain.rb +0 -51
  58. data/vendor/bundle/gems/rake-10.0.4/lib/rake/invocation_exception_mixin.rb +0 -16
  59. data/vendor/bundle/gems/rake-10.0.4/lib/rake/loaders/makefile.rb +0 -40
  60. data/vendor/bundle/gems/rake-10.0.4/lib/rake/multi_task.rb +0 -13
  61. data/vendor/bundle/gems/rake-10.0.4/lib/rake/name_space.rb +0 -25
  62. data/vendor/bundle/gems/rake-10.0.4/lib/rake/packagetask.rb +0 -185
  63. data/vendor/bundle/gems/rake-10.0.4/lib/rake/pathmap.rb +0 -1
  64. data/vendor/bundle/gems/rake-10.0.4/lib/rake/phony.rb +0 -15
  65. data/vendor/bundle/gems/rake-10.0.4/lib/rake/private_reader.rb +0 -20
  66. data/vendor/bundle/gems/rake-10.0.4/lib/rake/promise.rb +0 -99
  67. data/vendor/bundle/gems/rake-10.0.4/lib/rake/pseudo_status.rb +0 -24
  68. data/vendor/bundle/gems/rake-10.0.4/lib/rake/rake_module.rb +0 -37
  69. data/vendor/bundle/gems/rake-10.0.4/lib/rake/rake_test_loader.rb +0 -22
  70. data/vendor/bundle/gems/rake-10.0.4/lib/rake/rdoctask.rb +0 -1
  71. data/vendor/bundle/gems/rake-10.0.4/lib/rake/ruby182_test_unit_fix.rb +0 -25
  72. data/vendor/bundle/gems/rake-10.0.4/lib/rake/rule_recursion_overflow_error.rb +0 -20
  73. data/vendor/bundle/gems/rake-10.0.4/lib/rake/runtest.rb +0 -22
  74. data/vendor/bundle/gems/rake-10.0.4/lib/rake/task.rb +0 -368
  75. data/vendor/bundle/gems/rake-10.0.4/lib/rake/task_argument_error.rb +0 -7
  76. data/vendor/bundle/gems/rake-10.0.4/lib/rake/task_arguments.rb +0 -78
  77. data/vendor/bundle/gems/rake-10.0.4/lib/rake/task_manager.rb +0 -296
  78. data/vendor/bundle/gems/rake-10.0.4/lib/rake/tasklib.rb +0 -22
  79. data/vendor/bundle/gems/rake-10.0.4/lib/rake/testtask.rb +0 -198
  80. data/vendor/bundle/gems/rake-10.0.4/lib/rake/thread_history_display.rb +0 -48
  81. data/vendor/bundle/gems/rake-10.0.4/lib/rake/thread_pool.rb +0 -155
  82. data/vendor/bundle/gems/rake-10.0.4/lib/rake/trace_output.rb +0 -22
  83. data/vendor/bundle/gems/rake-10.0.4/lib/rake/version.rb +0 -13
  84. data/vendor/bundle/gems/rake-10.0.4/lib/rake/win32.rb +0 -55
  85. data/vendor/bundle/gems/rake-10.0.4/lib/rake.rb +0 -71
  86. data/vendor/bundle/gems/rake-10.0.4/test/file_creation.rb +0 -34
  87. data/vendor/bundle/gems/rake-10.0.4/test/helper.rb +0 -562
  88. data/vendor/bundle/gems/rake-10.0.4/test/test_private_reader.rb +0 -42
  89. data/vendor/bundle/gems/rake-10.0.4/test/test_rake.rb +0 -40
  90. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_application.rb +0 -515
  91. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_application_options.rb +0 -455
  92. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_backtrace.rb +0 -89
  93. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_clean.rb +0 -14
  94. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_definitions.rb +0 -80
  95. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_directory_task.rb +0 -57
  96. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_dsl.rb +0 -40
  97. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_early_time.rb +0 -31
  98. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_extension.rb +0 -59
  99. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_file_creation_task.rb +0 -56
  100. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_file_list.rb +0 -628
  101. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_file_list_path_map.rb +0 -8
  102. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_file_task.rb +0 -122
  103. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_file_utils.rb +0 -305
  104. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_ftp_file.rb +0 -59
  105. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_functional.rb +0 -496
  106. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_invocation_chain.rb +0 -52
  107. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_makefile_loader.rb +0 -44
  108. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_multi_task.rb +0 -59
  109. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_name_space.rb +0 -43
  110. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_package_task.rb +0 -79
  111. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_path_map.rb +0 -157
  112. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_path_map_explode.rb +0 -34
  113. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_path_map_partial.rb +0 -18
  114. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_pseudo_status.rb +0 -21
  115. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_rake_test_loader.rb +0 -21
  116. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_reduce_compat.rb +0 -30
  117. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_require.rb +0 -40
  118. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_rules.rb +0 -327
  119. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task.rb +0 -340
  120. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_argument_parsing.rb +0 -103
  121. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_arguments.rb +0 -88
  122. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_lib.rb +0 -9
  123. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_manager.rb +0 -157
  124. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_manager_argument_resolution.rb +0 -19
  125. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_with_arguments.rb +0 -171
  126. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_test_task.rb +0 -120
  127. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_thread_pool.rb +0 -122
  128. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_top_level_functions.rb +0 -71
  129. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_win32.rb +0 -72
  130. data/vendor/bundle/gems/rake-10.0.4/test/test_thread_history_display.rb +0 -91
  131. data/vendor/bundle/gems/rake-10.0.4/test/test_trace_output.rb +0 -50
  132. data/vendor/bundle/specifications/capistrano_colors-0.5.5.gemspec +0 -32
  133. data/vendor/bundle/specifications/rake-10.0.4.gemspec +0 -35
  134. data/vergissberlin.gemspec +0 -26
@@ -1,99 +0,0 @@
1
- module Rake
2
-
3
- # A Promise object represents a promise to do work (a chore) in the
4
- # future. The promise is created with a block and a list of
5
- # arguments for the block. Calling value will return the value of
6
- # the promised chore.
7
- #
8
- # Used by ThreadPool.
9
- #
10
- class Promise # :nodoc: all
11
- NOT_SET = Object.new.freeze # :nodoc:
12
-
13
- attr_accessor :recorder
14
-
15
- # Create a promise to do the chore specified by the block.
16
- def initialize(args, &block)
17
- @mutex = Mutex.new
18
- @result = NOT_SET
19
- @error = NOT_SET
20
- @args = args
21
- @block = block
22
- end
23
-
24
- # Return the value of this promise.
25
- #
26
- # If the promised chore is not yet complete, then do the work
27
- # synchronously. We will wait.
28
- def value
29
- unless complete?
30
- stat :sleeping_on, :item_id => object_id
31
- @mutex.synchronize do
32
- stat :has_lock_on, :item_id => object_id
33
- chore
34
- stat :releasing_lock_on, :item_id => object_id
35
- end
36
- end
37
- error? ? raise(@error) : @result
38
- end
39
-
40
- # If no one else is working this promise, go ahead and do the chore.
41
- def work
42
- stat :attempting_lock_on, :item_id => object_id
43
- if @mutex.try_lock
44
- stat :has_lock_on, :item_id => object_id
45
- chore
46
- stat :releasing_lock_on, :item_id => object_id
47
- @mutex.unlock
48
- else
49
- stat :bailed_on, :item_id => object_id
50
- end
51
- end
52
-
53
- private
54
-
55
- # Perform the chore promised
56
- def chore
57
- if complete?
58
- stat :found_completed, :item_id => object_id
59
- return
60
- end
61
- stat :will_execute, :item_id => object_id
62
- begin
63
- @result = @block.call(*@args)
64
- rescue Exception => e
65
- @error = e
66
- end
67
- stat :did_execute, :item_id => object_id
68
- discard
69
- end
70
-
71
- # Do we have a result for the promise
72
- def result?
73
- ! @result.equal?(NOT_SET)
74
- end
75
-
76
- # Did the promise throw an error
77
- def error?
78
- ! @error.equal?(NOT_SET)
79
- end
80
-
81
- # Are we done with the promise
82
- def complete?
83
- result? || error?
84
- end
85
-
86
- # free up these items for the GC
87
- def discard
88
- @args = nil
89
- @block = nil
90
- end
91
-
92
- # Record execution statistics if there is a recorder
93
- def stat(*args)
94
- @recorder.call(*args) if @recorder
95
- end
96
-
97
- end
98
-
99
- end
@@ -1,24 +0,0 @@
1
- module Rake
2
-
3
- ####################################################################
4
- # Exit status class for times the system just gives us a nil.
5
- class PseudoStatus
6
- attr_reader :exitstatus
7
- def initialize(code=0)
8
- @exitstatus = code
9
- end
10
- def to_i
11
- @exitstatus << 8
12
- end
13
- def >>(n)
14
- to_i >> n
15
- end
16
- def stopped?
17
- false
18
- end
19
- def exited?
20
- true
21
- end
22
- end
23
-
24
- end
@@ -1,37 +0,0 @@
1
- require 'rake/application'
2
-
3
- module Rake
4
-
5
- # Rake module singleton methods.
6
- #
7
- class << self
8
- # Current Rake Application
9
- def application
10
- @application ||= Rake::Application.new
11
- end
12
-
13
- # Set the current Rake application object.
14
- def application=(app)
15
- @application = app
16
- end
17
-
18
- # Return the original directory where the Rake application was started.
19
- def original_dir
20
- application.original_dir
21
- end
22
-
23
- # Load a rakefile.
24
- def load_rakefile(path)
25
- load(path)
26
- end
27
-
28
- # Add files to the rakelib list
29
- def add_rakelib(*files)
30
- application.options.rakelib ||= []
31
- files.each do |file|
32
- application.options.rakelib << file
33
- end
34
- end
35
- end
36
-
37
- end
@@ -1,22 +0,0 @@
1
- require 'rake'
2
-
3
- # Load the test files from the command line.
4
- argv = ARGV.select do |argument|
5
- case argument
6
- when /^-/ then
7
- argument
8
- when /\*/ then
9
- FileList[argument].to_a.each do |file|
10
- require File.expand_path file
11
- end
12
-
13
- false
14
- else
15
- require File.expand_path argument
16
-
17
- false
18
- end
19
- end
20
-
21
- ARGV.replace argv
22
-
@@ -1 +0,0 @@
1
- fail "ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead."
@@ -1,25 +0,0 @@
1
- # Local Rake override to fix bug in Ruby 0.8.2
2
- module Test # :nodoc:
3
- # Local Rake override to fix bug in Ruby 0.8.2
4
- module Unit # :nodoc:
5
- # Local Rake override to fix bug in Ruby 0.8.2
6
- module Collector # :nodoc:
7
- # Local Rake override to fix bug in Ruby 0.8.2
8
- class Dir # :nodoc:
9
- undef collect_file
10
- def collect_file(name, suites, already_gathered) # :nodoc:
11
- dir = File.dirname(File.expand_path(name))
12
- $:.unshift(dir) unless $:.first == dir
13
- if(@req)
14
- @req.require(name)
15
- else
16
- require(name)
17
- end
18
- find_test_cases(already_gathered).each{|t| add_suite(suites, t.suite)}
19
- ensure
20
- $:.delete_at $:.rindex(dir)
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,20 +0,0 @@
1
-
2
- module Rake
3
-
4
- # Error indicating a recursion overflow error in task selection.
5
- class RuleRecursionOverflowError < StandardError
6
- def initialize(*args)
7
- super
8
- @targets = []
9
- end
10
-
11
- def add_target(target)
12
- @targets << target
13
- end
14
-
15
- def message
16
- super + ": [" + @targets.reverse.join(' => ') + "]"
17
- end
18
- end
19
-
20
- end
@@ -1,22 +0,0 @@
1
- require 'test/unit'
2
- require 'test/unit/assertions'
3
- require 'rake/file_list'
4
-
5
- module Rake
6
- include Test::Unit::Assertions
7
-
8
- def run_tests(pattern='test/test*.rb', log_enabled=false)
9
- FileList.glob(pattern).each { |fn|
10
- $stderr.puts fn if log_enabled
11
- begin
12
- require fn
13
- rescue Exception => ex
14
- $stderr.puts "Error in #{fn}: #{ex.message}"
15
- $stderr.puts ex.backtrace
16
- assert false
17
- end
18
- }
19
- end
20
-
21
- extend self
22
- end
@@ -1,368 +0,0 @@
1
- require 'rake/invocation_exception_mixin'
2
-
3
- module Rake
4
-
5
- # #########################################################################
6
- # A Task is the basic unit of work in a Rakefile. Tasks have associated
7
- # actions (possibly more than one) and a list of prerequisites. When
8
- # invoked, a task will first ensure that all of its prerequisites have an
9
- # opportunity to run and then it will execute its own actions.
10
- #
11
- # Tasks are not usually created directly using the new method, but rather
12
- # use the +file+ and +task+ convenience methods.
13
- #
14
- class Task
15
- # List of prerequisites for a task.
16
- attr_reader :prerequisites
17
-
18
- # List of actions attached to a task.
19
- attr_reader :actions
20
-
21
- # Application owning this task.
22
- attr_accessor :application
23
-
24
- # Comment for this task. Restricted to a single line of no more than 50
25
- # characters.
26
- attr_reader :comment
27
-
28
- # Full text of the (possibly multi-line) comment.
29
- attr_reader :full_comment
30
-
31
- # Array of nested namespaces names used for task lookup by this task.
32
- attr_reader :scope
33
-
34
- # File/Line locations of each of the task definitions for this
35
- # task (only valid if the task was defined with the detect
36
- # location option set).
37
- attr_reader :locations
38
-
39
- # Return task name
40
- def to_s
41
- name
42
- end
43
-
44
- def inspect
45
- "<#{self.class} #{name} => [#{prerequisites.join(', ')}]>"
46
- end
47
-
48
- # List of sources for task.
49
- attr_writer :sources
50
- def sources
51
- @sources ||= []
52
- end
53
-
54
- # List of prerequisite tasks
55
- def prerequisite_tasks
56
- prerequisites.collect { |pre| lookup_prerequisite(pre) }
57
- end
58
-
59
- def lookup_prerequisite(prerequisite_name)
60
- application[prerequisite_name, @scope]
61
- end
62
- private :lookup_prerequisite
63
-
64
- # List of all unique prerequisite tasks including prerequisite tasks'
65
- # prerequisites.
66
- # Includes self when cyclic dependencies are found.
67
- def all_prerequisite_tasks
68
- seen = {}
69
- collect_prerequisites(seen)
70
- seen.values
71
- end
72
-
73
- def collect_prerequisites(seen)
74
- prerequisite_tasks.each do |pre|
75
- next if seen[pre.name]
76
- seen[pre.name] = pre
77
- pre.collect_prerequisites(seen)
78
- end
79
- end
80
- protected :collect_prerequisites
81
-
82
- # First source from a rule (nil if no sources)
83
- def source
84
- @sources.first if defined?(@sources)
85
- end
86
-
87
- # Create a task named +task_name+ with no actions or prerequisites. Use
88
- # +enhance+ to add actions and prerequisites.
89
- def initialize(task_name, app)
90
- @name = task_name.to_s
91
- @prerequisites = []
92
- @actions = []
93
- @already_invoked = false
94
- @full_comment = nil
95
- @comment = nil
96
- @lock = Monitor.new
97
- @application = app
98
- @scope = app.current_scope
99
- @arg_names = nil
100
- @locations = []
101
- end
102
-
103
- # Enhance a task with prerequisites or actions. Returns self.
104
- def enhance(deps=nil, &block)
105
- @prerequisites |= deps if deps
106
- @actions << block if block_given?
107
- self
108
- end
109
-
110
- # Name of the task, including any namespace qualifiers.
111
- def name
112
- @name.to_s
113
- end
114
-
115
- # Name of task with argument list description.
116
- def name_with_args # :nodoc:
117
- if arg_description
118
- "#{name}#{arg_description}"
119
- else
120
- name
121
- end
122
- end
123
-
124
- # Argument description (nil if none).
125
- def arg_description # :nodoc:
126
- @arg_names ? "[#{arg_names.join(',')}]" : nil
127
- end
128
-
129
- # Name of arguments for this task.
130
- def arg_names
131
- @arg_names || []
132
- end
133
-
134
- # Reenable the task, allowing its tasks to be executed if the task
135
- # is invoked again.
136
- def reenable
137
- @already_invoked = false
138
- end
139
-
140
- # Clear the existing prerequisites and actions of a rake task.
141
- def clear
142
- clear_prerequisites
143
- clear_actions
144
- clear_comments
145
- self
146
- end
147
-
148
- # Clear the existing prerequisites of a rake task.
149
- def clear_prerequisites
150
- prerequisites.clear
151
- self
152
- end
153
-
154
- # Clear the existing actions on a rake task.
155
- def clear_actions
156
- actions.clear
157
- self
158
- end
159
-
160
- # Clear the existing comments on a rake task.
161
- def clear_comments
162
- @full_comment = nil
163
- @comment = nil
164
- self
165
- end
166
-
167
- # Invoke the task if it is needed. Prerequisites are invoked first.
168
- def invoke(*args)
169
- task_args = TaskArguments.new(arg_names, args)
170
- invoke_with_call_chain(task_args, InvocationChain::EMPTY)
171
- end
172
-
173
- # Same as invoke, but explicitly pass a call chain to detect
174
- # circular dependencies.
175
- def invoke_with_call_chain(task_args, invocation_chain) # :nodoc:
176
- new_chain = InvocationChain.append(self, invocation_chain)
177
- @lock.synchronize do
178
- if application.options.trace
179
- application.trace "** Invoke #{name} #{format_trace_flags}"
180
- end
181
- return if @already_invoked
182
- @already_invoked = true
183
- invoke_prerequisites(task_args, new_chain)
184
- execute(task_args) if needed?
185
- end
186
- rescue Exception => ex
187
- add_chain_to(ex, new_chain)
188
- raise ex
189
- end
190
- protected :invoke_with_call_chain
191
-
192
- def add_chain_to(exception, new_chain)
193
- exception.extend(InvocationExceptionMixin) unless exception.respond_to?(:chain)
194
- exception.chain = new_chain if exception.chain.nil?
195
- end
196
- private :add_chain_to
197
-
198
- # Invoke all the prerequisites of a task.
199
- def invoke_prerequisites(task_args, invocation_chain) # :nodoc:
200
- if application.options.always_multitask
201
- invoke_prerequisites_concurrently(task_args, invocation_chain)
202
- else
203
- prerequisite_tasks.each { |p|
204
- prereq_args = task_args.new_scope(p.arg_names)
205
- p.invoke_with_call_chain(prereq_args, invocation_chain)
206
- }
207
- end
208
- end
209
-
210
- # Invoke all the prerequisites of a task in parallel.
211
- def invoke_prerequisites_concurrently(task_args, invocation_chain) # :nodoc:
212
- futures = prerequisite_tasks.collect do |p|
213
- prereq_args = task_args.new_scope(p.arg_names)
214
- application.thread_pool.future(p) do |r|
215
- r.invoke_with_call_chain(prereq_args, invocation_chain)
216
- end
217
- end
218
- futures.each { |f| f.value }
219
- end
220
-
221
- # Format the trace flags for display.
222
- def format_trace_flags
223
- flags = []
224
- flags << "first_time" unless @already_invoked
225
- flags << "not_needed" unless needed?
226
- flags.empty? ? "" : "(" + flags.join(", ") + ")"
227
- end
228
- private :format_trace_flags
229
-
230
- # Execute the actions associated with this task.
231
- def execute(args=nil)
232
- args ||= EMPTY_TASK_ARGS
233
- if application.options.dryrun
234
- application.trace "** Execute (dry run) #{name}"
235
- return
236
- end
237
- if application.options.trace
238
- application.trace "** Execute #{name}"
239
- end
240
- application.enhance_with_matching_rule(name) if @actions.empty?
241
- @actions.each do |act|
242
- case act.arity
243
- when 1
244
- act.call(self)
245
- else
246
- act.call(self, args)
247
- end
248
- end
249
- end
250
-
251
- # Is this task needed?
252
- def needed?
253
- true
254
- end
255
-
256
- # Timestamp for this task. Basic tasks return the current time for their
257
- # time stamp. Other tasks can be more sophisticated.
258
- def timestamp
259
- Time.now
260
- end
261
-
262
- # Add a description to the task. The description can consist of an option
263
- # argument list (enclosed brackets) and an optional comment.
264
- def add_description(description)
265
- return if ! description
266
- comment = description.strip
267
- add_comment(comment) if comment && ! comment.empty?
268
- end
269
-
270
- # Writing to the comment attribute is the same as adding a description.
271
- def comment=(description)
272
- add_description(description)
273
- end
274
-
275
- # Add a comment to the task. If a comment already exists, separate
276
- # the new comment with " / ".
277
- def add_comment(comment)
278
- if @full_comment
279
- @full_comment << " / "
280
- else
281
- @full_comment = ''
282
- end
283
- @full_comment << comment
284
- if @full_comment =~ /\A([^.]+?\.)( |$)/
285
- @comment = $1
286
- else
287
- @comment = @full_comment
288
- end
289
- end
290
- private :add_comment
291
-
292
- # Set the names of the arguments for this task. +args+ should be
293
- # an array of symbols, one for each argument name.
294
- def set_arg_names(args)
295
- @arg_names = args.map { |a| a.to_sym }
296
- end
297
-
298
- # Return a string describing the internal state of a task. Useful for
299
- # debugging.
300
- def investigation
301
- result = "------------------------------\n"
302
- result << "Investigating #{name}\n"
303
- result << "class: #{self.class}\n"
304
- result << "task needed: #{needed?}\n"
305
- result << "timestamp: #{timestamp}\n"
306
- result << "pre-requisites: \n"
307
- prereqs = prerequisite_tasks
308
- prereqs.sort! {|a,b| a.timestamp <=> b.timestamp}
309
- prereqs.each do |p|
310
- result << "--#{p.name} (#{p.timestamp})\n"
311
- end
312
- latest_prereq = prerequisite_tasks.collect { |pre| pre.timestamp }.max
313
- result << "latest-prerequisite time: #{latest_prereq}\n"
314
- result << "................................\n\n"
315
- return result
316
- end
317
-
318
- # ----------------------------------------------------------------
319
- # Rake Module Methods
320
- #
321
- class << self
322
-
323
- # Clear the task list. This cause rake to immediately forget all the
324
- # tasks that have been assigned. (Normally used in the unit tests.)
325
- def clear
326
- Rake.application.clear
327
- end
328
-
329
- # List of all defined tasks.
330
- def tasks
331
- Rake.application.tasks
332
- end
333
-
334
- # Return a task with the given name. If the task is not currently
335
- # known, try to synthesize one from the defined rules. If no rules are
336
- # found, but an existing file matches the task name, assume it is a file
337
- # task with no dependencies or actions.
338
- def [](task_name)
339
- Rake.application[task_name]
340
- end
341
-
342
- # TRUE if the task name is already defined.
343
- def task_defined?(task_name)
344
- Rake.application.lookup(task_name) != nil
345
- end
346
-
347
- # Define a task given +args+ and an option block. If a rule with the
348
- # given name already exists, the prerequisites and actions are added to
349
- # the existing task. Returns the defined task.
350
- def define_task(*args, &block)
351
- Rake.application.define_task(self, *args, &block)
352
- end
353
-
354
- # Define a rule for synthesizing tasks.
355
- def create_rule(*args, &block)
356
- Rake.application.create_rule(*args, &block)
357
- end
358
-
359
- # Apply the scope to the task name according to the rules for
360
- # this kind of task. Generic tasks will accept the scope as
361
- # part of the name.
362
- def scope_name(scope, task_name)
363
- (scope + [task_name]).join(':')
364
- end
365
-
366
- end # class << Rake::Task
367
- end # class Rake::Task
368
- end
@@ -1,7 +0,0 @@
1
- module Rake
2
-
3
- # Error indicating an ill-formed task declaration.
4
- class TaskArgumentError < ArgumentError
5
- end
6
-
7
- end
@@ -1,78 +0,0 @@
1
- module Rake
2
-
3
- ####################################################################
4
- # TaskArguments manage the arguments passed to a task.
5
- #
6
- class TaskArguments
7
- include Enumerable
8
-
9
- attr_reader :names
10
-
11
- # Create a TaskArgument object with a list of named arguments
12
- # (given by :names) and a set of associated values (given by
13
- # :values). :parent is the parent argument object.
14
- def initialize(names, values, parent=nil)
15
- @names = names
16
- @parent = parent
17
- @hash = {}
18
- names.each_with_index { |name, i|
19
- @hash[name.to_sym] = values[i] unless values[i].nil?
20
- }
21
- end
22
-
23
- # Create a new argument scope using the prerequisite argument
24
- # names.
25
- def new_scope(names)
26
- values = names.collect { |n| self[n] }
27
- self.class.new(names, values, self)
28
- end
29
-
30
- # Find an argument value by name or index.
31
- def [](index)
32
- lookup(index.to_sym)
33
- end
34
-
35
- # Specify a hash of default values for task arguments. Use the
36
- # defaults only if there is no specific value for the given
37
- # argument.
38
- def with_defaults(defaults)
39
- @hash = defaults.merge(@hash)
40
- end
41
-
42
- def each(&block)
43
- @hash.each(&block)
44
- end
45
-
46
- def values_at(*keys)
47
- keys.map { |k| lookup(k) }
48
- end
49
-
50
- def method_missing(sym, *args)
51
- lookup(sym.to_sym)
52
- end
53
-
54
- def to_hash
55
- @hash
56
- end
57
-
58
- def to_s
59
- @hash.inspect
60
- end
61
-
62
- def inspect
63
- to_s
64
- end
65
-
66
- protected
67
-
68
- def lookup(name)
69
- if @hash.has_key?(name)
70
- @hash[name]
71
- elsif @parent
72
- @parent.lookup(name)
73
- end
74
- end
75
- end
76
-
77
- EMPTY_TASK_ARGS = TaskArguments.new([], [])
78
- end