sprout 1.0.32.pre → 1.0.35.pre

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sprout might be problematic. Click here for more details.

Files changed (208) hide show
  1. data/Gemfile +2 -1
  2. data/Gemfile.lock +4 -2
  3. data/README.textile +12 -13
  4. data/VERSION +1 -0
  5. data/doc/Dir.html +288 -0
  6. data/doc/Rake/Task.html +184 -0
  7. data/doc/Sprout.html +144 -0
  8. data/doc/Sprout/ArchiveUnpacker.html +1246 -0
  9. data/doc/Sprout/Base.html +126 -0
  10. data/doc/Sprout/Base/ClassMethods.html +434 -0
  11. data/doc/Sprout/Concern.html +353 -0
  12. data/doc/Sprout/Daemon.html +166 -0
  13. data/doc/Sprout/Daemon/ClassMethods.html +244 -0
  14. data/doc/Sprout/Daemon/InstanceMethods.html +601 -0
  15. data/doc/Sprout/Errors.html +101 -0
  16. data/doc/Sprout/Errors/ArchiveUnpackerError.html +125 -0
  17. data/doc/Sprout/Errors/DestinationExistsError.html +133 -0
  18. data/doc/Sprout/Errors/DuplicateMemberError.html +132 -0
  19. data/doc/Sprout/Errors/ExecutableError.html +125 -0
  20. data/doc/Sprout/Errors/ExecutableRegistrationError.html +132 -0
  21. data/doc/Sprout/Errors/ExecutionError.html +121 -0
  22. data/doc/Sprout/Errors/GeneratorError.html +125 -0
  23. data/doc/Sprout/Errors/InvalidArgumentError.html +132 -0
  24. data/doc/Sprout/Errors/LoadError.html +121 -0
  25. data/doc/Sprout/Errors/MissingArgumentError.html +132 -0
  26. data/doc/Sprout/Errors/MissingExecutableError.html +132 -0
  27. data/doc/Sprout/Errors/MissingGeneratorError.html +132 -0
  28. data/doc/Sprout/Errors/MissingTemplateError.html +132 -0
  29. data/doc/Sprout/Errors/ProcessRunnerError.html +121 -0
  30. data/doc/Sprout/Errors/RemoteFileLoaderError.html +110 -0
  31. data/doc/Sprout/Errors/SproutError.html +114 -0
  32. data/doc/Sprout/Errors/UnknownArchiveType.html +122 -0
  33. data/doc/Sprout/Errors/UsageError.html +121 -0
  34. data/doc/Sprout/Errors/ValidationError.html +121 -0
  35. data/doc/Sprout/Errors/VersionRequirementNotMetError.html +121 -0
  36. data/doc/Sprout/Executable.html +173 -0
  37. data/doc/Sprout/Executable/Boolean.html +483 -0
  38. data/doc/Sprout/Executable/ClassMethods.html +417 -0
  39. data/doc/Sprout/Executable/CollectionParam.html +483 -0
  40. data/doc/Sprout/Executable/FileParam.html +484 -0
  41. data/doc/Sprout/Executable/Files.html +292 -0
  42. data/doc/Sprout/Executable/InstanceMethods.html +2006 -0
  43. data/doc/Sprout/Executable/Number.html +141 -0
  44. data/doc/Sprout/Executable/Param.html +2818 -0
  45. data/doc/Sprout/Executable/ParameterFactory.html +232 -0
  46. data/doc/Sprout/Executable/Path.html +223 -0
  47. data/doc/Sprout/Executable/Paths.html +253 -0
  48. data/doc/Sprout/Executable/StringParam.html +213 -0
  49. data/doc/Sprout/Executable/Strings.html +167 -0
  50. data/doc/Sprout/Executable/Url.html +160 -0
  51. data/doc/Sprout/Executable/Urls.html +170 -0
  52. data/doc/Sprout/FileTarget.html +1109 -0
  53. data/doc/Sprout/Generator.html +689 -0
  54. data/doc/Sprout/Generator/Base.html +1626 -0
  55. data/doc/Sprout/Generator/Command.html +690 -0
  56. data/doc/Sprout/Generator/DirectoryManifest.html +476 -0
  57. data/doc/Sprout/Generator/FileManifest.html +572 -0
  58. data/doc/Sprout/Generator/Manifest.html +377 -0
  59. data/doc/Sprout/Generator/TemplateManifest.html +196 -0
  60. data/doc/Sprout/GeneratorGenerator.html +1018 -0
  61. data/doc/Sprout/Library.html +1141 -0
  62. data/doc/Sprout/LibraryGenerator.html +309 -0
  63. data/doc/Sprout/Log.html +496 -0
  64. data/doc/Sprout/MXMLC.html +6373 -0
  65. data/doc/Sprout/Platform.html +714 -0
  66. data/doc/Sprout/ProcessRunner.html +1352 -0
  67. data/doc/Sprout/ProgressBar.html +376 -0
  68. data/doc/Sprout/ProgressBarImpl.html +2119 -0
  69. data/doc/Sprout/ProgressBarManager.html +434 -0
  70. data/doc/Sprout/ProgressBarOutputStream.html +416 -0
  71. data/doc/Sprout/RDocParser.html +211 -0
  72. data/doc/Sprout/RemoteFileLoader.html +172 -0
  73. data/doc/Sprout/RemoteFileTarget.html +679 -0
  74. data/doc/Sprout/ReversedProgressBar.html +194 -0
  75. data/doc/Sprout/RubyFeature.html +155 -0
  76. data/doc/Sprout/RubyFeature/ClassMethods.html +1065 -0
  77. data/doc/Sprout/RubyGenerator.html +764 -0
  78. data/doc/Sprout/Specification.html +767 -0
  79. data/doc/Sprout/System.html +191 -0
  80. data/doc/Sprout/System/BaseSystem.html +1455 -0
  81. data/doc/Sprout/System/JavaSystem.html +122 -0
  82. data/doc/Sprout/System/OSXSystem.html +335 -0
  83. data/doc/Sprout/System/ThreadMock.html +193 -0
  84. data/doc/Sprout/System/UnixSystem.html +584 -0
  85. data/doc/Sprout/System/VistaSystem.html +251 -0
  86. data/doc/Sprout/System/WinNixSystem.html +325 -0
  87. data/doc/Sprout/System/WinSystem.html +571 -0
  88. data/doc/Sprout/ToolGenerator.html +931 -0
  89. data/doc/Sprout/VERSION.html +128 -0
  90. data/doc/SproutTestCase.html +1412 -0
  91. data/doc/String.html +286 -0
  92. data/doc/_index.html +1035 -0
  93. data/doc/class_list.html +36 -0
  94. data/doc/css/common.css +1 -0
  95. data/doc/css/full_list.css +53 -0
  96. data/doc/css/style.css +310 -0
  97. data/doc/file.README.html +96 -0
  98. data/doc/file.archive_unpacker.html +288 -0
  99. data/doc/file.base.html +208 -0
  100. data/doc/file.base_system.html +278 -0
  101. data/doc/file.boolean.html +135 -0
  102. data/doc/file.collection_param.html +139 -0
  103. data/doc/file.command.html +126 -0
  104. data/doc/file.concern.html +136 -0
  105. data/doc/file.daemon.html +309 -0
  106. data/doc/file.dir.html +76 -0
  107. data/doc/file.directory_manifest.html +122 -0
  108. data/doc/file.errors.html +147 -0
  109. data/doc/file.executable.html +638 -0
  110. data/doc/file.file_manifest.html +109 -0
  111. data/doc/file.file_param.html +120 -0
  112. data/doc/file.file_target.html +140 -0
  113. data/doc/file.files.html +85 -0
  114. data/doc/file.generator.html +296 -0
  115. data/doc/file.generator_class.html +72 -0
  116. data/doc/file.generator_generator.html +137 -0
  117. data/doc/file.generator_test.html +92 -0
  118. data/doc/file.generator_test_helper.html +67 -0
  119. data/doc/file.java_system.html +62 -0
  120. data/doc/file.library.html +291 -0
  121. data/doc/file.library_generator.html +74 -0
  122. data/doc/file.log.html +100 -0
  123. data/doc/file.manifest.html +67 -0
  124. data/doc/file.mxmlc.html +740 -0
  125. data/doc/file.number.html +67 -0
  126. data/doc/file.osx_system.html +79 -0
  127. data/doc/file.param.html +491 -0
  128. data/doc/file.parameter_factory.html +119 -0
  129. data/doc/file.path.html +81 -0
  130. data/doc/file.paths.html +80 -0
  131. data/doc/file.platform.html +124 -0
  132. data/doc/file.process_runner.html +224 -0
  133. data/doc/file.progress_bar.html +390 -0
  134. data/doc/file.rdoc_parser.html +145 -0
  135. data/doc/file.remote_file_loader.html +117 -0
  136. data/doc/file.remote_file_target.html +176 -0
  137. data/doc/file.ruby_base.html +64 -0
  138. data/doc/file.ruby_feature.html +244 -0
  139. data/doc/file.ruby_generator.html +118 -0
  140. data/doc/file.ruby_input.html +62 -0
  141. data/doc/file.ruby_test_case.html +78 -0
  142. data/doc/file.ruby_test_helper.html +61 -0
  143. data/doc/file.specification.html +248 -0
  144. data/doc/file.sprout.html +64 -0
  145. data/doc/file.sprout_test_case.html +280 -0
  146. data/doc/file.string.html +72 -0
  147. data/doc/file.string_param.html +76 -0
  148. data/doc/file.strings.html +71 -0
  149. data/doc/file.system.html +86 -0
  150. data/doc/file.template_manifest.html +67 -0
  151. data/doc/file.tool.html +92 -0
  152. data/doc/file.tool_generator.html +90 -0
  153. data/doc/file.unix_system.html +128 -0
  154. data/doc/file.url.html +71 -0
  155. data/doc/file.urls.html +70 -0
  156. data/doc/file.version.html +71 -0
  157. data/doc/file.vista_system.html +69 -0
  158. data/doc/file.win_nix_system.html +88 -0
  159. data/doc/file.win_system.html +129 -0
  160. data/doc/file_list.html +230 -0
  161. data/doc/frames.html +13 -0
  162. data/doc/index.html +96 -0
  163. data/doc/js/app.js +202 -0
  164. data/doc/js/full_list.js +149 -0
  165. data/doc/js/jquery.js +154 -0
  166. data/doc/method_list.html +3355 -0
  167. data/doc/top-level-namespace.html +192 -0
  168. data/lib/sprout/archive_unpacker.rb +203 -137
  169. data/lib/sprout/base.rb +38 -11
  170. data/lib/sprout/concern.rb +51 -0
  171. data/lib/sprout/daemon.rb +256 -0
  172. data/lib/sprout/executable.rb +40 -11
  173. data/lib/sprout/executable/boolean.rb +47 -1
  174. data/lib/sprout/executable/collection_param.rb +33 -1
  175. data/lib/sprout/executable/file_param.rb +16 -3
  176. data/lib/sprout/executable/files.rb +5 -0
  177. data/lib/sprout/executable/number.rb +5 -1
  178. data/lib/sprout/executable/param.rb +232 -16
  179. data/lib/sprout/executable/parameter_factory.rb +39 -1
  180. data/lib/sprout/executable/path.rb +7 -1
  181. data/lib/sprout/executable/paths.rb +6 -1
  182. data/lib/sprout/executable/string_param.rb +8 -1
  183. data/lib/sprout/executable/strings.rb +7 -1
  184. data/lib/sprout/executable/url.rb +8 -1
  185. data/lib/sprout/executable/urls.rb +7 -1
  186. data/lib/sprout/file_target.rb +11 -11
  187. data/lib/sprout/generator.rb +244 -0
  188. data/lib/sprout/generator/base.rb +0 -94
  189. data/lib/sprout/generators/generator/generator_generator.rb +35 -1
  190. data/lib/sprout/generators/generator/templates/generator_class.rb +3 -3
  191. data/lib/sprout/library.rb +75 -0
  192. data/lib/sprout/log.rb +11 -12
  193. data/lib/sprout/process_runner.rb +29 -9
  194. data/lib/sprout/remote_file_target.rb +20 -9
  195. data/lib/sprout/system/base_system.rb +11 -3
  196. data/lib/sprout/test/sprout_test_case.rb +1 -0
  197. data/lib/sprout/version.rb +7 -11
  198. data/rakefile.rb +7 -12
  199. data/script/add_param_handler.rb +43 -0
  200. data/sprout.gemspec +2 -3
  201. data/test/fixtures/executable/fdb.rb +764 -0
  202. data/test/fixtures/executable/flex3sdk_gem/fdb +60 -0
  203. data/test/fixtures/executable/mxmlc.rb +9 -11
  204. data/test/unit/daemon_test.rb +61 -0
  205. data/test/unit/process_runner_test.rb +21 -0
  206. data/test/unit/remote_file_target_test.rb +45 -11
  207. data/test/unit/sprout_test_helper.rb +1 -1
  208. metadata +210 -29
@@ -0,0 +1,92 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta name="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>File: generator_test</title>
7
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
8
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
9
+
10
+ <script type="text/javascript" charset="utf-8">
11
+ relpath = '';
12
+ if (relpath != '') relpath += '/';
13
+ </script>
14
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
15
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
16
+
17
+ </head>
18
+ <body>
19
+ <script type="text/javascript" charset="utf-8">
20
+ if (window.top.frames.main) document.body.className = 'frames';
21
+ </script>
22
+
23
+ <div id="header">
24
+ <div id="menu">
25
+
26
+ <a href="_index.html" title="Index">Index</a> &raquo;
27
+ <span class="title">File: generator_test</span>
28
+
29
+
30
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
31
+ </div>
32
+
33
+ <div id="search">
34
+ <a id="class_list_link" href="#">Class List</a>
35
+ <a id="method_list_link" href="#">Method List</a>
36
+ <a id ="file_list_link" href="#">File List</a>
37
+ </div>
38
+
39
+ <div class="clear"></div>
40
+ </div>
41
+
42
+ <iframe id="search_frame"></iframe>
43
+
44
+ <div id="content"><div id='filecontents'>
45
+ <p>require File.join(File.dirname(__FILE__), “test_helper”)</p>
46
+
47
+ <p>require ‘generators/&lt;%= input.snake_case %&gt;_generator’</p>
48
+
49
+ <p>class &lt;%= input.camel_case %&gt;GeneratorTest &lt; Test::Unit::TestCase</p>
50
+
51
+ <pre class="code">include SproutTestCase
52
+
53
+ context &quot;A new &lt;%= input.camel_case %&gt; generator&quot; do
54
+
55
+ setup do
56
+ @temp = File.join(fixtures, 'generators', 'tmp')
57
+ FileUtils.mkdir_p @temp
58
+ @generator = Sprout::&lt;%= input.camel_case %&gt;Generator.new
59
+ @generator.path = @temp
60
+ @generator.logger = StringIO.new
61
+ end
62
+
63
+ teardown do
64
+ remove_file @temp
65
+ end
66
+
67
+ should &quot;generate a new &lt;%= input.camel_case %&gt;&quot; do
68
+ @generator.input = &quot;&lt;%= input.camel_case %&gt;&quot;
69
+ @generator.execute
70
+
71
+ input_dir = File.join(@temp, &quot;&lt;%= input.snake_case %&gt;&quot;)
72
+ assert_directory input_dir
73
+
74
+ input_file = File.join(input_dir, &quot;&lt;%= input.camel_case %&gt;&lt;%= extension %&gt;&quot;)
75
+ assert_file input_file do |content|
76
+ assert_matches /Your content to assert here/, content
77
+ end
78
+ end
79
+
80
+ end</pre>
81
+
82
+ <p>end</p>
83
+ </div></div>
84
+
85
+ <div id="footer">
86
+ Generated on Wed Dec 22 11:58:32 2010 by
87
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
88
+ 0.6.3 (ruby-1.9.2).
89
+ </div>
90
+
91
+ </body>
92
+ </html>
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta name="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>File: generator_test_helper</title>
7
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
8
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
9
+
10
+ <script type="text/javascript" charset="utf-8">
11
+ relpath = '';
12
+ if (relpath != '') relpath += '/';
13
+ </script>
14
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
15
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
16
+
17
+ </head>
18
+ <body>
19
+ <script type="text/javascript" charset="utf-8">
20
+ if (window.top.frames.main) document.body.className = 'frames';
21
+ </script>
22
+
23
+ <div id="header">
24
+ <div id="menu">
25
+
26
+ <a href="_index.html" title="Index">Index</a> &raquo;
27
+ <span class="title">File: generator_test_helper</span>
28
+
29
+
30
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
31
+ </div>
32
+
33
+ <div id="search">
34
+ <a id="class_list_link" href="#">Class List</a>
35
+ <a id="method_list_link" href="#">Method List</a>
36
+ <a id ="file_list_link" href="#">File List</a>
37
+ </div>
38
+
39
+ <div class="clear"></div>
40
+ </div>
41
+
42
+ <iframe id="search_frame"></iframe>
43
+
44
+ <div id="content"><div id='filecontents'>
45
+ <p>require “rubygems” require “bundler”</p>
46
+
47
+ <p>Bundler.setup :default, :development</p>
48
+
49
+ <p>require ‘sprout’ # These require statments <b>must</b> be in this order: #
50
+ <a href="http://bit.ly/bCC0Ew">bit.ly/bCC0Ew</a> # Somewhat surprised
51
+ they’re not being required by Bundler… require ‘shoulda’ require ‘mocha’</p>
52
+
53
+ <p>$:.unshift File.expand_path(File.join(File.dirname(__FILE__), ‘..’, ‘..’,
54
+ ‘lib’)) $:.unshift File.expand_path(File.join(File.dirname(__FILE__),
55
+ ‘..’))</p>
56
+
57
+ <p>require ‘sprout/test/sprout_test_case’</p>
58
+ </div></div>
59
+
60
+ <div id="footer">
61
+ Generated on Wed Dec 22 11:58:32 2010 by
62
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
63
+ 0.6.3 (ruby-1.9.2).
64
+ </div>
65
+
66
+ </body>
67
+ </html>
@@ -0,0 +1,62 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta name="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>File: java_system</title>
7
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
8
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
9
+
10
+ <script type="text/javascript" charset="utf-8">
11
+ relpath = '';
12
+ if (relpath != '') relpath += '/';
13
+ </script>
14
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
15
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
16
+
17
+ </head>
18
+ <body>
19
+ <script type="text/javascript" charset="utf-8">
20
+ if (window.top.frames.main) document.body.className = 'frames';
21
+ </script>
22
+
23
+ <div id="header">
24
+ <div id="menu">
25
+
26
+ <a href="_index.html" title="Index">Index</a> &raquo;
27
+ <span class="title">File: java_system</span>
28
+
29
+
30
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
31
+ </div>
32
+
33
+ <div id="search">
34
+ <a id="class_list_link" href="#">Class List</a>
35
+ <a id="method_list_link" href="#">Method List</a>
36
+ <a id ="file_list_link" href="#">File List</a>
37
+ </div>
38
+
39
+ <div class="clear"></div>
40
+ </div>
41
+
42
+ <iframe id="search_frame"></iframe>
43
+
44
+ <div id="content"><div id='filecontents'>
45
+ <p>module Sprout::System</p>
46
+
47
+ <pre class="code"><span class='comment'># The concrete system for the JRuby environment
48
+ </span><span class='kw'>class</span> <span class='const'>JavaSystem</span> <span class='op'>&lt;</span> <span class='const'>BaseSystem</span>
49
+
50
+ <span class='kw'>end</span></pre>
51
+
52
+ <p>end</p>
53
+ </div></div>
54
+
55
+ <div id="footer">
56
+ Generated on Wed Dec 22 11:58:32 2010 by
57
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
58
+ 0.6.3 (ruby-1.9.2).
59
+ </div>
60
+
61
+ </body>
62
+ </html>
@@ -0,0 +1,291 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta name="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>File: library</title>
7
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
8
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
9
+
10
+ <script type="text/javascript" charset="utf-8">
11
+ relpath = '';
12
+ if (relpath != '') relpath += '/';
13
+ </script>
14
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
15
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
16
+
17
+ </head>
18
+ <body>
19
+ <script type="text/javascript" charset="utf-8">
20
+ if (window.top.frames.main) document.body.className = 'frames';
21
+ </script>
22
+
23
+ <div id="header">
24
+ <div id="menu">
25
+
26
+ <a href="_index.html" title="Index">Index</a> &raquo;
27
+ <span class="title">File: library</span>
28
+
29
+
30
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
31
+ </div>
32
+
33
+ <div id="search">
34
+ <a id="class_list_link" href="#">Class List</a>
35
+ <a id="method_list_link" href="#">Method List</a>
36
+ <a id ="file_list_link" href="#">File List</a>
37
+ </div>
38
+
39
+ <div class="clear"></div>
40
+ </div>
41
+
42
+ <iframe id="search_frame"></iframe>
43
+
44
+ <div id="content"><div id='filecontents'>
45
+ <p>module Sprout</p>
46
+
47
+ <pre class="code"><span class='comment'>##
48
+ </span><span class='comment'># Sprout Libraries provide support for sharing and versioning raw or
49
+ </span><span class='comment'># pre-compiled source code across projects.
50
+ </span><span class='comment'>#
51
+ </span><span class='comment'># Sprout Libraries give us the ability to include raw (or pre-compiled) source
52
+ </span><span class='comment'># code directly within a Ruby Gem, or to refer to an archive somewhere on
53
+ </span><span class='comment'># the internet.
54
+ </span><span class='comment'>#
55
+ </span><span class='comment'># A Sprout Library is made up of two components:
56
+ </span><span class='comment'>#
57
+ </span><span class='comment'># * Specification: The description of the library
58
+ </span><span class='comment'># * Source Code: Raw or pre-compiled (swc, jar, abc)
59
+ </span><span class='comment'>#
60
+ </span><span class='comment'># = Specification
61
+ </span><span class='comment'># Libraries can be added to local or remote file targets in a
62
+ </span><span class='comment'># Sprout::Specification. When calling add_library, one must provide the
63
+ </span><span class='comment'># library name (symbol that will be used from Rake) and a relative path (or
64
+ </span><span class='comment'># Array of paths) from the Specification to the library file or directory.
65
+ </span><span class='comment'>#
66
+ </span><span class='comment'># Following is an example of a Sprout::Specification that registers a SWC
67
+ </span><span class='comment'># that will be distributed directly within a Ruby Gem:
68
+ </span><span class='comment'>#
69
+ </span><span class='comment'># Sprout::Specification.new do |s|
70
+ </span><span class='comment'># s.name = &quot;asunit4&quot;
71
+ </span><span class='comment'># s.version = &quot;4.4.2&quot;
72
+ </span><span class='comment'># s.add_file_target do |f|
73
+ </span><span class='comment'># f.add_library :swc, File.join('bin', &quot;AsUnit-4.4.2.swc&quot;)
74
+ </span><span class='comment'># end
75
+ </span><span class='comment'># end
76
+ </span><span class='comment'>#
77
+ </span><span class='comment'># Following is an example of a Sprout::Specification that registers a ZIP
78
+ </span><span class='comment'># archive that will be distributed separately from the Ruby Gem:
79
+ </span><span class='comment'>#
80
+ </span><span class='comment'># Sprout::Specification.new do |s|
81
+ </span><span class='comment'># s.name = &quot;asunit3&quot;
82
+ </span><span class='comment'># s.version = &quot;3.0.0&quot;
83
+ </span><span class='comment'># s.add_remote_file_target do |f|
84
+ </span><span class='comment'># f.url = &quot;https://github.com/patternpark/asunit/tree/3.0.0&quot;
85
+ </span><span class='comment'># f.md5 = &quot;abcdefghijklmnopqrstuvwxyz&quot;
86
+ </span><span class='comment'># f.add_library :swc, &quot;bin/AsUnit-3.0.1.zip&quot;
87
+ </span><span class='comment'># end
88
+ </span><span class='comment'># end
89
+ </span><span class='comment'>#
90
+ </span><span class='comment'># Libraries can be consumed from any Rakefile without concern for how
91
+ </span><span class='comment'># the source code is distributed. Following is an example Rake task
92
+ </span><span class='comment'># that uses the AsUnit 4.0 Library:
93
+ </span><span class='comment'>#
94
+ </span><span class='comment'># # Define the library Rake::Task:
95
+ </span><span class='comment'># library :asunit4
96
+ </span><span class='comment'>#
97
+ </span><span class='comment'># # Add the library as a dependency from another task
98
+ </span><span class='comment'># # that should know how to properly associate the files:
99
+ </span><span class='comment'># mxmlc 'bin/SomeProject.swf' =&gt; :asunit4 do |t|
100
+ </span><span class='comment'># t.input = 'src/SomeProject.as'
101
+ </span><span class='comment'># end
102
+ </span><span class='comment'>#
103
+ </span><span class='comment'># When the library task is executed, the library should be resolved and
104
+ </span><span class='comment'># expanded into the project. When the mxmlc task is executed, the installed
105
+ </span><span class='comment'># library should be associated with the compilation command.
106
+ </span><span class='comment'>#
107
+ </span><span class='comment'># ---
108
+ </span><span class='comment'>#
109
+ </span><span class='comment'># Previous Topic: {Sprout::Generator}
110
+ </span><span class='comment'>#
111
+ </span><span class='comment'># Next Topic: {Sprout::Executable}
112
+ </span><span class='comment'>#
113
+ </span><span class='comment'># ---
114
+ </span><span class='comment'>#
115
+ </span><span class='comment'># @see Sprout::Generator
116
+ </span><span class='comment'># @see Sprout::Executable
117
+ </span><span class='comment'># @see Sprout::Specification
118
+ </span><span class='comment'># @see Sprout::RubyFeature
119
+ </span><span class='comment'># @see Sprout::System
120
+ </span><span class='comment'>#
121
+ </span><span class='kw'>class</span> <span class='const'>Library</span>
122
+ <span class='id include'>include</span> <span class='const'>RubyFeature</span>
123
+
124
+ <span class='const'>TASK_NAME</span> <span class='op'>=</span> <span class='symbol'>:resolve_sprout_libraries</span>
125
+
126
+ <span class='id attr_accessor'>attr_accessor</span> <span class='symbol'>:file_target</span>
127
+ <span class='id attr_accessor'>attr_accessor</span> <span class='symbol'>:installed_project_path</span>
128
+ <span class='id attr_accessor'>attr_accessor</span> <span class='symbol'>:name</span>
129
+ <span class='id attr_accessor'>attr_accessor</span> <span class='symbol'>:path</span>
130
+ <span class='id attr_accessor'>attr_accessor</span> <span class='symbol'>:pkg_name</span>
131
+ <span class='id attr_accessor'>attr_accessor</span> <span class='symbol'>:pkg_version</span>
132
+ <span class='id attr_accessor'>attr_accessor</span> <span class='symbol'>:platform</span>
133
+
134
+ <span class='kw'>class</span> <span class='op'>&lt;&lt;</span> <span class='kw'>self</span>
135
+ <span class='comment'>##
136
+ </span> <span class='comment'># Set the path within a project
137
+ </span> <span class='comment'># where libraries should be loaded.
138
+ </span> <span class='comment'>#
139
+ </span> <span class='comment'># From top of your Rakefile, you can
140
+ </span> <span class='comment'># set this value with:
141
+ </span> <span class='comment'>#
142
+ </span> <span class='comment'># Sprout::Library.project_path = 'libs'
143
+ </span> <span class='comment'>#
144
+ </span> <span class='kw'>def</span> <span class='id project_path='>project_path=</span><span class='lparen'>(</span><span class='id path'>path</span><span class='rparen'>)</span>
145
+ <span class='ivar'>@project_path</span> <span class='op'>=</span> <span class='id path'>path</span>
146
+ <span class='kw'>end</span>
147
+
148
+ <span class='comment'>##
149
+ </span> <span class='comment'># The path within a project where
150
+ </span> <span class='comment'># libraries should be added.
151
+ </span> <span class='comment'>#
152
+ </span> <span class='comment'># Defaults to 'lib'
153
+ </span> <span class='comment'>#
154
+ </span> <span class='comment'># From anywhere in your Rakefile, you can output
155
+ </span> <span class='comment'># this value with:
156
+ </span> <span class='comment'>#
157
+ </span> <span class='comment'># puts &quot;&gt;&gt; Library Project Path: #{Sprout::Library.project_path}&quot;
158
+ </span> <span class='comment'>#
159
+ </span> <span class='kw'>def</span> <span class='id project_path'>project_path</span>
160
+ <span class='ivar'>@project_path</span> <span class='op'>||=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>lib</span><span class='tstring_end'>'</span></span>
161
+ <span class='kw'>end</span>
162
+
163
+ <span class='comment'>##
164
+ </span> <span class='comment'># Create Rake tasks that will load and install
165
+ </span> <span class='comment'># a particular library into the current project.
166
+ </span> <span class='comment'>#
167
+ </span> <span class='comment'># This method is usually accessed from the global
168
+ </span> <span class='comment'># library helper.
169
+ </span> <span class='comment'>#
170
+ </span> <span class='comment'># library :asunit4
171
+ </span> <span class='comment'>#
172
+ </span> <span class='kw'>def</span> <span class='id define_task'>define_task</span> <span class='id name'>name</span><span class='op'>=</span><span class='kw'>nil</span><span class='comma'>,</span> <span class='id pkg_name'>pkg_name</span><span class='op'>=</span><span class='kw'>nil</span><span class='comma'>,</span> <span class='id pkg_version'>pkg_version</span><span class='op'>=</span><span class='kw'>nil</span>
173
+ <span class='id library'>library</span> <span class='op'>=</span> <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Library</span><span class='period'>.</span><span class='id load'>load</span> <span class='id name'>name</span><span class='comma'>,</span> <span class='id pkg_name'>pkg_name</span><span class='comma'>,</span> <span class='id pkg_version'>pkg_version</span>
174
+ <span class='id library'>library</span><span class='period'>.</span><span class='id create_installation_tasks'>create_installation_tasks</span>
175
+ <span class='kw'>end</span>
176
+ <span class='kw'>end</span>
177
+
178
+ <span class='kw'>def</span> <span class='id initialize'>initialize</span> <span class='id params'>params</span><span class='op'>=</span><span class='kw'>nil</span>
179
+ <span class='id params'>params</span><span class='period'>.</span><span class='id each'>each</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id key'>key</span><span class='comma'>,</span><span class='id value'>value</span><span class='op'>|</span> <span class='kw'>self</span><span class='period'>.</span><span class='id send'>send</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id key'>key</span><span class='rbrace'>}</span><span class='tstring_content'>=</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id value'>value</span><span class='rparen'>)</span><span class='rbrace'>}</span> <span class='kw'>unless</span> <span class='id params'>params</span><span class='period'>.</span><span class='id nil?'>nil?</span>
180
+ <span class='kw'>super</span><span class='lparen'>(</span><span class='rparen'>)</span>
181
+ <span class='kw'>end</span>
182
+
183
+ <span class='comment'>##
184
+ </span> <span class='comment'># Returns the outer Rake::Task which is invokable.
185
+ </span> <span class='kw'>def</span> <span class='id create_installation_tasks'>create_installation_tasks</span>
186
+ <span class='id define_lib_dir_task_if_necessary'>define_lib_dir_task_if_necessary</span> <span class='id project_path'>project_path</span>
187
+ <span class='id create_project_tasks'>create_project_tasks</span>
188
+ <span class='id create_outer_task'>create_outer_task</span>
189
+ <span class='kw'>end</span>
190
+
191
+ <span class='kw'>def</span> <span class='id create_outer_task'>create_outer_task</span>
192
+ <span class='id t'>t</span> <span class='op'>=</span> <span class='id task'>task</span> <span class='id pkg_name'>pkg_name</span>
193
+ <span class='comment'># This helps executable rake tasks decide if they
194
+ </span> <span class='comment'># want to do something special for library tasks.
195
+ </span> <span class='id t'>t</span><span class='period'>.</span><span class='id sprout_entity'>sprout_entity</span> <span class='op'>=</span> <span class='kw'>self</span>
196
+ <span class='kw'>class</span> <span class='op'>&lt;&lt;</span> <span class='id t'>t</span>
197
+ <span class='kw'>def</span> <span class='id sprout_library?'>sprout_library?</span>
198
+ <span class='op'>!</span><span class='id sprout_entity'>sprout_entity</span><span class='period'>.</span><span class='id nil?'>nil?</span> <span class='op'>&amp;&amp;</span>
199
+ <span class='id sprout_entity'>sprout_entity</span><span class='period'>.</span><span class='id is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Library</span><span class='rparen'>)</span>
200
+ <span class='kw'>end</span>
201
+ <span class='kw'>end</span>
202
+ <span class='id t'>t</span>
203
+ <span class='kw'>end</span>
204
+
205
+ <span class='id private'>private</span>
206
+
207
+ <span class='kw'>def</span> <span class='id project_path'>project_path</span>
208
+ <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Library</span><span class='period'>.</span><span class='id project_path'>project_path</span>
209
+ <span class='kw'>end</span>
210
+
211
+ <span class='kw'>def</span> <span class='id create_project_tasks'>create_project_tasks</span>
212
+ <span class='kw'>if</span> <span class='id path'>path</span><span class='period'>.</span><span class='id is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Array</span><span class='rparen'>)</span>
213
+ <span class='comment'># TODO: Need to add support for merging these directories
214
+ </span> <span class='comment'># rather than simply clobbering...
215
+ </span> <span class='ivar'>@instaled_project_path</span> <span class='op'>=</span> <span class='id path'>path</span><span class='period'>.</span><span class='id collect'>collect</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id single_path'>single_path</span><span class='op'>|</span> <span class='id define_project_path_task'>define_project_path_task</span> <span class='id pkg_name'>pkg_name</span><span class='comma'>,</span> <span class='id single_path'>single_path</span> <span class='rbrace'>}</span>
216
+ <span class='kw'>else</span>
217
+ <span class='ivar'>@installed_project_path</span> <span class='op'>=</span> <span class='id define_project_path_task'>define_project_path_task</span> <span class='id pkg_name'>pkg_name</span><span class='comma'>,</span> <span class='id path'>path</span>
218
+ <span class='kw'>end</span>
219
+ <span class='kw'>end</span>
220
+
221
+ <span class='kw'>def</span> <span class='id define_lib_dir_task_if_necessary'>define_lib_dir_task_if_necessary</span> <span class='id dir'>dir</span>
222
+ <span class='kw'>if</span> <span class='op'>!</span><span class='const'>File</span><span class='period'>.</span><span class='id exists?'>exists?</span><span class='lparen'>(</span><span class='id dir'>dir</span><span class='rparen'>)</span>
223
+ <span class='id define_file_task'>define_file_task</span> <span class='id dir'>dir</span> <span class='kw'>do</span>
224
+ <span class='const'>FileUtils</span><span class='period'>.</span><span class='id mkdir_p'>mkdir_p</span> <span class='id dir'>dir</span>
225
+ <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Log</span><span class='period'>.</span><span class='id puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&gt;&gt; Created directory at: </span><span class='embexpr_beg'>#{</span><span class='id dir'>dir</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
226
+ <span class='kw'>end</span>
227
+ <span class='kw'>end</span>
228
+ <span class='kw'>end</span>
229
+
230
+ <span class='kw'>def</span> <span class='id define_project_path_task'>define_project_path_task</span> <span class='id pkg_name'>pkg_name</span><span class='comma'>,</span> <span class='id path'>path</span>
231
+ <span class='id install_path'>install_path</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id project_path'>project_path</span><span class='rbrace'>}</span><span class='tstring_content'>/</span><span class='embexpr_beg'>#{</span><span class='id pkg_name'>pkg_name</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
232
+ <span class='kw'>if</span> <span class='const'>File</span><span class='period'>.</span><span class='id directory?'>directory?</span><span class='lparen'>(</span><span class='id path'>path</span><span class='rparen'>)</span>
233
+ <span class='id define_directory_copy_task'>define_directory_copy_task</span> <span class='id path'>path</span><span class='comma'>,</span> <span class='id install_path'>install_path</span>
234
+ <span class='kw'>else</span>
235
+ <span class='id define_file_copy_task'>define_file_copy_task</span> <span class='id path'>path</span><span class='comma'>,</span> <span class='id install_path'>install_path</span>
236
+ <span class='kw'>end</span>
237
+ <span class='kw'>end</span>
238
+
239
+ <span class='kw'>def</span> <span class='id define_directory_copy_task'>define_directory_copy_task</span> <span class='id path'>path</span><span class='comma'>,</span> <span class='id install_path'>install_path</span>
240
+ <span class='id define_file_task'>define_file_task</span> <span class='id install_path'>install_path</span> <span class='kw'>do</span>
241
+ <span class='const'>FileUtils</span><span class='period'>.</span><span class='id cp_r'>cp_r</span> <span class='id path'>path</span><span class='comma'>,</span> <span class='id install_path'>install_path</span>
242
+ <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Log</span><span class='period'>.</span><span class='id puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&gt;&gt; Copied files from: (</span><span class='embexpr_beg'>#{</span><span class='id path'>path</span><span class='rbrace'>}</span><span class='tstring_content'>) to: (</span><span class='embexpr_beg'>#{</span><span class='id install_path'>install_path</span><span class='rbrace'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
243
+ <span class='kw'>end</span>
244
+ <span class='id install_path'>install_path</span>
245
+ <span class='kw'>end</span>
246
+
247
+ <span class='kw'>def</span> <span class='id define_file_copy_task'>define_file_copy_task</span> <span class='id path'>path</span><span class='comma'>,</span> <span class='id install_path'>install_path</span>
248
+ <span class='id task_name'>task_name</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id install_path'>install_path</span><span class='rbrace'>}</span><span class='tstring_content'>/</span><span class='embexpr_beg'>#{</span><span class='const'>File</span><span class='period'>.</span><span class='id basename'>basename</span><span class='lparen'>(</span><span class='id path'>path</span><span class='rparen'>)</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
249
+ <span class='id define_file_task'>define_file_task</span> <span class='id task_name'>task_name</span> <span class='kw'>do</span>
250
+ <span class='const'>FileUtils</span><span class='period'>.</span><span class='id mkdir_p'>mkdir_p</span> <span class='id install_path'>install_path</span>
251
+ <span class='const'>FileUtils</span><span class='period'>.</span><span class='id cp'>cp</span> <span class='id path'>path</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id install_path'>install_path</span><span class='rbrace'>}</span><span class='tstring_content'>/</span><span class='tstring_end'>&quot;</span></span>
252
+ <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Log</span><span class='period'>.</span><span class='id puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>&gt;&gt; Copied file from: (</span><span class='embexpr_beg'>#{</span><span class='id path'>path</span><span class='rbrace'>}</span><span class='tstring_content'>) to: (</span><span class='embexpr_beg'>#{</span><span class='id task_name'>task_name</span><span class='rbrace'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
253
+ <span class='kw'>end</span>
254
+ <span class='id task_name'>task_name</span>
255
+ <span class='kw'>end</span>
256
+
257
+ <span class='kw'>def</span> <span class='id define_file_task'>define_file_task</span> <span class='id name'>name</span>
258
+ <span class='id file'>file</span> <span class='id name'>name</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id t'>t</span><span class='op'>|</span>
259
+ <span class='kw'>yield</span> <span class='kw'>if</span> <span class='id block_given?'>block_given?</span>
260
+ <span class='kw'>end</span>
261
+ <span class='id task'>task</span> <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Library</span><span class='op'>::</span><span class='const'>TASK_NAME</span> <span class='op'>=&gt;</span> <span class='id name'>name</span>
262
+ <span class='kw'>end</span>
263
+ <span class='kw'>end</span></pre>
264
+
265
+ <p>end</p>
266
+
267
+ <p># From within a Rakefile, you can load libraries # by calling this method:
268
+ # # library :asunit4 # # Or, if you would like to specify which
269
+ registered # library to pull from the identified package (by name): # #
270
+ library :asunit4, :src # # Or, if you’d like to specify version
271
+ requirements: # # library :asunit4, :swc, ‘&gt;= 4.2.pre’ # # It’s
272
+ important to note that libraries must also # be defined in your Gemfile
273
+ like: # # gem “asunit4”, “&gt;= 4.2.pre” # # Libraries are generally then
274
+ added to compiler tasks # as Rake dependencies like: # # mxmlc
275
+ ‘bin/SomeRunner.swf’ =&gt; [:asunit4] do |t| # t.input =
276
+ ‘src/SomeRunner.as’ # t.source_path &lt;&lt; ‘test’ # end # def
277
+ library pkg_name, name=nil, version=nil</p>
278
+
279
+ <pre class="code"><span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Library</span><span class='period'>.</span><span class='id define_task'>define_task</span> <span class='id name'>name</span><span class='comma'>,</span> <span class='id pkg_name'>pkg_name</span><span class='comma'>,</span> <span class='id version'>version</span></pre>
280
+
281
+ <p>end</p>
282
+ </div></div>
283
+
284
+ <div id="footer">
285
+ Generated on Wed Dec 22 11:58:32 2010 by
286
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
287
+ 0.6.3 (ruby-1.9.2).
288
+ </div>
289
+
290
+ </body>
291
+ </html>