tap 0.9.0 → 0.9.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 (210) hide show
  1. data/Basic Overview b/data/Basic → Overview +0 -0
  2. data/Command Reference b/data/Command → Reference +0 -0
  3. data/History +14 -4
  4. data/MIT-LICENSE +0 -0
  5. data/README +0 -0
  6. data/Rakefile +0 -0
  7. data/Tutorial +0 -0
  8. data/bin/tap +11 -14
  9. data/lib/tap.rb +10 -1
  10. data/lib/tap/app.rb +1 -1
  11. data/lib/tap/cmd/console.rb +2 -6
  12. data/lib/tap/cmd/destroy.rb +0 -0
  13. data/lib/tap/cmd/generate.rb +0 -0
  14. data/lib/tap/cmd/run.rb +72 -77
  15. data/lib/tap/constants.rb +33 -2
  16. data/lib/tap/dump.rb +0 -0
  17. data/lib/tap/env.rb +40 -21
  18. data/lib/tap/file_task.rb +0 -0
  19. data/lib/tap/generator.rb +0 -0
  20. data/lib/tap/generator/generators/command/USAGE +0 -0
  21. data/lib/tap/generator/generators/command/command_generator.rb +0 -0
  22. data/lib/tap/generator/generators/command/templates/command.erb +2 -6
  23. data/lib/tap/generator/generators/config/USAGE +0 -0
  24. data/lib/tap/generator/generators/config/config_generator.rb +0 -0
  25. data/lib/tap/generator/generators/config/templates/config.erb +0 -0
  26. data/lib/tap/generator/generators/file_task/USAGE +0 -0
  27. data/lib/tap/generator/generators/file_task/file_task_generator.rb +0 -0
  28. data/lib/tap/generator/generators/file_task/templates/file.txt +0 -0
  29. data/lib/tap/generator/generators/file_task/templates/file.yml +0 -0
  30. data/lib/tap/generator/generators/file_task/templates/task.erb +0 -0
  31. data/lib/tap/generator/generators/file_task/templates/test.erb +0 -0
  32. data/lib/tap/generator/generators/generator/USAGE +0 -0
  33. data/lib/tap/generator/generators/generator/generator_generator.rb +0 -0
  34. data/lib/tap/generator/generators/generator/templates/generator.erb +0 -0
  35. data/lib/tap/generator/generators/generator/templates/usage.erb +0 -0
  36. data/lib/tap/generator/generators/root/USAGE +0 -0
  37. data/lib/tap/generator/generators/root/root_generator.rb +0 -0
  38. data/lib/tap/generator/generators/root/templates/Rakefile +0 -0
  39. data/lib/tap/generator/generators/root/templates/ReadMe.txt +0 -0
  40. data/lib/tap/generator/generators/root/templates/tap.yml +1 -0
  41. data/lib/tap/generator/generators/root/templates/test/tap_test_helper.rb +0 -0
  42. data/lib/tap/generator/generators/root/templates/test/tap_test_suite.rb +0 -0
  43. data/lib/tap/generator/generators/task/USAGE +0 -0
  44. data/lib/tap/generator/generators/task/task_generator.rb +0 -0
  45. data/lib/tap/generator/generators/task/templates/task.erb +0 -0
  46. data/lib/tap/generator/generators/task/templates/test.erb +0 -0
  47. data/lib/tap/generator/generators/workflow/USAGE +0 -0
  48. data/lib/tap/generator/generators/workflow/templates/task.erb +0 -0
  49. data/lib/tap/generator/generators/workflow/templates/test.erb +0 -0
  50. data/lib/tap/generator/generators/workflow/workflow_generator.rb +0 -0
  51. data/lib/tap/generator/options.rb +0 -0
  52. data/lib/tap/generator/usage.rb +0 -0
  53. data/lib/tap/patches/rake/rake_test_loader.rb +0 -0
  54. data/lib/tap/patches/rake/testtask.rb +0 -0
  55. data/lib/tap/patches/ruby19/backtrace_filter.rb +0 -0
  56. data/lib/tap/patches/ruby19/parsedate.rb +0 -0
  57. data/lib/tap/root.rb +0 -0
  58. data/lib/tap/support/aggregator.rb +0 -0
  59. data/lib/tap/support/audit.rb +0 -0
  60. data/lib/tap/support/batchable.rb +2 -25
  61. data/lib/tap/support/batchable_methods.rb +34 -0
  62. data/lib/tap/support/class_configuration.rb +0 -0
  63. data/lib/tap/support/command_line.rb +103 -0
  64. data/lib/tap/support/command_line_methods.rb +76 -0
  65. data/lib/tap/support/configurable.rb +1 -0
  66. data/lib/tap/support/configurable_methods.rb +1 -73
  67. data/lib/tap/support/executable.rb +0 -0
  68. data/lib/tap/support/executable_queue.rb +0 -0
  69. data/lib/tap/support/logger.rb +0 -0
  70. data/lib/tap/support/rake.rb +0 -0
  71. data/lib/tap/support/run_error.rb +0 -0
  72. data/lib/tap/support/shell_utils.rb +0 -0
  73. data/lib/tap/support/tdoc.rb +0 -0
  74. data/lib/tap/support/tdoc/config_attr.rb +0 -0
  75. data/lib/tap/support/tdoc/tdoc_html_generator.rb +0 -0
  76. data/lib/tap/support/tdoc/tdoc_html_template.rb +0 -0
  77. data/lib/tap/support/validation.rb +0 -0
  78. data/lib/tap/support/versions.rb +0 -0
  79. data/lib/tap/task.rb +1 -0
  80. data/lib/tap/test.rb +0 -0
  81. data/lib/tap/test/env_vars.rb +0 -0
  82. data/lib/tap/test/file_methods.rb +1 -1
  83. data/lib/tap/test/subset_methods.rb +0 -0
  84. data/lib/tap/test/tap_methods.rb +0 -0
  85. data/lib/tap/workflow.rb +1 -0
  86. data/test/app/config/another/task.yml +0 -0
  87. data/test/app/config/batch.yml +0 -0
  88. data/test/app/config/empty.yml +0 -0
  89. data/test/app/config/erb.yml +0 -0
  90. data/test/app/config/some/task.yml +0 -0
  91. data/test/app/config/template.yml +0 -0
  92. data/test/app/config/version-0.1.yml +0 -0
  93. data/test/app/config/version.yml +0 -0
  94. data/test/app/lib/app_test_task.rb +0 -0
  95. data/test/app_test.rb +0 -0
  96. data/test/env/test_configure/recurse_a.yml +0 -0
  97. data/test/env/test_configure/recurse_b.yml +0 -0
  98. data/test/env/test_configure/tap.yml +0 -0
  99. data/test/env/test_load_env_config/dir/tap.yml +0 -0
  100. data/test/env/test_load_env_config/recurse_a.yml +0 -0
  101. data/test/env/test_load_env_config/recurse_b.yml +0 -0
  102. data/test/env/test_load_env_config/tap.yml +0 -0
  103. data/test/env_test.rb +0 -0
  104. data/test/file_task/config/batch.yml +0 -0
  105. data/test/file_task/config/configured.yml +0 -0
  106. data/test/file_task/old_file_one.txt +0 -0
  107. data/test/file_task/old_file_two.txt +0 -0
  108. data/test/file_task_test.rb +0 -0
  109. data/test/root/alt_lib/alt_module.rb +0 -0
  110. data/test/root/file.txt +0 -0
  111. data/test/root/glob/one.txt +0 -0
  112. data/test/root/glob/two.txt +0 -0
  113. data/test/root/lib/absolute_alt_filepath.rb +0 -0
  114. data/test/root/lib/alternative_filepath.rb +0 -0
  115. data/test/root/lib/another_module.rb +0 -0
  116. data/test/root/lib/nested/some_module.rb +0 -0
  117. data/test/root/lib/no_module_included.rb +0 -0
  118. data/test/root/lib/some/module.rb +0 -0
  119. data/test/root/lib/some_class.rb +0 -0
  120. data/test/root/lib/some_module.rb +0 -0
  121. data/test/root/load_path/load_path_module.rb +0 -0
  122. data/test/root/load_path/skip_module.rb +0 -0
  123. data/test/root/mtime/older.txt +0 -0
  124. data/test/root/unload/full_path.rb +0 -0
  125. data/test/root/unload/loaded_by_nested.rb +0 -0
  126. data/test/root/unload/nested/nested_load.rb +0 -0
  127. data/test/root/unload/nested/nested_with_ext.rb +0 -0
  128. data/test/root/unload/nested/relative_path.rb +0 -0
  129. data/test/root/unload/older.rb +0 -0
  130. data/test/root/unload/unload_base.rb +0 -0
  131. data/test/root/versions/another.yml +0 -0
  132. data/test/root/versions/file-0.1.2.yml +0 -0
  133. data/test/root/versions/file-0.1.yml +0 -0
  134. data/test/root/versions/file.yml +0 -0
  135. data/test/root_test.rb +0 -0
  136. data/test/support/aggregator_test.rb +0 -0
  137. data/test/support/audit_test.rb +0 -0
  138. data/test/support/batchable_test.rb +0 -0
  139. data/test/support/class_configuration_test.rb +0 -0
  140. data/test/{script_test.rb → support/command_line_test.rb} +21 -21
  141. data/test/support/configurable/config/configured.yml +0 -0
  142. data/test/support/configurable_test.rb +0 -0
  143. data/test/support/executable_queue_test.rb +0 -0
  144. data/test/support/executable_test.rb +0 -0
  145. data/test/support/logger_test.rb +0 -0
  146. data/test/support/rake_test.rb +0 -0
  147. data/test/support/shell_utils_test.rb +0 -0
  148. data/test/support/tdoc_test.rb +0 -0
  149. data/test/support/validation_test.rb +0 -0
  150. data/test/support/versions_test.rb +0 -0
  151. data/test/tap_test_helper.rb +0 -0
  152. data/test/tap_test_suite.rb +0 -0
  153. data/test/task/config/batch.yml +0 -0
  154. data/test/task/config/batched.yml +0 -0
  155. data/test/task/config/configured.yml +0 -0
  156. data/test/task/config/example.yml +0 -0
  157. data/test/task_base_test.rb +0 -0
  158. data/test/task_syntax_test.rb +0 -0
  159. data/test/task_test.rb +0 -0
  160. data/test/test/env_vars_test.rb +0 -0
  161. data/test/test/file_methods/test_assert_files/expected/one.txt +0 -0
  162. data/test/test/file_methods/test_assert_files/expected/two.txt +0 -0
  163. data/test/test/file_methods/test_assert_files/input/one.txt +0 -0
  164. data/test/test/file_methods/test_assert_files/input/two.txt +0 -0
  165. data/test/test/file_methods/test_assert_files_can_have_no_expected_files_if_specified/input/one.txt +0 -0
  166. data/test/test/file_methods/test_assert_files_can_have_no_expected_files_if_specified/input/two.txt +0 -0
  167. data/test/test/file_methods/test_assert_files_fails_for_different_content/expected/one.txt +0 -0
  168. data/test/test/file_methods/test_assert_files_fails_for_different_content/expected/two.txt +0 -0
  169. data/test/test/file_methods/test_assert_files_fails_for_different_content/input/one.txt +0 -0
  170. data/test/test/file_methods/test_assert_files_fails_for_different_content/input/two.txt +0 -0
  171. data/test/test/file_methods/test_assert_files_fails_for_missing_expected_file/expected/one.txt +0 -0
  172. data/test/test/file_methods/test_assert_files_fails_for_missing_expected_file/input/one.txt +0 -0
  173. data/test/test/file_methods/test_assert_files_fails_for_missing_expected_file/input/two.txt +0 -0
  174. data/test/test/file_methods/test_assert_files_fails_for_missing_output_file/expected/one.txt +0 -0
  175. data/test/test/file_methods/test_assert_files_fails_for_missing_output_file/expected/two.txt +0 -0
  176. data/test/test/file_methods/test_assert_files_fails_for_missing_output_file/input/one.txt +0 -0
  177. data/test/test/file_methods/test_assert_files_fails_for_missing_output_file/input/two.txt +0 -0
  178. data/test/test/file_methods/test_assert_files_fails_for_no_expected_files/input/one.txt +0 -0
  179. data/test/test/file_methods/test_assert_files_fails_for_no_expected_files/input/two.txt +0 -0
  180. data/test/test/file_methods/test_method_glob/expected/file.yml +0 -0
  181. data/test/test/file_methods/test_method_glob/expected/file_1.txt +0 -0
  182. data/test/test/file_methods/test_method_glob/expected/file_2.txt +0 -0
  183. data/test/test/file_methods_doc/test_sub/expected/one.txt +0 -0
  184. data/test/test/file_methods_doc/test_sub/expected/two.txt +0 -0
  185. data/test/test/file_methods_doc/test_sub/input/one.txt +0 -0
  186. data/test/test/file_methods_doc/test_sub/input/two.txt +0 -0
  187. data/test/test/file_methods_doc_test.rb +0 -0
  188. data/test/test/file_methods_test.rb +0 -0
  189. data/test/test/subset_methods_test.rb +0 -0
  190. data/test/test/tap_methods/test_assert_files/expected/task/name/a.txt +0 -0
  191. data/test/test/tap_methods/test_assert_files/expected/task/name/b.txt +0 -0
  192. data/test/test/tap_methods/test_assert_files/input/a.txt +0 -0
  193. data/test/test/tap_methods/test_assert_files/input/b.txt +0 -0
  194. data/test/test/tap_methods_test.rb +0 -0
  195. data/test/workflow_test.rb +0 -0
  196. data/vendor/rails_generator.rb +0 -0
  197. data/vendor/rails_generator/base.rb +0 -0
  198. data/vendor/rails_generator/commands.rb +0 -0
  199. data/vendor/rails_generator/generated_attribute.rb +0 -0
  200. data/vendor/rails_generator/lookup.rb +0 -0
  201. data/vendor/rails_generator/manifest.rb +0 -0
  202. data/vendor/rails_generator/options.rb +0 -0
  203. data/vendor/rails_generator/scripts.rb +0 -0
  204. data/vendor/rails_generator/scripts/destroy.rb +0 -0
  205. data/vendor/rails_generator/scripts/generate.rb +0 -0
  206. data/vendor/rails_generator/scripts/update.rb +0 -0
  207. data/vendor/rails_generator/simple_logger.rb +0 -0
  208. data/vendor/rails_generator/spec.rb +0 -0
  209. metadata +7 -5
  210. data/lib/tap/script.rb +0 -96
File without changes
File without changes
data/History CHANGED
@@ -29,13 +29,13 @@ Documentation is still patchy, but improving.
29
29
  Major update to Tap. Many changes in this release ARE NOT BACKWARD COMPATIBLE.
30
30
 
31
31
  * Reworked Task and App such that methods, are
32
- enqued and executed. Made the Executable module
32
+ enqued and executed. Made the Executable module
33
33
  to allow any Method to be enqued and executed.
34
34
  * App now aggregates results for methods that have no
35
35
  on_complete block; enabled access through App#results
36
36
  and App#_results.
37
37
  * Removed iteration from tasks
38
- * Task no longer templates app.config_templates. Templating code
38
+ * Task no longer templates app.config_templates. Templating code
39
39
  removed from this distribution.
40
40
  * Work to improve audit usability and visualization
41
41
  * Removed methods forwarding from Audit to Audit#_current,
@@ -46,7 +46,17 @@ Major update to Tap. Many changes in this release ARE NOT BACKWARD COMPATIBLE.
46
46
  * Generalized rake support; now supports version 0.8.1
47
47
  * Fixes in generators
48
48
  * Improvements in running of multithread tasks
49
- * Removed condition blocks from tasks
49
+ * Removed condition blocks from tasks
50
50
  * many other things also...
51
51
 
52
-
52
+ == 0.9.1 / 2008-04-26 revision 253
53
+
54
+ Relatively minor update, but with one important refactoring that
55
+ removes the Tap::Script module. This breaks backward compatibility
56
+ but only should affect people who have made their own commands.
57
+ Simply sub Tap::Support::CommandLine for Tap::Script to fix.
58
+
59
+ * Added constants methods (ex try_constantize) to String
60
+ * Added gem discovery when no tap.yml file is present
61
+ * Cleanup and refactoring -- removal of Tap::Script
62
+ * Bug fix for JRuby 1.1.1
data/MIT-LICENSE CHANGED
File without changes
data/README CHANGED
File without changes
data/Rakefile CHANGED
File without changes
data/Tutorial CHANGED
File without changes
data/bin/tap CHANGED
@@ -12,14 +12,12 @@
12
12
 
13
13
  require File.join( File.dirname(__FILE__), "../lib/tap.rb")
14
14
 
15
- # setup environment
15
+ # setup the environment
16
16
  env = Tap::Env.instance
17
17
  app = Tap::App.instance
18
18
 
19
19
  env.logger = app.logger
20
- if ARGV.delete("-d-")
21
- env.debug_setup
22
- end
20
+ env.debug_setup if ARGV.delete('-d-')
23
21
 
24
22
  before = nil
25
23
  after = nil
@@ -36,19 +34,18 @@ def handle_error(err)
36
34
  end
37
35
 
38
36
  # configure the app to tap.yml if it exists
39
- default_config_file = File.expand_path( Tap::Env::DEFAULT_CONFIG_FILE )
37
+ default_config_file = Tap::Env::DEFAULT_CONFIG_FILE
40
38
  begin
41
- env.load_config(default_config_file, app) do |app, config_file, config|
42
- unless config_file == default_config_file
43
- env.log(:warn, "ignoring configs: #{config_file} (#{config.keys.join(',')})", Logger::WARN)
44
- next
45
- end
39
+
40
+ env.load_config(default_config_file, app) do |non_env_configs|
41
+ before = non_env_configs.delete('before')
42
+ after = non_env_configs.delete('after')
46
43
 
47
- before = config.delete('before')
48
- after = config.delete('after')
49
-
50
- app.reconfigure(config)
44
+ app.reconfigure(non_env_configs)
51
45
  end
46
+
47
+ env.discover_gems unless File.exists?(default_config_file)
48
+
52
49
  rescue(Exception)
53
50
  # catch errors and exit gracefully
54
51
  # (errors usu from gem loading errors)
data/lib/tap.rb CHANGED
@@ -6,6 +6,9 @@ require 'ostruct'
6
6
  require 'thread'
7
7
  require 'erb'
8
8
 
9
+ autoload(:GetoptLong, 'getoptlong')
10
+ autoload(:PP, "pp")
11
+
9
12
  # Apply version-specific patches
10
13
  case RUBY_VERSION
11
14
  when /^1.9/
@@ -36,10 +39,17 @@ end
36
39
 
37
40
  $:.unshift File.dirname(__FILE__)
38
41
 
42
+ require 'tap/constants'
43
+ class String # :nodoc:
44
+ include Tap::Constants
45
+ end
46
+
39
47
  require 'tap/support/aggregator'
40
48
  require 'tap/support/audit'
49
+ require 'tap/support/batchable_methods'
41
50
  require 'tap/support/batchable'
42
51
  require 'tap/support/class_configuration'
52
+ require 'tap/support/command_line_methods'
43
53
  require 'tap/support/configurable'
44
54
  require 'tap/support/configurable_methods'
45
55
  require 'tap/support/executable'
@@ -48,7 +58,6 @@ require 'tap/support/logger'
48
58
  require 'tap/support/run_error'
49
59
  require 'tap/support/shell_utils'
50
60
  require 'tap/support/validation'
51
- require 'tap/constants'
52
61
  require 'tap/env'
53
62
  require 'tap/app'
54
63
  require 'tap/task'
data/lib/tap/app.rb CHANGED
@@ -446,7 +446,7 @@ module Tap
446
446
  end
447
447
 
448
448
  else
449
- Object.module_eval const_name
449
+ const_name.constantize
450
450
  end
451
451
 
452
452
  rescue(NameError)
@@ -6,8 +6,6 @@
6
6
  # in tap.yml. Access the Tap::App.instance through 'app'
7
7
  #
8
8
 
9
- require 'tap/script'
10
-
11
9
  #
12
10
  # handle options
13
11
  #
@@ -15,12 +13,10 @@ require 'tap/script'
15
13
  opts = [
16
14
  ['--help', '-h', GetoptLong::NO_ARGUMENT, "Print this help."]]
17
15
 
18
- Tap::Script.handle_options(*opts) do |opt, value|
16
+ Tap::Support::CommandLine.handle_options(*opts) do |opt, value|
19
17
  case opt
20
18
  when '--help'
21
- puts Tap::Script.usage(__FILE__, "Usage", "Description", :keep_headers => false)
22
- puts
23
- puts Tap::Script.usage_options(opts)
19
+ puts Tap::Support::CommandLine.command_help(__FILE__, opts)
24
20
  exit
25
21
 
26
22
  end
File without changes
File without changes
data/lib/tap/cmd/run.rb CHANGED
@@ -6,7 +6,6 @@
6
6
  # tap run -- task --help Prints help for task
7
7
  #
8
8
 
9
- require 'tap/script'
10
9
  env = Tap::Env.instance
11
10
  app = Tap::App.instance
12
11
 
@@ -20,13 +19,10 @@ opts = [
20
19
  ['--force', '-f', GetoptLong::NO_ARGUMENT, "Force execution at checkpoints"],
21
20
  ['--quiet', '-q', GetoptLong::NO_ARGUMENT, "Suppress logging"]]
22
21
 
23
- Tap::Script.handle_options(*opts) do |opt, value|
22
+ Tap::Support::CommandLine.handle_options(*opts) do |opt, value|
24
23
  case opt
25
24
  when '--help'
26
- puts Tap::Script.usage(__FILE__, "Usage", :keep_headers => false)
27
- puts
28
- puts "Options:"
29
- puts Tap::Script.usage_options(opts)
25
+ puts Tap::Support::CommandLine.command_help(__FILE__, opts)
30
26
  exit
31
27
 
32
28
  when '--quiet', '--force', '--debug'
@@ -40,70 +36,69 @@ end
40
36
  #
41
37
  # handle options for each specified task
42
38
  #
43
- rounds = Tap::Script.split_argv(ARGV).collect do |argv|
44
- argv.each do |args|
45
- ARGV.clear
46
- ARGV.concat(args)
47
-
48
- td = Tap::Script.next_arg(ARGV)
49
- case td
50
- when 'rake', nil
51
- # remove --help as this will print the Rake help
52
- ARGV.delete_if do |arg|
53
- if arg == "--help"
54
- env.log(:warn, "ignoring --help config for rake command")
55
- true
56
- else
57
- false
58
- end
59
- end
60
- next if ARGV.empty?
61
-
62
- rake = env.rake_setup
63
-
64
- # takes the place of rake.top_level
65
- if rake.options.show_tasks
66
- rake.display_tasks_and_comments
67
- exit
68
- elsif rake.options.show_prereqs
69
- rake.display_prerequisites
70
- exit
71
- else
72
- rake.top_level_tasks.each do |task_name|
73
- app.task(task_name).enq
74
- end
75
- end
76
-
77
- else
78
- begin
79
- # attempt lookup the task class
80
- task_class = app.task_class(td)
81
- rescue(Tap::App::LookupError)
82
- end
83
-
84
- # unless a Tap::Task was found, treat the
85
- # args as a specification for Rake.
86
- if task_class == nil || !task_class.include?(Tap::Support::Configurable)
87
- args.unshift('rake')
88
- redo
89
- end
90
-
91
- # now let the class handle the argv
92
- ARGV.collect! {|str| Tap::Script.parse_yaml(str) }
93
- ARGV.unshift(td)
94
- task_class.argv_enq(app)
95
- end
96
- end
97
-
98
- app.queue.clear
99
- end
100
- ARGV.clear
101
-
102
- rounds.delete_if {|round| round.empty? }
103
- if rounds.empty?
104
- puts "no task specified"
105
- exit
106
- end
39
+ rounds = Tap::Support::CommandLine.split_argv(ARGV).collect do |argv|
40
+ argv.each do |args|
41
+ ARGV.clear
42
+ ARGV.concat(args)
43
+
44
+ td = Tap::Support::CommandLine.next_arg(ARGV)
45
+ case td
46
+ when 'rake', nil
47
+ # remove --help as this will print the Rake help
48
+ ARGV.delete_if do |arg|
49
+ if arg == "--help"
50
+ env.log(:warn, "ignoring --help config for rake command")
51
+ true
52
+ else
53
+ false
54
+ end
55
+ end
56
+
57
+ rake = env.rake_setup
58
+
59
+ # takes the place of rake.top_level
60
+ if rake.options.show_tasks
61
+ rake.display_tasks_and_comments
62
+ exit
63
+ elsif rake.options.show_prereqs
64
+ rake.display_prerequisites
65
+ exit
66
+ else
67
+ rake.top_level_tasks.each do |task_name|
68
+ app.task(task_name).enq
69
+ end
70
+ end
71
+
72
+ else
73
+ begin
74
+ # attempt lookup the task class
75
+ task_class = app.task_class(td)
76
+ rescue(Tap::App::LookupError)
77
+ end
78
+
79
+ # unless a Tap::Task was found, treat the
80
+ # args as a specification for Rake.
81
+ if task_class == nil || !task_class.include?(Tap::Support::Configurable)
82
+ args.unshift('rake')
83
+ redo
84
+ end
85
+
86
+ # now let the class handle the argv
87
+ ARGV.collect! {|str| Tap::Support::CommandLine.parse_yaml(str) }
88
+ ARGV.unshift(td)
89
+ task_class.argv_enq(app)
90
+ end
91
+ end
92
+
93
+ app.queue.clear
94
+ end
95
+ ARGV.clear
96
+
97
+ rounds.delete_if {|round| round.empty? }
98
+ if rounds.empty?
99
+ puts "no task specified"
100
+ exit
101
+ end
107
102
 
108
103
  #
109
104
  # set signals
@@ -145,12 +140,12 @@ if signals.include?("INT")
145
140
 
146
141
  puts "ctl-c interupts execution"
147
142
  end
148
-
149
- #
150
- # enque tasks and run!
143
+
144
+ #
145
+ # enque tasks and run!
151
146
  #
152
147
  puts "beginning run..."
153
- rounds.each_with_index do |queue, i|
154
- app.queue.concat(queue)
155
- app.run
156
- end
148
+ rounds.each_with_index do |queue, i|
149
+ app.queue.concat(queue)
150
+ app.run
151
+ end
data/lib/tap/constants.rb CHANGED
@@ -1,4 +1,35 @@
1
1
  module Tap
2
- VERSION="0.9.0"
2
+ MAJOR = 0
3
+ MINOR = 9
4
+ TINY = 1
5
+
6
+ VERSION="#{MAJOR}.#{MINOR}.#{TINY}"
3
7
  WEBSITE="http://tap.rubyforge.org"
4
- end
8
+
9
+ # Under Construction
10
+ module Constants
11
+ def try_constantize
12
+ begin
13
+ constantize
14
+ rescue(NameError)
15
+ yield
16
+ end
17
+ end
18
+
19
+ def constants_split
20
+ camel_cased_word = camelize
21
+ unless /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/ =~ camel_cased_word
22
+ raise NameError, "#{camel_cased_word.inspect} is not a valid constant name!"
23
+ end
24
+
25
+ constants = $1.split(/::/)
26
+ current = Object
27
+ while !constants.empty?
28
+ break unless current.const_defined?(constants[0])
29
+ current = current.const_get(constants.shift)
30
+ end
31
+
32
+ [current, constants]
33
+ end
34
+ end
35
+ end
data/lib/tap/dump.rb CHANGED
File without changes
data/lib/tap/env.rb CHANGED
@@ -92,7 +92,6 @@ module Tap
92
92
  def initialize
93
93
  @config = nil
94
94
  @logger = nil
95
- # @on_handle_unknown_configs = nil
96
95
  reset
97
96
  end
98
97
 
@@ -177,7 +176,7 @@ module Tap
177
176
  # Configuration paths are expanded relative to the parent directory
178
177
  # of the loaded file. Raises an error if non-env configuration are
179
178
  # found (as determined by Tap::Env::Configurtion::ENV_CONFIG_KEYS).
180
- def load_config(path, root=Tap::Root.new, &block)
179
+ def load_config(path, root=Tap::Root.new, &block) # :yields: non_env_configs
181
180
  path = File.join(path, DEFAULT_CONFIG_FILE) if File.directory?(path)
182
181
  path = File.expand_path(path)
183
182
 
@@ -192,17 +191,12 @@ module Tap
192
191
  config = read_config(path)
193
192
  config['root'] = File.dirname(path) unless config['root']
194
193
 
195
- configure(config, root) do |configured_root, other_configs|
196
- if block_given?
197
- yield(configured_root, path, other_configs)
198
- else
199
- log(:warn, "ignoring configs: #{path} (#{other_configs.keys.join(',')})", Logger::WARN)
200
- end
201
- end
202
-
194
+ configure(config, root, &block)
203
195
  end
204
196
 
205
- def configure(config, root=Tap::Root.new, &block)
197
+ #--
198
+ # Note: always yields to the block, even if non_env_configs is empty
199
+ def configure(config, root=Tap::Root.new, &block) # :yields: non_env_configs
206
200
  root_configs, env_configs, other_configs = partition_configs(config, ['root', 'directories', 'absolute_paths'], DEFAULT_CONFIG.keys)
207
201
  env_configs = join_configs(DEFAULT_CONFIG, env_configs)
208
202
 
@@ -214,20 +208,19 @@ module Tap
214
208
 
215
209
  # handle unknown configs (handle before setting
216
210
  # env configs in case the configs modify root)
217
- unless other_configs.empty?
218
- if block_given?
219
- yield(root, other_configs)
220
- else
221
- log(:warn, "ignoring configs: (#{other_configs.keys.join(',')})", Logger::WARN)
222
- end
211
+ case
212
+ when block_given?
213
+ yield(other_configs)
214
+ when !other_configs.empty?
215
+ log(:warn, "ignoring non-env configs: #{other_configs.keys.join(',')}", Logger::DEBUG)
223
216
  end
224
-
217
+
225
218
  # load gems and configurations
226
219
  gem_paths = env_configs.delete('gems').collect do |gem_name|
227
220
  full_gem_path(gem_name)
228
221
  end
229
222
  config_paths = env_configs.delete('config_paths') + gem_paths
230
- config_paths.each {|path| load_config(root[path], &block) }
223
+ config_paths.each {|path| load_config(root[path]) }
231
224
 
232
225
  # assign env configs
233
226
  env_configs.each_pair do |key, value|
@@ -239,7 +232,7 @@ module Tap
239
232
  when /_paths$/
240
233
  assign_paths(root, value, self.config[key])
241
234
  else
242
- handle_unknown_config(key, value)
235
+ handle_unknown_env_config(root, key, value)
243
236
  end
244
237
  end
245
238
 
@@ -266,10 +259,36 @@ module Tap
266
259
  spec.full_gem_path
267
260
  end
268
261
 
262
+ # Loads the config for the specified gem. A gem version can be
263
+ # specified in the name, see full_gem_path.
269
264
  def load_gem(gem_name)
270
265
  load_config(full_gem_path(gem_name))
271
266
  end
272
267
 
268
+ # Returns the path to all DEFAULT_CONFIG_FILEs for installed gems.
269
+ # If latest==true, then only the config files for the latest gem
270
+ # specs will be returned (ie for the most current version of a
271
+ # gem).
272
+ def gem_config_files(latest=true)
273
+ if latest
274
+ Gem.source_index.latest_specs.collect do |spec|
275
+ config_file = File.join(spec.full_gem_path, DEFAULT_CONFIG_FILE)
276
+ File.exists?(config_file) ? config_file : nil
277
+ end.compact
278
+ else
279
+ Gem.path.collect do |dir|
280
+ Dir.glob( File.join(dir, "gems/*", DEFAULT_CONFIG_FILE) )
281
+ end.flatten.uniq
282
+ end
283
+ end
284
+
285
+ # Loads the config files discovered by gem_config_files(true).
286
+ def discover_gems
287
+ gem_config_files.collect do |config_file|
288
+ load_config(config_file)
289
+ end
290
+ end
291
+
273
292
  # Searches for and returns all .rb files under each of the command_paths
274
293
  # as well as the default tap commands. Commands with conflicting names
275
294
  # raise an error; however, user commands are allowed to override the
@@ -309,7 +328,7 @@ module Tap
309
328
  end
310
329
  end
311
330
 
312
- def handle_unknown_config(key, value)
331
+ def handle_unknown_env_config(key, value)
313
332
  raise "unknown env config: #{key}"
314
333
  end
315
334
  end