spade 0.0.8.1 → 0.1.0

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 (346) hide show
  1. data/.gitignore +0 -1
  2. data/.gitmodules +4 -4
  3. data/README.md +4 -0
  4. data/bin/spade +1 -1
  5. data/lib/spade.rb +0 -51
  6. data/lib/spade/cli.rb +10 -4
  7. data/lib/spade/version.rb +1 -1
  8. data/spade.gemspec +4 -21
  9. metadata +13 -482
  10. data/Gemfile +0 -3
  11. data/Gemfile.lock +0 -40
  12. data/lib/index.js +0 -14
  13. data/lib/node/loader.js +0 -146
  14. data/lib/node/sandbox.js +0 -44
  15. data/lib/spade.js +0 -1130
  16. data/lib/spade/bundle.rb +0 -171
  17. data/lib/spade/cli/base.rb +0 -354
  18. data/lib/spade/cli/owner.rb +0 -45
  19. data/lib/spade/cli/project_generator.rb +0 -58
  20. data/lib/spade/compiler.rb +0 -34
  21. data/lib/spade/console.rb +0 -39
  22. data/lib/spade/context.rb +0 -116
  23. data/lib/spade/credentials.rb +0 -36
  24. data/lib/spade/dependency_installer.rb +0 -103
  25. data/lib/spade/environment.rb +0 -35
  26. data/lib/spade/exports.rb +0 -71
  27. data/lib/spade/installer.rb +0 -40
  28. data/lib/spade/loader.rb +0 -238
  29. data/lib/spade/local.rb +0 -46
  30. data/lib/spade/package.rb +0 -157
  31. data/lib/spade/reactor.rb +0 -159
  32. data/lib/spade/remote.rb +0 -99
  33. data/lib/spade/repository.rb +0 -18
  34. data/lib/spade/server.rb +0 -66
  35. data/lib/spade/shell.rb +0 -36
  36. data/lib/spade/templates/project/LICENSE +0 -19
  37. data/lib/spade/templates/project/README.md +0 -21
  38. data/lib/spade/templates/project/lib/main.js +0 -9
  39. data/lib/spade/templates/project/project.json +0 -31
  40. data/lib/spade/templates/project/tests/main-test.js +0 -8
  41. data/package.json +0 -27
  42. data/packages/coffee-script/.gitignore +0 -8
  43. data/packages/coffee-script/.npmignore +0 -11
  44. data/packages/coffee-script/Cakefile +0 -229
  45. data/packages/coffee-script/LICENSE +0 -22
  46. data/packages/coffee-script/README +0 -47
  47. data/packages/coffee-script/Rakefile +0 -78
  48. data/packages/coffee-script/bin/cake +0 -7
  49. data/packages/coffee-script/bin/coffee +0 -7
  50. data/packages/coffee-script/documentation/coffee/aliases.coffee +0 -11
  51. data/packages/coffee-script/documentation/coffee/array_comprehensions.coffee +0 -2
  52. data/packages/coffee-script/documentation/coffee/block_comment.coffee +0 -6
  53. data/packages/coffee-script/documentation/coffee/cake_tasks.coffee +0 -9
  54. data/packages/coffee-script/documentation/coffee/classes.coffee +0 -25
  55. data/packages/coffee-script/documentation/coffee/comparisons.coffee +0 -5
  56. data/packages/coffee-script/documentation/coffee/conditionals.coffee +0 -13
  57. data/packages/coffee-script/documentation/coffee/default_args.coffee +0 -8
  58. data/packages/coffee-script/documentation/coffee/do.coffee +0 -4
  59. data/packages/coffee-script/documentation/coffee/embedded.coffee +0 -5
  60. data/packages/coffee-script/documentation/coffee/existence.coffee +0 -10
  61. data/packages/coffee-script/documentation/coffee/expressions.coffee +0 -9
  62. data/packages/coffee-script/documentation/coffee/expressions_assignment.coffee +0 -3
  63. data/packages/coffee-script/documentation/coffee/expressions_comprehension.coffee +0 -3
  64. data/packages/coffee-script/documentation/coffee/expressions_try.coffee +0 -7
  65. data/packages/coffee-script/documentation/coffee/fat_arrow.coffee +0 -6
  66. data/packages/coffee-script/documentation/coffee/functions.coffee +0 -2
  67. data/packages/coffee-script/documentation/coffee/heredocs.coffee +0 -7
  68. data/packages/coffee-script/documentation/coffee/heregexes.coffee +0 -11
  69. data/packages/coffee-script/documentation/coffee/interpolation.coffee +0 -6
  70. data/packages/coffee-script/documentation/coffee/multiple_return_values.coffee +0 -7
  71. data/packages/coffee-script/documentation/coffee/object_comprehensions.coffee +0 -4
  72. data/packages/coffee-script/documentation/coffee/object_extraction.coffee +0 -13
  73. data/packages/coffee-script/documentation/coffee/objects_and_arrays.coffee +0 -19
  74. data/packages/coffee-script/documentation/coffee/objects_reserved.coffee +0 -5
  75. data/packages/coffee-script/documentation/coffee/overview.coffee +0 -28
  76. data/packages/coffee-script/documentation/coffee/parallel_assignment.coffee +0 -6
  77. data/packages/coffee-script/documentation/coffee/patterns_and_splats.coffee +0 -7
  78. data/packages/coffee-script/documentation/coffee/prototypes.coffee +0 -3
  79. data/packages/coffee-script/documentation/coffee/range_comprehensions.coffee +0 -2
  80. data/packages/coffee-script/documentation/coffee/scope.coffee +0 -5
  81. data/packages/coffee-script/documentation/coffee/slices.coffee +0 -7
  82. data/packages/coffee-script/documentation/coffee/soaks.coffee +0 -1
  83. data/packages/coffee-script/documentation/coffee/splats.coffee +0 -27
  84. data/packages/coffee-script/documentation/coffee/splices.coffee +0 -5
  85. data/packages/coffee-script/documentation/coffee/strings.coffee +0 -8
  86. data/packages/coffee-script/documentation/coffee/switch.coffee +0 -10
  87. data/packages/coffee-script/documentation/coffee/try.coffee +0 -8
  88. data/packages/coffee-script/documentation/coffee/while.coffee +0 -10
  89. data/packages/coffee-script/documentation/css/docs.css +0 -374
  90. data/packages/coffee-script/documentation/css/idle.css +0 -64
  91. data/packages/coffee-script/documentation/docs/browser.html +0 -25
  92. data/packages/coffee-script/documentation/docs/cake.html +0 -43
  93. data/packages/coffee-script/documentation/docs/coffee-script.html +0 -51
  94. data/packages/coffee-script/documentation/docs/command.html +0 -161
  95. data/packages/coffee-script/documentation/docs/docco.css +0 -186
  96. data/packages/coffee-script/documentation/docs/grammar.html +0 -399
  97. data/packages/coffee-script/documentation/docs/helpers.html +0 -31
  98. data/packages/coffee-script/documentation/docs/index.html +0 -3
  99. data/packages/coffee-script/documentation/docs/lexer.html +0 -490
  100. data/packages/coffee-script/documentation/docs/nodes.html +0 -1338
  101. data/packages/coffee-script/documentation/docs/optparse.html +0 -78
  102. data/packages/coffee-script/documentation/docs/repl.html +0 -24
  103. data/packages/coffee-script/documentation/docs/rewriter.html +0 -251
  104. data/packages/coffee-script/documentation/docs/scope.html +0 -54
  105. data/packages/coffee-script/documentation/docs/underscore.html +0 -295
  106. data/packages/coffee-script/documentation/images/background.png +0 -0
  107. data/packages/coffee-script/documentation/images/banding.png +0 -0
  108. data/packages/coffee-script/documentation/images/button_bg.png +0 -0
  109. data/packages/coffee-script/documentation/images/button_bg_dark.gif +0 -0
  110. data/packages/coffee-script/documentation/images/button_bg_green.gif +0 -0
  111. data/packages/coffee-script/documentation/images/favicon.ico +0 -0
  112. data/packages/coffee-script/documentation/images/logo.png +0 -0
  113. data/packages/coffee-script/documentation/images/screenshadow.png +0 -0
  114. data/packages/coffee-script/documentation/index.html.erb +0 -1607
  115. data/packages/coffee-script/documentation/js/aliases.js +0 -17
  116. data/packages/coffee-script/documentation/js/array_comprehensions.js +0 -6
  117. data/packages/coffee-script/documentation/js/block_comment.js +0 -4
  118. data/packages/coffee-script/documentation/js/cake_tasks.js +0 -10
  119. data/packages/coffee-script/documentation/js/classes.js +0 -44
  120. data/packages/coffee-script/documentation/js/comparisons.js +0 -3
  121. data/packages/coffee-script/documentation/js/conditionals.js +0 -12
  122. data/packages/coffee-script/documentation/js/default_args.js +0 -7
  123. data/packages/coffee-script/documentation/js/do.js +0 -10
  124. data/packages/coffee-script/documentation/js/embedded.js +0 -4
  125. data/packages/coffee-script/documentation/js/existence.js +0 -6
  126. data/packages/coffee-script/documentation/js/expressions.js +0 -15
  127. data/packages/coffee-script/documentation/js/expressions_assignment.js +0 -2
  128. data/packages/coffee-script/documentation/js/expressions_comprehension.js +0 -9
  129. data/packages/coffee-script/documentation/js/expressions_try.js +0 -7
  130. data/packages/coffee-script/documentation/js/fat_arrow.js +0 -9
  131. data/packages/coffee-script/documentation/js/functions.js +0 -7
  132. data/packages/coffee-script/documentation/js/heredocs.js +0 -2
  133. data/packages/coffee-script/documentation/js/heregexes.js +0 -2
  134. data/packages/coffee-script/documentation/js/interpolation.js +0 -4
  135. data/packages/coffee-script/documentation/js/multiple_return_values.js +0 -5
  136. data/packages/coffee-script/documentation/js/object_comprehensions.js +0 -15
  137. data/packages/coffee-script/documentation/js/object_extraction.js +0 -10
  138. data/packages/coffee-script/documentation/js/objects_and_arrays.js +0 -17
  139. data/packages/coffee-script/documentation/js/objects_reserved.js +0 -4
  140. data/packages/coffee-script/documentation/js/overview.js +0 -35
  141. data/packages/coffee-script/documentation/js/parallel_assignment.js +0 -4
  142. data/packages/coffee-script/documentation/js/patterns_and_splats.js +0 -4
  143. data/packages/coffee-script/documentation/js/prototypes.js +0 -3
  144. data/packages/coffee-script/documentation/js/range_comprehensions.js +0 -9
  145. data/packages/coffee-script/documentation/js/scope.js +0 -8
  146. data/packages/coffee-script/documentation/js/slices.js +0 -4
  147. data/packages/coffee-script/documentation/js/soaks.js +0 -2
  148. data/packages/coffee-script/documentation/js/splats.js +0 -15
  149. data/packages/coffee-script/documentation/js/splices.js +0 -3
  150. data/packages/coffee-script/documentation/js/strings.js +0 -2
  151. data/packages/coffee-script/documentation/js/switch.js +0 -23
  152. data/packages/coffee-script/documentation/js/try.js +0 -8
  153. data/packages/coffee-script/documentation/js/while.js +0 -18
  154. data/packages/coffee-script/documentation/vendor/jquery-1.4.2.js +0 -6240
  155. data/packages/coffee-script/examples/beautiful_code/binary_search.coffee +0 -16
  156. data/packages/coffee-script/examples/beautiful_code/quicksort_runtime.coffee +0 -13
  157. data/packages/coffee-script/examples/beautiful_code/regular_expression_matcher.coffee +0 -34
  158. data/packages/coffee-script/examples/blocks.coffee +0 -54
  159. data/packages/coffee-script/examples/code.coffee +0 -167
  160. data/packages/coffee-script/examples/computer_science/README +0 -4
  161. data/packages/coffee-script/examples/computer_science/binary_search.coffee +0 -25
  162. data/packages/coffee-script/examples/computer_science/bubble_sort.coffee +0 -11
  163. data/packages/coffee-script/examples/computer_science/linked_list.coffee +0 -108
  164. data/packages/coffee-script/examples/computer_science/luhn_algorithm.coffee +0 -36
  165. data/packages/coffee-script/examples/computer_science/merge_sort.coffee +0 -19
  166. data/packages/coffee-script/examples/computer_science/selection_sort.coffee +0 -23
  167. data/packages/coffee-script/examples/poignant.coffee +0 -181
  168. data/packages/coffee-script/examples/potion.coffee +0 -206
  169. data/packages/coffee-script/examples/underscore.coffee +0 -682
  170. data/packages/coffee-script/examples/web_server.coffee +0 -12
  171. data/packages/coffee-script/extras/EXTRAS +0 -7
  172. data/packages/coffee-script/extras/coffee-script.js +0 -8
  173. data/packages/coffee-script/extras/jsl.conf +0 -44
  174. data/packages/coffee-script/index.html +0 -2515
  175. data/packages/coffee-script/lib/browser.js +0 -52
  176. data/packages/coffee-script/lib/cake.js +0 -76
  177. data/packages/coffee-script/lib/coffee-script.js +0 -82
  178. data/packages/coffee-script/lib/command.js +0 -263
  179. data/packages/coffee-script/lib/grammar.js +0 -581
  180. data/packages/coffee-script/lib/helpers.js +0 -66
  181. data/packages/coffee-script/lib/index.js +0 -8
  182. data/packages/coffee-script/lib/lexer.js +0 -633
  183. data/packages/coffee-script/lib/nodes.js +0 -2165
  184. data/packages/coffee-script/lib/optparse.js +0 -111
  185. data/packages/coffee-script/lib/parser.js +0 -649
  186. data/packages/coffee-script/lib/repl.js +0 -42
  187. data/packages/coffee-script/lib/rewriter.js +0 -353
  188. data/packages/coffee-script/lib/scope.js +0 -120
  189. data/packages/coffee-script/lib/spade-format.js +0 -45
  190. data/packages/coffee-script/package.json +0 -26
  191. data/packages/coffee-script/src/browser.coffee +0 -43
  192. data/packages/coffee-script/src/cake.coffee +0 -69
  193. data/packages/coffee-script/src/coffee-script.coffee +0 -92
  194. data/packages/coffee-script/src/command.coffee +0 -214
  195. data/packages/coffee-script/src/grammar.coffee +0 -590
  196. data/packages/coffee-script/src/helpers.coffee +0 -56
  197. data/packages/coffee-script/src/index.coffee +0 -2
  198. data/packages/coffee-script/src/lexer.coffee +0 -653
  199. data/packages/coffee-script/src/nodes.coffee +0 -1754
  200. data/packages/coffee-script/src/optparse.coffee +0 -99
  201. data/packages/coffee-script/src/repl.coffee +0 -42
  202. data/packages/coffee-script/src/rewriter.coffee +0 -326
  203. data/packages/coffee-script/src/scope.coffee +0 -94
  204. data/packages/coffee-script/test/arguments.coffee +0 -127
  205. data/packages/coffee-script/test/assignment.coffee +0 -98
  206. data/packages/coffee-script/test/break.coffee +0 -18
  207. data/packages/coffee-script/test/comments.coffee +0 -201
  208. data/packages/coffee-script/test/conditionals.coffee +0 -181
  209. data/packages/coffee-script/test/exception_handling.coffee +0 -90
  210. data/packages/coffee-script/test/helpers.coffee +0 -96
  211. data/packages/coffee-script/test/importing.coffee +0 -18
  212. data/packages/coffee-script/test/operators.coffee +0 -225
  213. data/packages/coffee-script/test/ranges_slices_and_splices.coffee +0 -186
  214. data/packages/coffee-script/test/regular_expressions.coffee +0 -56
  215. data/packages/coffee-script/test/test.html +0 -123
  216. data/packages/coffee-script/test/test_chaining.coffee +0 -77
  217. data/packages/coffee-script/test/test_classes.coffee +0 -372
  218. data/packages/coffee-script/test/test_compilation.coffee +0 -26
  219. data/packages/coffee-script/test/test_comprehensions.coffee +0 -318
  220. data/packages/coffee-script/test/test_existence.coffee +0 -165
  221. data/packages/coffee-script/test/test_functions.coffee +0 -379
  222. data/packages/coffee-script/test/test_heredocs.coffee +0 -111
  223. data/packages/coffee-script/test/test_literals.coffee +0 -270
  224. data/packages/coffee-script/test/test_option_parser.coffee +0 -27
  225. data/packages/coffee-script/test/test_pattern_matching.coffee +0 -162
  226. data/packages/coffee-script/test/test_returns.coffee +0 -63
  227. data/packages/coffee-script/test/test_splats.coffee +0 -102
  228. data/packages/coffee-script/test/test_strings.coffee +0 -118
  229. data/packages/coffee-script/test/test_switch.coffee +0 -103
  230. data/packages/coffee-script/test/test_while.coffee +0 -71
  231. data/packages/ivory/LICENSE.txt +0 -1
  232. data/packages/ivory/README.md +0 -19
  233. data/packages/ivory/lib/buffer.js +0 -111
  234. data/packages/ivory/lib/events.js +0 -137
  235. data/packages/ivory/lib/fs.js +0 -266
  236. data/packages/ivory/lib/main.js +0 -13
  237. data/packages/ivory/lib/path.js +0 -158
  238. data/packages/ivory/lib/ruby/buffer.rb +0 -145
  239. data/packages/ivory/lib/ruby/constants.rb +0 -585
  240. data/packages/ivory/lib/ruby/events.rb +0 -32
  241. data/packages/ivory/lib/ruby/fs.rb +0 -245
  242. data/packages/ivory/lib/ruby/process.rb +0 -28
  243. data/packages/ivory/lib/stream.js +0 -115
  244. data/packages/ivory/lib/util.js +0 -414
  245. data/packages/ivory/package.json +0 -11
  246. data/packages/jquery/main.js +0 -7179
  247. data/packages/jquery/package.json +0 -10
  248. data/packages/json/lib/main.js +0 -14
  249. data/packages/json/package.json +0 -8
  250. data/packages/lproj/README.md +0 -77
  251. data/packages/lproj/examples/demo-app/en.lproj/localized.strings +0 -2
  252. data/packages/lproj/examples/demo-app/fr.lproj/localized.strings +0 -3
  253. data/packages/lproj/examples/demo-app/index.html +0 -8
  254. data/packages/lproj/examples/demo-app/lib/main.js +0 -7
  255. data/packages/lproj/examples/demo-app/package.json +0 -9
  256. data/packages/lproj/lib/main.js +0 -78
  257. data/packages/lproj/lib/strings-format.js +0 -6
  258. data/packages/lproj/package.json +0 -9
  259. data/packages/optparse/README.md +0 -161
  260. data/packages/optparse/TODO +0 -1
  261. data/packages/optparse/examples/browser-test.html +0 -75
  262. data/packages/optparse/examples/nodejs-test.js +0 -90
  263. data/packages/optparse/lib/optparse.js +0 -309
  264. data/packages/optparse/package.json +0 -13
  265. data/packages/optparse/seed.yml +0 -5
  266. data/packages/text/lib/main.js +0 -8
  267. data/packages/text/package.json +0 -9
  268. data/packages/web-file/README.md +0 -7
  269. data/packages/web-file/lib/errors.js +0 -32
  270. data/packages/web-file/lib/file-reader.js +0 -10
  271. data/packages/web-file/lib/file-system.js +0 -234
  272. data/packages/web-file/lib/file-writer.js +0 -10
  273. data/packages/web-file/lib/file.js +0 -9
  274. data/packages/web-file/lib/main.js +0 -34
  275. data/packages/web-file/lib/platform.js +0 -25
  276. data/packages/web-file/lib/ruby/file.rb +0 -252
  277. data/packages/web-file/lib/ruby/file_reader.rb +0 -69
  278. data/packages/web-file/lib/ruby/file_system.rb +0 -134
  279. data/packages/web-file/lib/ruby/file_writer.rb +0 -78
  280. data/packages/web-file/package.json +0 -12
  281. data/packages/web-typed-array/README.md +0 -7
  282. data/packages/web-typed-array/lib/array-buffer-view.js +0 -9
  283. data/packages/web-typed-array/lib/array-buffer.js +0 -7
  284. data/packages/web-typed-array/lib/main.js +0 -33
  285. data/packages/web-typed-array/lib/platform.js +0 -20
  286. data/packages/web-typed-array/lib/ruby/array_buffer.rb +0 -31
  287. data/packages/web-typed-array/lib/ruby/array_buffer_view.rb +0 -130
  288. data/packages/web-typed-array/lib/ruby/typed_array.rb +0 -133
  289. data/packages/web-typed-array/lib/typed-array.js +0 -26
  290. data/packages/web-typed-array/package.json +0 -9
  291. data/spec/cli/build_spec.rb +0 -59
  292. data/spec/cli/install_spec.rb +0 -120
  293. data/spec/cli/installed_spec.rb +0 -55
  294. data/spec/cli/list_spec.rb +0 -75
  295. data/spec/cli/login_spec.rb +0 -76
  296. data/spec/cli/new_spec.rb +0 -5
  297. data/spec/cli/owner_spec.rb +0 -115
  298. data/spec/cli/push_spec.rb +0 -74
  299. data/spec/cli/uninstall_spec.rb +0 -58
  300. data/spec/cli/unpack_spec.rb +0 -73
  301. data/spec/cli/unyank_spec.rb +0 -74
  302. data/spec/cli/update_spec.rb +0 -8
  303. data/spec/cli/yank_spec.rb +0 -74
  304. data/spec/credentials_spec.rb +0 -24
  305. data/spec/fixtures/coffee-1.0.1.pre.spd +0 -0
  306. data/spec/fixtures/core-test-0.4.3.spd +0 -0
  307. data/spec/fixtures/core-test/bin/cot +0 -3
  308. data/spec/fixtures/core-test/lib/main.js +0 -1
  309. data/spec/fixtures/core-test/resources/runner.css +0 -0
  310. data/spec/fixtures/core-test/tests/test.js +0 -1
  311. data/spec/fixtures/ivory-0.0.1.spd +0 -0
  312. data/spec/fixtures/jquery-1.4.3.spd +0 -0
  313. data/spec/fixtures/optparse-1.0.1.spd +0 -0
  314. data/spec/fixtures/package.json +0 -30
  315. data/spec/gauntlet_spec.rb +0 -27
  316. data/spec/javascript/async-test.js +0 -123
  317. data/spec/javascript/compiler/javascript.js +0 -13
  318. data/spec/javascript/compiler/ruby.js +0 -14
  319. data/spec/javascript/loader-test.js +0 -64
  320. data/spec/javascript/normalize-test.js +0 -73
  321. data/spec/javascript/packages-test.js +0 -44
  322. data/spec/javascript/relative-require-test.js +0 -72
  323. data/spec/javascript/require-test.js +0 -117
  324. data/spec/javascript/sandbox/compile.js +0 -37
  325. data/spec/javascript/sandbox/creation.js +0 -44
  326. data/spec/javascript/sandbox/format.js +0 -79
  327. data/spec/javascript/sandbox/misc.js +0 -57
  328. data/spec/javascript/sandbox/preprocessor.js +0 -81
  329. data/spec/javascript/sandbox/require.js +0 -48
  330. data/spec/javascript/sandbox/run-command.js +0 -21
  331. data/spec/javascript/spade/externs.js +0 -14
  332. data/spec/javascript/spade/load-factory.js +0 -15
  333. data/spec/javascript/spade/misc.js +0 -23
  334. data/spec/javascript/spade/ready.js +0 -12
  335. data/spec/javascript/spade/register.js +0 -13
  336. data/spec/javascript_spec.rb +0 -7
  337. data/spec/package_spec.rb +0 -267
  338. data/spec/spec_helper.rb +0 -30
  339. data/spec/support/cli.rb +0 -94
  340. data/spec/support/core_test.rb +0 -59
  341. data/spec/support/fake.rb +0 -44
  342. data/spec/support/fake_gem_server.rb +0 -66
  343. data/spec/support/fake_gemcutter.rb +0 -49
  344. data/spec/support/matchers.rb +0 -31
  345. data/spec/support/path.rb +0 -54
  346. data/test-spade.html +0 -8
@@ -1,71 +0,0 @@
1
- # ==========================================================================
2
- # Project: Spade - CommonJS Runtime
3
- # Copyright: ©2010 Strobe Inc. All rights reserved.
4
- # License: Licened under MIT license (see LICENSE)
5
- # ==========================================================================
6
-
7
- module Spade
8
-
9
- module Namespace
10
-
11
- def [](name)
12
- begin
13
- self.class.const_defined?(name) ? self.class.const_get(name) : yield
14
- rescue NameError => e
15
- yield
16
- end
17
- end
18
-
19
- end
20
-
21
- class Exports
22
-
23
- attr_reader :context
24
-
25
- def initialize(ctx)
26
- @context = ctx
27
- end
28
-
29
- def [](name)
30
-
31
- begin
32
- if self.class.const_defined?(name)
33
- ret = self.class.const_get(name)
34
-
35
- # If we are returning a class, create a custom subclass the first
36
- # time that also exposes the current context.
37
- if ret.instance_of? Class
38
- @klass_cache ||= {}
39
- unless @klass_cache[name]
40
-
41
- proc1 = proc { @context }
42
- @klass_cache[name] = Class.new(ret) do
43
-
44
- @context = proc1.call
45
-
46
- def self.context
47
- @context
48
- end
49
-
50
- end
51
-
52
- end
53
-
54
- @klass_cache[name]
55
- else
56
- ret
57
- end
58
-
59
- else
60
- yield
61
- end
62
-
63
- rescue NameError => e
64
- yield
65
- end
66
- end
67
-
68
- end
69
-
70
- end
71
-
@@ -1,40 +0,0 @@
1
- module Spade
2
- class Installer < Gem::Installer
3
-
4
- def app_script_text(bin_file_name)
5
- <<-TEXT
6
- #{shebang bin_file_name}
7
- #
8
- # This file was generated by Spade.
9
- #
10
- # The application '#{@spec.name}' is installed as part of an spd, and
11
- # this file is here to facilitate running it.
12
- #
13
-
14
- require 'spade'
15
-
16
- # Configures RubyGems properly
17
- env = Spade::Environment.new
18
-
19
- version = "#{Gem::Requirement.default}"
20
-
21
- if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then
22
- version = $1
23
- ARGV.shift
24
- end
25
-
26
- gem '#{@spec.name}', version
27
-
28
- path = Gem.bin_path('#{@spec.name}', '#{bin_file_name}', version)
29
- shebang = File.open(path){|f| f.readline }
30
-
31
- if shebang =~ /^\#\!.*ruby/
32
- load path
33
- else
34
- exec path, *ARGV
35
- end
36
- TEXT
37
- end
38
-
39
- end
40
- end
@@ -1,238 +0,0 @@
1
- # ==========================================================================
2
- # Project: Spade - CommonJS Runtime
3
- # Copyright: ©2010 Strobe Inc. All rights reserved.
4
- # License: Licened under MIT license (see LICENSE)
5
- # ==========================================================================
6
-
7
- require 'json'
8
-
9
-
10
- module Spade
11
-
12
- def self.current_context
13
- @current_context
14
- end
15
-
16
- def self.current_context=(ctx)
17
- @current_context = ctx
18
- end
19
-
20
- def self.exports=(klass)
21
- exports(klass, nil)
22
- end
23
-
24
- def self.exports(klass, path = nil)
25
- path = @current_path if path.nil?
26
- @exports ||= {}
27
- @exports[path] = klass
28
- end
29
-
30
- def self.exports_for(path)
31
- @current_path = path
32
- require path
33
- @current_path = nil
34
-
35
- @exports ||= {}
36
- @exports[path]
37
- end
38
-
39
-
40
- class Loader
41
-
42
- def initialize(ctx)
43
- @ctx = ctx
44
- end
45
-
46
- def discoverRoot(path)
47
- Spade.discover_root path
48
- end
49
-
50
- def root(path=nil)
51
- return @ctx.rootdir if path.nil?
52
- @ctx.rootdir = path
53
- @packages = nil
54
- end
55
-
56
- # exposed to JS. Find the JS file on disk and register the module
57
- def loadFactory(spade, id, formats, done=nil)
58
- formats = formats.to_a # We may get a V8::Array, we want a normal one
59
-
60
- # load individual files
61
- if id =~ /^file:\//
62
- js_path = id[5..-1]
63
- if File.exists? js_path
64
- load_module id, js_path, ['js'], js_path
65
- end
66
- return nil
67
- end
68
-
69
- parts = id.split '/'
70
- package_name = parts.shift
71
- package_info = packages[package_name]
72
- skip_module = false
73
-
74
- return nil if package_info.nil?
75
-
76
- if parts.size==1 && parts[0] == '~package'
77
- skip_module = true
78
- elsif parts.size==1 && parts[0] == 'main'
79
- parts = (package_info[:json]['main'] || 'lib/main').split('/')
80
- dirname = parts[0...-1]
81
- parts = [parts[-1]]
82
- else
83
- dirname = extract_dirname(parts, package_info)
84
- end
85
-
86
- # register the package first - also make sure dependencies are
87
- # registered since they are needed for loading plugins
88
- unless package_info[:registered]
89
- package_info[:registered] = true
90
- @ctx.eval "spade.register('#{package_name}', #{package_info[:json].to_json});"
91
-
92
- deps = package_info[:json]['dependencies'] || [];
93
- deps.each do |dep_name, ignored|
94
- dep_package_info = packages[dep_name]
95
- next unless dep_package_info && !dep_package_info[:registered]
96
- dep_package_info[:registered] = true
97
- @ctx.eval "spade.register('#{dep_name}', #{dep_package_info[:json].to_json});"
98
-
99
- # Add new formats if they are specified in our dependencies
100
- dep_formats = dep_package_info[:json]['plugin:formats']
101
- formats.unshift(*dep_formats.keys).uniq! if dep_formats
102
- end
103
-
104
- end
105
-
106
- unless skip_module
107
- filename = parts.pop
108
- base_path = package_info[:path]
109
- formats << ['js'] if formats.empty?
110
- formats.each do |fmt|
111
- cur_path = File.join(base_path, dirname, parts, filename+'.'+fmt)
112
- if File.exist? cur_path
113
- load_module id, cur_path, fmt, cur_path
114
- return nil
115
- end
116
- end
117
-
118
- rb_path = File.join(package_info[:path],dirname,parts, filename+'.rb')
119
- if File.exists? rb_path
120
- load_ruby id, rb_path
121
- return nil
122
- end
123
-
124
- end
125
-
126
- return nil
127
- end
128
-
129
- # exposed to JS. Determines if the named id exists in the system
130
- def exists(spade, id, formats)
131
-
132
- # individual files
133
- return File.exists?(id[5..-1]) if id =~ /^file:\//
134
-
135
- parts = id.split '/'
136
- package_name = parts.shift
137
- package_info = packages[package_name]
138
-
139
- return false if package_info.nil?
140
- return true if parts.size==1 && parts[0] == '~package'
141
-
142
- dirname = extract_dirname(parts, package_info)
143
-
144
-
145
- filename = parts.pop
146
- base_path = package_info[:path]
147
- formats = ['js'] if formats.nil?
148
- formats.each do |fmt|
149
- cur_path = File.join(base_path, dirname, parts, filename+'.'+fmt)
150
- return true if File.exist? cur_path
151
- end
152
-
153
- rb_path = File.join(package_info[:path],dirname,parts, filename+'.rb')
154
- return File.exists? rb_path
155
- end
156
-
157
- def load_module(id, module_path, format, path)
158
- module_contents = File.read(module_path).to_json # encode as string
159
- @ctx.eval("spade.register('#{id}',#{module_contents}, { format: #{format.to_s.to_json}, filename: #{path.to_s.to_json} });")
160
- nil
161
- end
162
-
163
- def load_ruby(id, rb_path)
164
-
165
- klass = Spade.exports_for rb_path
166
- exports = klass.nil? ? {} : klass.new(@ctx)
167
- @ctx['$__rb_exports__'] = exports
168
-
169
- @ctx.eval(%[(function() {
170
- var exp = $__rb_exports__;
171
- spade.register('#{id}', function(r,e,m) { m.exports = exp; });
172
- })();])
173
-
174
- @ctx['$__rb_exports__'] = nil
175
- end
176
-
177
- def packages
178
- @packages unless @packages.nil?
179
- @packages = {}
180
-
181
- # Do this to get the Gem.dir right
182
- env = Spade::Environment.new
183
-
184
- package_paths = Dir.glob(File.join(env.spade_dir, 'gems', '*'))
185
- package_paths.each{|path| add_package(path) }
186
-
187
- # in reverse order of precedence
188
- %w[.spade/packages vendor/cache vendor/packages packages].each do |p|
189
- package_paths = Dir.glob File.join(@ctx.rootdir, p.split('/'), '*')
190
- package_paths.each { |path| add_package(path) }
191
- end
192
-
193
- # add self
194
- add_package @ctx.rootdir
195
-
196
- @packages
197
- end
198
-
199
- private
200
-
201
- def extract_dirname(parts, package_info)
202
- if parts.size>0 && parts[0].chars.first == '~'
203
- dirname = parts.shift[1..-1]
204
- if package_info[:directories][dirname]
205
- dirname = package_info[:directories][dirname]
206
- else
207
- dirname = dirname
208
- end
209
- else
210
- dirname = package_info[:directories]['lib']
211
- dirname = 'lib' if dirname.nil?
212
- end
213
-
214
- dirname
215
- end
216
-
217
- def add_package(path)
218
- json_package = File.join(path, 'package.json')
219
- return unless File.exists?(json_package)
220
-
221
- json = JSON.load(File.read(json_package)) rescue nil
222
- return if json.nil?
223
-
224
- directories = json["directories"] || { "lib" => "lib" }
225
- json["root"] = "file:/"+File.split(path).join('/')
226
- @packages[json["name"]] = {
227
- :registered => false,
228
- :path => path,
229
- :directories => directories,
230
- :json => json
231
- }
232
-
233
- end
234
-
235
- end
236
-
237
-
238
- end
@@ -1,46 +0,0 @@
1
- module Spade
2
- class Local < Repository
3
- def uninstall(package)
4
- Gem::Uninstaller.new(package).uninstall
5
- true
6
- rescue Gem::InstallError
7
- false
8
- end
9
-
10
- def pack(path)
11
- package = Spade::Package.new(creds.email)
12
- package.json_path = path
13
- if package.valid?
14
- silence do
15
- Gem::Builder.new(package.to_spec).build
16
- end
17
- end
18
- package
19
- end
20
-
21
- def unpack(path, target)
22
- package = Spade::Package.new
23
- package.spade = path
24
- unpack_dir = File.expand_path(File.join(Dir.pwd, target, package.to_full_name))
25
- Gem::Installer.new(path, :unpack => true).unpack unpack_dir
26
- package
27
- end
28
-
29
- def installed(packages)
30
- specs = Gem.source_index.search dependency_for(packages)
31
-
32
- specs.map do |spec|
33
- [spec.name, spec.version, spec.original_platform]
34
- end
35
- end
36
-
37
- private
38
-
39
- def silence
40
- Gem.configuration.verbose = false
41
- result = yield
42
- Gem.configuration.verbose = true
43
- result
44
- end
45
- end
46
- end
@@ -1,157 +0,0 @@
1
- module Spade
2
- class Package
3
- EXT = "spd"
4
- METADATA = %w[keywords licenses engines main bin directories]
5
- FIELDS = %w[name version description author homepage summary]
6
- attr_accessor :metadata, :lib_path, :test_path, :errors, :json_path, :attributes, :directories, :dependencies
7
- attr_accessor *FIELDS
8
-
9
- def initialize(email = "")
10
- @email = email
11
- end
12
-
13
- def spade=(path)
14
- format = Gem::Format.from_file_by_path(path)
15
- fill_from_gemspec(format.spec)
16
- end
17
-
18
- def to_spec
19
- return unless valid?
20
- Gem::Specification.new do |spec|
21
- spec.name = name
22
- spec.version = version
23
- spec.authors = [author]
24
- spec.email = @email
25
- spec.homepage = homepage
26
- spec.summary = summary
27
- spec.description = description
28
- spec.requirements = [metadata.to_json]
29
- spec.files = directory_files + ["package.json"]
30
- spec.test_files = glob_files(test_path) if test_path
31
- spec.bindir = bin_path
32
- spec.executables = bin_files.map{|p| File.basename(p) } if bin_path
33
- spec.rubyforge_project = "spade"
34
- def spec.file_name
35
- "#{full_name}.#{EXT}"
36
- end
37
- dependencies.each{|d,v| spec.add_dependency(d, v) } if dependencies
38
- end
39
- end
40
-
41
- def as_json(options = {})
42
- json = self.metadata.clone
43
- FIELDS.each{|key| json[key] = send(key)}
44
- json["dependencies"] = self.dependencies
45
- json
46
- end
47
-
48
- def to_full_name
49
- "#{name}-#{version}"
50
- end
51
-
52
- def to_ext
53
- "#{self.to_full_name}.#{EXT}"
54
- end
55
-
56
- def errors
57
- @errors ||= []
58
- end
59
-
60
- def validate
61
- validate_fields && validate_version && validate_paths
62
- end
63
-
64
- def valid?
65
- read && parse && validate
66
- end
67
-
68
- private
69
-
70
- def directory_files
71
- directories.values.map{|dir| glob_files(dir) }.flatten
72
- end
73
-
74
- def bin_files
75
- if @attributes["bin"]
76
- @attributes["bin"].values
77
- else
78
- []
79
- end
80
- end
81
-
82
- def bin_path
83
- @directories["bin"] || "bin"
84
- end
85
-
86
- def lib_path
87
- @directories["lib"]
88
- end
89
-
90
- def test_path
91
- @directories["test"]
92
- end
93
-
94
- def parse
95
- FIELDS.each do |field|
96
- send("#{field}=", @attributes[field])
97
- end
98
-
99
- self.dependencies = @attributes["dependencies"] || {}
100
- self.directories = @attributes["directories"] || {}
101
- self.metadata = Hash[*@attributes.select { |k, v| METADATA.include?(k) }.flatten(1)]
102
- end
103
-
104
- def read
105
- @attributes = JSON.parse(File.read(@json_path))
106
- rescue *[JSON::ParserError, Errno::EACCES, Errno::ENOENT] => ex
107
- add_error "There was a problem parsing package.json: #{ex.message}"
108
- end
109
-
110
- def validate_paths
111
- %w[lib test].all? do |directory|
112
- path = send("#{directory}_path")
113
- if path.nil? || File.directory?(File.join(Dir.pwd, path))
114
- true
115
- else
116
- add_error "'#{path}' specified for #{directory} directory, is not a directory"
117
- end
118
- end
119
- end
120
-
121
- def validate_version
122
- Gem::Version.new(version)
123
- true
124
- rescue ArgumentError => ex
125
- add_error ex.to_s
126
- end
127
-
128
- def validate_fields
129
- %w[name description summary homepage author version directories].all? do |field|
130
- value = send(field)
131
- if value.nil? || value.size.zero?
132
- add_error "Package requires a '#{field}' field"
133
- else
134
- true
135
- end
136
- end
137
- end
138
-
139
- def add_error(message)
140
- self.errors << message
141
- false
142
- end
143
-
144
- def glob_files(path)
145
- Dir[File.join(path, "**", "*")].reject{|f| File.directory?(f) }
146
- end
147
-
148
- def fill_from_gemspec(spec)
149
- FIELDS.each{|field| send("#{field}=", spec.send(field).to_s) }
150
-
151
- self.dependencies = {}
152
- spec.dependencies.each{|d| self.dependencies[d.name] = d.requirement.to_s }
153
-
154
- self.metadata = JSON.parse(spec.requirements.first)
155
- end
156
- end
157
- end