sprout 0.7.246 → 1.0.0.pre

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 (211) hide show
  1. data/CHANGELOG.md +10 -0
  2. data/Gemfile +28 -0
  3. data/MIT-LICENSE +3 -2
  4. data/POSTINSTALL.rdoc +28 -0
  5. data/README.textile +152 -0
  6. data/bin/sprout +1 -131
  7. data/bin/sprout-generator +10 -0
  8. data/bin/sprout-library +11 -0
  9. data/bin/sprout-tool +10 -0
  10. data/lib/sprout.rb +4 -500
  11. data/lib/sprout/archive_unpacker.rb +122 -206
  12. data/lib/sprout/base.rb +90 -0
  13. data/lib/sprout/concern.rb +30 -0
  14. data/lib/sprout/dir.rb +23 -0
  15. data/lib/sprout/errors.rb +94 -0
  16. data/lib/sprout/executable.rb +496 -0
  17. data/lib/sprout/executable/boolean.rb +35 -0
  18. data/lib/sprout/executable/collection_param.rb +53 -0
  19. data/lib/sprout/executable/file_param.rb +53 -0
  20. data/lib/sprout/executable/files.rb +26 -0
  21. data/lib/sprout/executable/number.rb +10 -0
  22. data/lib/sprout/executable/param.rb +222 -0
  23. data/lib/sprout/executable/parameter_factory.rb +28 -0
  24. data/lib/sprout/executable/path.rb +21 -0
  25. data/lib/sprout/executable/paths.rb +21 -0
  26. data/lib/sprout/executable/string_param.rb +15 -0
  27. data/lib/sprout/executable/strings.rb +11 -0
  28. data/lib/sprout/executable/url.rb +10 -0
  29. data/lib/sprout/executable/urls.rb +10 -0
  30. data/lib/sprout/file_target.rb +76 -0
  31. data/lib/sprout/generator/base.rb +233 -0
  32. data/lib/sprout/generator/command.rb +67 -0
  33. data/lib/sprout/generator/directory_manifest.rb +49 -0
  34. data/lib/sprout/generator/file_manifest.rb +55 -0
  35. data/lib/sprout/generator/manifest.rb +13 -0
  36. data/lib/sprout/generator/template_manifest.rb +13 -0
  37. data/lib/sprout/generators/generator/generator_generator.rb +48 -0
  38. data/lib/sprout/generators/generator/templates/generator_class.rb +17 -0
  39. data/lib/sprout/generators/generator/templates/generator_executable +9 -0
  40. data/lib/sprout/generators/generator/templates/generator_template +1 -0
  41. data/lib/sprout/generators/generator/templates/generator_test.rb +37 -0
  42. data/lib/sprout/generators/generator/templates/generator_test_helper.rb +16 -0
  43. data/lib/sprout/generators/library/library_generator.rb +20 -0
  44. data/lib/sprout/generators/library/templates/library.gemspec +19 -0
  45. data/lib/sprout/generators/library/templates/library.rb +15 -0
  46. data/lib/sprout/generators/ruby/ruby_generator.rb +59 -0
  47. data/lib/sprout/generators/ruby/templates/ruby_base.rb +10 -0
  48. data/lib/sprout/generators/ruby/templates/ruby_executable +6 -0
  49. data/lib/sprout/generators/ruby/templates/ruby_gemfile +4 -0
  50. data/lib/sprout/generators/ruby/templates/ruby_input.rb +7 -0
  51. data/lib/sprout/generators/tool/templates/Gemfile +4 -0
  52. data/lib/sprout/generators/tool/templates/tool.gemspec +22 -0
  53. data/lib/sprout/generators/tool/templates/tool.rb +38 -0
  54. data/lib/sprout/generators/tool/tool_generator.rb +36 -0
  55. data/lib/sprout/library.rb +111 -0
  56. data/lib/sprout/log.rb +1 -0
  57. data/lib/sprout/platform.rb +71 -0
  58. data/lib/sprout/process_runner.rb +80 -40
  59. data/lib/sprout/progress_bar.rb +341 -0
  60. data/lib/sprout/rdoc_parser.rb +91 -0
  61. data/lib/sprout/remote_file_loader.rb +72 -50
  62. data/lib/sprout/remote_file_target.rb +44 -152
  63. data/lib/sprout/ruby_feature.rb +167 -0
  64. data/lib/sprout/specification.rb +197 -0
  65. data/lib/sprout/string.rb +19 -0
  66. data/lib/sprout/system.rb +35 -0
  67. data/lib/sprout/system/base_system.rb +225 -0
  68. data/lib/sprout/system/java_system.rb +9 -0
  69. data/lib/sprout/system/osx_system.rb +26 -0
  70. data/lib/sprout/system/unix_system.rb +72 -0
  71. data/lib/sprout/system/vista_system.rb +16 -0
  72. data/lib/sprout/system/win_nix_system.rb +41 -0
  73. data/lib/sprout/system/win_system.rb +76 -0
  74. data/lib/sprout/test/sprout_test_case.rb +211 -0
  75. data/lib/sprout/version.rb +9 -4
  76. data/rakefile.rb +85 -144
  77. data/script/console +10 -0
  78. data/script/destroy +14 -0
  79. data/script/generate +14 -0
  80. data/sprout.gemspec +26 -0
  81. data/test/fixtures/archive_unpacker/copyable/some_file.exe +0 -0
  82. data/test/fixtures/archive_unpacker/copyable/some_file.rb +0 -0
  83. data/test/fixtures/archive_unpacker/copyable/some_file.swc +0 -0
  84. data/test/fixtures/archive_unpacker/tgz/some folder.tgz +0 -0
  85. data/test/fixtures/archive_unpacker/tgz/some_file.tgz +0 -0
  86. data/test/fixtures/archive_unpacker/zip/some folder.zip +0 -0
  87. data/test/fixtures/archive_unpacker/zip/some_file.zip +0 -0
  88. data/test/fixtures/examples/app_generator.rb +127 -0
  89. data/test/fixtures/examples/echo_inputs.rb +151 -0
  90. data/test/fixtures/executable/echochamber_gem/bin/echochamber +3 -0
  91. data/test/fixtures/executable/echochamber_gem/echo_chamber.rb +10 -0
  92. data/test/fixtures/executable/flex3sdk_gem/flex3sdk.rb +11 -0
  93. data/test/fixtures/executable/flex3sdk_gem/mxmlc +3 -0
  94. data/test/fixtures/executable/flex3sdk_gem/mxmlc.bat +3 -0
  95. data/test/fixtures/executable/mxmlc.rb +805 -0
  96. data/test/fixtures/executable/params/input.as +0 -0
  97. data/test/fixtures/executable/params/input2.as +0 -0
  98. data/test/fixtures/executable/params/input3.as +0 -0
  99. data/test/fixtures/executable/params/mxmlc +5 -0
  100. data/test/fixtures/executable/path with spaces/input.as b/data/test/fixtures/executable/path with → spaces/input.as +0 -0
  101. data/test/fixtures/executable/path with spaces/input2.as b/data/test/fixtures/executable/path with → spaces/input2.as +0 -0
  102. data/test/fixtures/executable/path with spaces/input3.as b/data/test/fixtures/executable/path with → spaces/input3.as +0 -0
  103. data/test/fixtures/executable/paths/folder1/file1 +0 -0
  104. data/test/fixtures/executable/paths/folder1/file2 +0 -0
  105. data/test/fixtures/executable/paths/folder1/file3 +0 -0
  106. data/test/fixtures/executable/paths/folder2/file4 +0 -0
  107. data/test/fixtures/executable/paths/folder2/file5 +0 -0
  108. data/test/fixtures/executable/paths/folder3/file6 +0 -0
  109. data/test/fixtures/executable/src/Main.as +0 -0
  110. data/test/fixtures/executable/windows_line_endings +47 -0
  111. data/test/fixtures/generators/song_generator.rb +11 -0
  112. data/test/fixtures/generators/song_subclass/least_favorite.rb +10 -0
  113. data/test/fixtures/generators/song_subclass/templates/Song.txt +3 -0
  114. data/test/fixtures/generators/temp_generator.rb +24 -0
  115. data/test/fixtures/generators/templates/Main.as +9 -0
  116. data/test/fixtures/generators/templates/OtherFileTemplate +1 -0
  117. data/test/fixtures/generators/templates/SomeFile +1 -0
  118. data/test/fixtures/generators/templates/SomeSubclassFile +2 -0
  119. data/test/fixtures/generators/templates/Song.txt +3 -0
  120. data/test/fixtures/generators/templates/destroy +0 -0
  121. data/test/fixtures/generators/templates/generate +0 -0
  122. data/test/fixtures/library/archive/Archive.swc +0 -0
  123. data/test/fixtures/library/sources/lib/a/A.as +0 -0
  124. data/test/fixtures/library/sources/lib/b/B.as +0 -0
  125. data/test/fixtures/library/sources/src/Source.as +0 -0
  126. data/test/fixtures/process_runner/chmod_script.sh +3 -0
  127. data/test/fixtures/process_runner/dir with spaces/chmod_script.sh +3 -0
  128. data/test/fixtures/process_runner/failure +5 -0
  129. data/test/fixtures/process_runner/success +4 -0
  130. data/test/fixtures/remote_file_loader/md5/echochamber-test.zip +0 -0
  131. data/test/fixtures/remote_file_loader/md5/file_with_known_md5 +0 -0
  132. data/test/fixtures/remote_file_target/bin/echochamber +3 -0
  133. data/test/fixtures/remote_file_target/bin/echochamber.bat +3 -0
  134. data/test/fixtures/remote_file_target/echochamber-test.zip +0 -0
  135. data/test/fixtures/specification/asunit4.rb +25 -0
  136. data/test/fixtures/specification/ext/AsUnit-4.1.pre.swc +0 -0
  137. data/test/fixtures/specification/flashplayer.rb +30 -0
  138. data/test/fixtures/specification/flex4sdk.rb +72 -0
  139. data/test/fixtures/specification/flexunit4.sproutspec +17 -0
  140. data/test/fixtures/specification/lib/as3reflection/Reflection.as +0 -0
  141. data/test/fixtures/specification/src/AsUnit.as +0 -0
  142. data/test/fixtures/user/mxmlc_crlf +3 -0
  143. data/test/unit/archive_unpacker_test.rb +108 -0
  144. data/test/unit/boolean_param_test.rb +38 -0
  145. data/test/unit/executable_option_parser_test.rb +142 -0
  146. data/test/unit/executable_param_test.rb +76 -0
  147. data/test/unit/executable_test.rb +237 -0
  148. data/test/unit/fake_executable_task.rb +22 -0
  149. data/test/unit/fake_other_executable.rb +20 -0
  150. data/test/unit/fake_process_runner.rb +29 -0
  151. data/test/unit/file_param_test.rb +61 -0
  152. data/test/unit/file_target_test.rb +42 -0
  153. data/test/unit/files_param_test.rb +72 -0
  154. data/test/unit/generator_generator_test.rb +85 -0
  155. data/test/unit/generator_test.rb +333 -0
  156. data/test/unit/library_generator_test.rb +41 -0
  157. data/test/unit/library_test.rb +88 -0
  158. data/test/unit/osx_system_test.rb +20 -0
  159. data/test/unit/path_param_test.rb +43 -0
  160. data/test/unit/paths_param_test.rb +53 -0
  161. data/test/unit/platform_test.rb +76 -0
  162. data/test/unit/process_runner_test.rb +104 -0
  163. data/test/unit/rdoc_parser_test.rb +15 -0
  164. data/test/unit/remote_file_loader_test.rb +34 -0
  165. data/test/unit/remote_file_target_test.rb +105 -0
  166. data/test/unit/ruby_feature_test.rb +108 -0
  167. data/test/unit/ruby_generator_test.rb +70 -0
  168. data/test/unit/specification_test.rb +73 -0
  169. data/test/unit/sprout_test.rb +170 -0
  170. data/test/unit/sprout_test_helper.rb +18 -0
  171. data/test/unit/string_param_test.rb +19 -0
  172. data/test/unit/string_test.rb +20 -0
  173. data/test/unit/strings_param_test.rb +27 -0
  174. data/test/unit/test_helper.rb +1 -0
  175. data/test/unit/tool_generator_test.rb +43 -0
  176. data/test/unit/unix_system_test.rb +52 -0
  177. data/test/unit/user_test.rb +147 -0
  178. data/test/unit/vista_system_test.rb +40 -0
  179. data/test/unit/win_nix_system_test.rb +26 -0
  180. data/test/unit/win_system_test.rb +61 -0
  181. metadata +318 -113
  182. data/doc/Bundle +0 -14
  183. data/doc/Generator +0 -35
  184. data/doc/Library +0 -63
  185. data/doc/Task +0 -21
  186. data/doc/Tool +0 -20
  187. data/lib/platform.rb +0 -113
  188. data/lib/progress_bar.rb +0 -354
  189. data/lib/sprout/builder.rb +0 -51
  190. data/lib/sprout/bundle_resolver.rb +0 -349
  191. data/lib/sprout/commands/generate.rb +0 -9
  192. data/lib/sprout/dynamic_accessors.rb +0 -40
  193. data/lib/sprout/general_tasks.rb +0 -6
  194. data/lib/sprout/generator.rb +0 -7
  195. data/lib/sprout/generator/base_mixins.rb +0 -186
  196. data/lib/sprout/generator/named_base.rb +0 -227
  197. data/lib/sprout/project_model.rb +0 -278
  198. data/lib/sprout/simple_resolver.rb +0 -88
  199. data/lib/sprout/tasks/erb_resolver.rb +0 -118
  200. data/lib/sprout/tasks/gem_wrap_task.rb +0 -214
  201. data/lib/sprout/tasks/git_task.rb +0 -134
  202. data/lib/sprout/tasks/library_task.rb +0 -118
  203. data/lib/sprout/tasks/sftp_task.rb +0 -248
  204. data/lib/sprout/tasks/ssh_task.rb +0 -153
  205. data/lib/sprout/tasks/tool_task.rb +0 -836
  206. data/lib/sprout/tasks/zip_task.rb +0 -158
  207. data/lib/sprout/tool_task_model.rb +0 -19
  208. data/lib/sprout/user.rb +0 -415
  209. data/lib/sprout/version_file.rb +0 -89
  210. data/lib/sprout/zip_util.rb +0 -61
  211. data/samples/gem_wrap/rakefile.rb +0 -17
@@ -1,12 +1,17 @@
1
+
1
2
  module Sprout
3
+ NAME = 'sprout'
4
+
2
5
  if(!defined? Sprout::VERSION)
3
6
  module VERSION #:nodoc:
4
- MAJOR = 0
5
- MINOR = 7
6
- TINY = 246
7
+ MAJOR = 1
8
+ MINOR = 0
9
+ TINY = 0
10
+ RELEASE = 'pre'
7
11
 
8
- STRING = [MAJOR, MINOR, TINY].join('.')
12
+ STRING = [MAJOR, MINOR, TINY, RELEASE].join('.')
9
13
  MAJOR_MINOR = [MAJOR, MINOR].join('.')
10
14
  end
11
15
  end
12
16
  end
17
+
@@ -1,163 +1,104 @@
1
1
  require 'rubygems'
2
+ require 'bundler'
3
+
4
+ Bundler.setup
5
+
2
6
  require 'rake'
3
7
  require 'rake/clean'
4
8
  require 'rake/testtask'
5
- require 'rake/packagetask'
6
- require 'rake/gempackagetask'
7
9
  require 'rake/rdoctask'
8
- require 'rake/contrib/rubyforgepublisher'
9
- require 'fileutils'
10
- require File.dirname(__FILE__) + '/lib/sprout'
11
- require File.dirname(__FILE__) + '/lib/sprout/version'
12
-
13
- PROJECT = "sprout"
14
- NAME = "sprout"
15
- SUMMARY = "Sprout is an open-source, cross-platform project generation, configuration and build tool, that currently suports ActionScript 2, ActionScript 3, Flex and AIR development."
16
- GEM_VERSION = Sprout::VERSION::STRING
17
- AUTHOR = "Luke Bayes"
18
- EMAIL = "projectsprouts@googlegroups.com"
19
- HOMEPAGE = "http://www.projectsprouts.org"
20
- DESCRIPTION =<<EOF
21
- Sprout is a modular set of tools that take the tedium and frustration out of creating and managing programming projects by automatically installing and configuring external tools, libraries, commands and build tasks. Bundles are currently available to support ActionScript 2, ActionScript 3, Flex and AIR development.
22
- EOF
23
- HOMEPATH = "http://#{PROJECT}.rubyforge.org"
24
- RELEASE_TYPES = ["gem"]
25
- PKG_LIST = FileList['[a-zA-Z]*',
26
- 'samples/**/*',
27
- 'bin/**/*',
28
- 'lib/**/*',
29
- 'doc/*'
30
- ]
31
- PKG_LIST.exclude('.svn')
32
- PKG_LIST.exclude('artifacts')
33
- PKG_LIST.each do |file|
34
- task :package => file
35
- end
36
-
37
- def apply_shared_spec(s)
38
- s.summary = SUMMARY
39
- s.description = DESCRIPTION
40
- s.name = NAME
41
- s.version = GEM_VERSION
42
- s.author = AUTHOR
43
- s.email = EMAIL
44
- s.homepage = HOMEPAGE
45
- s.rubyforge_project = PROJECT
46
- s.require_path = 'lib'
47
- s.bindir = 'bin'
48
- s.has_rdoc = true
49
- s.rdoc_options << '--title' << 'Project Sprouts -- Core Documentation'
50
- s.rdoc_options << '--main' << 'Sprout::Sprout'
51
- s.rdoc_options << '--line-numbers' << '--inline-source'
52
- s.rdoc_options << '--charset' << 'utf-8'
53
- s.rdoc_options << '-i' << '.'
54
- s.files = PKG_LIST.to_a
55
- s.executables = ['sprout']
56
- s.default_executable = 'sprout'
57
-
58
- s.add_dependency('rubyzip', '>= 0.9.1')
59
- s.add_dependency('archive-tar-minitar', '>= 0.5.1')
60
- s.add_dependency('rubigen', '1.5.4')
61
- s.add_dependency('net-sftp', '>= 2.0.4')
62
- s.add_dependency('net-ssh', '>= 2.0.19')
63
- s.add_dependency('rake')
64
- end
65
-
66
- osx_spec = Gem::Specification.new do |s|
67
- apply_shared_spec(s)
68
- s.platform = 'darwin'
69
- # Add osx-specific dependencies here
70
-
71
- # Can't really depend on rb-appscript b/c this requires OS X dev-tool disk
72
- #s.add_dependency('rb-appscript', '>= 0.5.0')
73
- s.add_dependency('open4', '>= 0.9.6')
74
- end
75
-
76
- osx_snow_leopard_spec = Gem::Specification.new do |s|
77
- apply_shared_spec(s)
78
- s.platform = 'x86-darwin-10'
79
- # Add snow-leopard-specific dependencies here
80
-
81
- # Can't really depend on rb-appscript b/c this requires OS X dev-tool disk
82
- #s.add_dependency('rb-appscript', '>= 0.5.0')
83
- s.add_dependency('open4', '>= 0.9.6')
84
- end
85
-
86
- nix_spec = Gem::Specification.new do |s|
87
- apply_shared_spec(s)
88
- s.platform = 'x86-linux'
89
- # Add nix-specific dependencies here
90
- s.add_dependency('open4', '>= 0.9.6')
91
- end
92
-
93
- win_spec = Gem::Specification.new do |s|
94
- apply_shared_spec(s)
95
- s.platform = 'mswin32'
96
- # Add win-specific dependencies here
97
- s.add_dependency('win32-open3', '0.2.5')
98
- # Added again here b/c win users report
99
- # having to install these manually:
100
- s.add_dependency('net-sftp', '>= 2.0.4')
101
- s.add_dependency('net-ssh', '>= 2.0.19')
102
- end
103
-
104
- ruby_spec = Gem::Specification.new do |s|
105
- apply_shared_spec(s)
106
- s.platform = Gem::Platform::RUBY
107
- s.add_dependency('open4', '>= 0.9.6')
108
- end
109
10
 
110
- Rake::GemPackageTask.new(osx_spec) do |pkg|
111
- end
112
-
113
- Rake::GemPackageTask.new(osx_snow_leopard_spec) do |pkg|
114
- end
115
-
116
- Rake::GemPackageTask.new(nix_spec) do |pkg|
117
- end
118
-
119
- Rake::GemPackageTask.new(win_spec) do |pkg|
120
- end
121
-
122
- Rake::GemPackageTask.new(ruby_spec) do |pkg|
123
- end
11
+ require File.dirname(__FILE__) + '/lib/sprout/version'
124
12
 
125
- Rake::RDocTask.new do |t|
126
- t.rdoc_files.include(['doc/*', 'lib/*.rb', 'lib/**/*.rb', 'MIT-LICENSE'])
127
- t.title = "Project Sprouts -- Core Documentation"
128
- t.rdoc_dir = 'rdoc'
129
- t.main = 'Sprout::Sprout'
130
- t.options << '--line-numbers' << '--inline-source'
131
- t.options << '--charset' << 'utf-8'
132
- t.options << '-i .'
13
+ Rake::RDocTask.new do |rdoc|
14
+ rdoc.title = "Project Sprouts v.#{Sprout::VERSION::STRING}"
15
+ rdoc.rdoc_dir = 'rdoc'
16
+ rdoc.main = "Sprout::Sprout"
17
+ rdoc.rdoc_files.include("README.textile", "lib/**/*.rb")
133
18
  end
134
19
 
135
20
  CLEAN.add('rdoc')
136
21
 
22
+ namespace :test do
23
+ Rake::TestTask.new(:units) do |t|
24
+ t.libs << "test/unit"
25
+ t.test_files = FileList["test/unit/*_test.rb"]
26
+ t.verbose = true
27
+ end
137
28
 
138
- require File.dirname(__FILE__) + '/script/build_helpers'
139
-
140
- def fix_x86_mswin
141
- files = Dir.glob('pkg/*x86-mswin*')
142
- files.each do |name|
143
- new_name = name.gsub('-x86', '')
144
- puts "Renaming x86-mswin gem from #{name} to #{new_name}"
145
- FileUtils.mv(name, new_name)
29
+ namespace :coverage do
30
+ desc "Delete aggregate coverage data."
31
+ task(:clean) { rm_f "coverage.data" }
146
32
  end
147
- end
148
33
 
149
- task :package do
150
- fix_x86_mswin
151
- end
34
+ # Apparently, rcov does not work on Windows.
35
+ # Hide these tasks so that we can at least
36
+ # run the others...
37
+ if(!(RUBY_PLATFORM =~ /mingw/i) && !(RUBY_PLATFORM =~/mswin/i))
38
+ require 'rcov/rcovtask'
39
+
40
+ namespace :coverage do
41
+ desc "Delete aggregate coverage data."
42
+ task(:clean) { rm_f "coverage.data" }
43
+ end
44
+
45
+ desc "Aggregate code coverage for unit, functional and integration tests"
46
+ task :coverage => "test:coverage:clean"
47
+
48
+ # Hold collection in case we need it:
49
+ #%w[unit functional integration].each do |target|
50
+ %w[unit].each do |target|
51
+ namespace :coverage do
52
+ Rcov::RcovTask.new(target) do |t|
53
+ t.libs = ["lib", "test"]
54
+ t.test_files = FileList["test/#{target}/**/*_test.rb"]
55
+ t.output_dir = ".coverage/#{target}"
56
+ t.verbose = true
57
+ t.rcov_opts << "--aggregate coverage.data --exclude .bundle"
58
+ end
59
+ end
60
+ task :coverage => "test:coverage:#{target}"
61
+ end
62
+ end
152
63
 
153
- desc "Release to GemCutter"
154
- task :release_to_gemcutter do
155
- files = FileList.new('pkg/*.gem')
156
- files.each do |file|
157
- sh "gem push #{file}"
64
+ namespace :torture do
65
+ desc "Flog the Sprouts"
66
+ task :flog do
67
+ puts "--------------------------"
68
+ puts "Flog Report:"
69
+ message =<<EOM
70
+ According to Jake Scruggs at: http://bit.ly/3QrvW
71
+
72
+ Score of Means
73
+ 0-10 Awesome
74
+ 11-20 Good enough
75
+ 21-40 Might need refactoring
76
+ 41-60 Possible to justify
77
+ 61-100 Danger
78
+ 100-200 Whoop, whoop, whoop
79
+ 200 + Someone please think of the children
80
+ EOM
81
+ puts message
82
+ puts ""
83
+
84
+ sh "find lib -name '*.rb' | xargs flog"
85
+ end
86
+
87
+ desc "Flay the Sprouts"
88
+ task :flay do
89
+ puts "--------------------------"
90
+ puts "Flay Report:"
91
+ sh "flay lib/**/*.rb"
92
+ end
158
93
  end
94
+
95
+ desc "Run all tortuous reports"
96
+ task :torture => ['torture:flog', 'torture:flay']
97
+
159
98
  end
160
99
 
161
- desc 'Clean, Package and Release gems to Gemcutter'
162
- task :release => [:clean, :package, :release_to_gemcutter]
100
+ task :test => 'test:units'
101
+
102
+ desc "Run all tests and reports"
103
+ task :cruise => [:test, 'test:coverage', 'test:torture']
163
104
 
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ # File: script/console
3
+ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
+
5
+ libs = " -r irb/completion"
6
+ # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
+ # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
+ libs << " -r #{File.dirname(__FILE__) + '/../lib/as3.rb'}"
9
+ puts "Loading as3 gem"
10
+ exec "#{irb} #{libs} --simple-prompt"
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/destroy'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Destroy.new.run(ARGV)
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/generate'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Generate.new.run(ARGV)
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path File.join(File.dirname(__FILE__), 'lib')
3
+ $:.unshift lib unless $:.include?(lib)
4
+
5
+ require 'bundler'
6
+ require 'rake'
7
+ require 'sprout/version'
8
+
9
+ Gem::Specification.new do |s|
10
+ s.name = 'sprout'
11
+ s.version = Sprout::VERSION::STRING
12
+ s.platform = Gem::Platform::RUBY
13
+ s.authors = ["Luke Bayes"]
14
+ s.email = "projectsprouts@googlegroups.com"
15
+ s.homepage = "http://projectsprouts.org"
16
+ s.summary = "Software development - evolved"
17
+ s.description = "Project Sprouts gives you access to beautiful generators and easily customized templates, automated build scripts, distributed libraries and simple system configuration"
18
+ s.post_install_message = File.read 'POSTINSTALL.rdoc'
19
+ s.required_rubygems_version = ">= 1.3.6"
20
+ s.rubyforge_project = "sprout"
21
+ s.require_path = ['lib']
22
+ s.files = FileList['**/**/*'].exclude /.git|.svn|.DS_Store/
23
+ s.executables = ['sprout', 'sprout-library', 'sprout-tool', 'sprout-generator']
24
+ s.add_bundler_dependencies
25
+ end
26
+
@@ -0,0 +1,127 @@
1
+ ##
2
+ # This is an example of how I think generators ought to look.
3
+ #
4
+ # The current interface to Rubigen is unacceptable because
5
+ # of it's dependence on duplicate boilerplate, and global
6
+ # state.
7
+ #
8
+ # should also be a generator helper that allows you
9
+ # to reference an existing directory on disk, and will
10
+ # emit a new generator (gem?) that would recreate those files:
11
+ #
12
+ # sprout-generator-importer ~/Projects/SomeProject
13
+ #
14
+ class AppGenerator
15
+ include Sprout::Generator
16
+
17
+ ##
18
+ # The path where classes should usually be created.
19
+ add_param :src, String, { :default => 'src' }
20
+
21
+ ##
22
+ # The path where test cases should be created.
23
+ add_param :test, String, { :default => 'test' }
24
+
25
+ ##
26
+ # The path where libraries should be added.
27
+ add_param :lib, String, { :default => 'lib' }
28
+
29
+ ##
30
+ # The path where binaries should be created.
31
+ add_param :bin, String, { :default => 'bin' }
32
+
33
+ ##
34
+ # The path where all assets should be created.
35
+ add_param :assets, String, { :default => 'assets' }
36
+
37
+ ##
38
+ # The path where skins should be created.
39
+ add_param :skins, String, { :default => 'skins' }
40
+
41
+ ##
42
+ # The path where scripts are created.
43
+ add_param :script, String, { :default => 'script' }
44
+
45
+ ##
46
+ # The name of the project that should be created.
47
+ add_param :input, String, { :reader => :get_input }
48
+
49
+ ##
50
+ # Prevent the creation of a lib directory.
51
+ add_param :no_lib, Boolean
52
+
53
+ ##
54
+ # Prevent the creation of an assets directory.
55
+ add_param :no_assets, Boolean
56
+
57
+ def manifest
58
+ directory input do
59
+ file 'rakefile.rb.erb', 'rakefile.rb'
60
+ file 'Gemfile.erb', 'Gemfile'
61
+
62
+ directory src do
63
+ file 'Class.as.erb', "#{input}.as"
64
+ end
65
+
66
+ directory File.join(assets, skins) do
67
+ file 'ProjectSprouts.png', 'ProjectSprouts.png'
68
+ end unless no_assets
69
+
70
+ directory lib unless no_lib
71
+ directory bin
72
+
73
+ default_project_files
74
+ end
75
+ end
76
+
77
+ private
78
+
79
+ def get_input
80
+ @input.camel_case
81
+ end
82
+
83
+ end
84
+
85
+
86
+ ##
87
+ # Defined in the imaginary base class:
88
+ def default_project_files
89
+ directory script do
90
+ file 'generate', 'generate'
91
+ file 'destroy', 'destroy'
92
+ file 'console', 'console'
93
+ end
94
+ end
95
+
96
+ ##
97
+ # These directives ought to also be very easy to test.
98
+ #
99
+ class AppGeneratorTest
100
+ include Sprout::GeneratorTestHelper
101
+
102
+ context "a new generator" do
103
+
104
+ setup do
105
+ @fixture = File.join fixtures, 'generators'
106
+ @generator = ProjectGenerator.new
107
+ @generator.path = @fixture
108
+ @generator.name = 'SomeProject'
109
+ @generator.execute
110
+ end
111
+
112
+ should_create_directory File.join(@fixture, 'SomeProject') do
113
+ with_file 'rakefile.rb' do |content|
114
+ assert_matches /SomeProject.as/, content
115
+ assert_matches /SomeProjectRunner.as/, content
116
+ assert_matches /SomeProject.swf/, content
117
+ end
118
+ should_create_directory 'script' do
119
+ with_file 'generate'
120
+ with_file 'destroy'
121
+ with_file 'console'
122
+ end
123
+ end
124
+ end
125
+
126
+ end
127
+