spade-packager 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 (316) hide show
  1. data/.gitignore +2 -0
  2. data/.gitmodules +6 -0
  3. data/bin/spadepkg +8 -0
  4. data/lib/libgems_ext.rb +8 -0
  5. data/lib/libgems_ext/config_file.rb +33 -0
  6. data/lib/libgems_ext/dependency_installer.rb +150 -0
  7. data/lib/libgems_ext/installer.rb +39 -0
  8. data/lib/libgems_ext/libgems.rb +39 -0
  9. data/lib/libgems_ext/spec_fetcher.rb +11 -0
  10. data/lib/spade-packager.rb +1 -0
  11. data/lib/spade/packager.rb +18 -0
  12. data/lib/spade/packager/cli.rb +9 -0
  13. data/lib/spade/packager/cli/base.rb +196 -0
  14. data/lib/spade/packager/cli/owner.rb +46 -0
  15. data/lib/spade/packager/cli/project_generator.rb +117 -0
  16. data/lib/spade/packager/credentials.rb +38 -0
  17. data/lib/spade/packager/local.rb +50 -0
  18. data/lib/spade/packager/package.rb +160 -0
  19. data/lib/spade/packager/remote.rb +98 -0
  20. data/lib/spade/packager/repository.rb +18 -0
  21. data/lib/spade/packager/version.rb +5 -0
  22. data/packages/coffee-script/.gitignore +8 -0
  23. data/packages/coffee-script/.npmignore +11 -0
  24. data/packages/coffee-script/Cakefile +229 -0
  25. data/packages/coffee-script/LICENSE +22 -0
  26. data/packages/coffee-script/README +47 -0
  27. data/packages/coffee-script/Rakefile +78 -0
  28. data/packages/coffee-script/bin/cake +7 -0
  29. data/packages/coffee-script/bin/coffee +7 -0
  30. data/packages/coffee-script/documentation/coffee/aliases.coffee +11 -0
  31. data/packages/coffee-script/documentation/coffee/array_comprehensions.coffee +2 -0
  32. data/packages/coffee-script/documentation/coffee/block_comment.coffee +6 -0
  33. data/packages/coffee-script/documentation/coffee/cake_tasks.coffee +9 -0
  34. data/packages/coffee-script/documentation/coffee/classes.coffee +25 -0
  35. data/packages/coffee-script/documentation/coffee/comparisons.coffee +5 -0
  36. data/packages/coffee-script/documentation/coffee/conditionals.coffee +13 -0
  37. data/packages/coffee-script/documentation/coffee/default_args.coffee +8 -0
  38. data/packages/coffee-script/documentation/coffee/do.coffee +4 -0
  39. data/packages/coffee-script/documentation/coffee/embedded.coffee +5 -0
  40. data/packages/coffee-script/documentation/coffee/existence.coffee +10 -0
  41. data/packages/coffee-script/documentation/coffee/expressions.coffee +9 -0
  42. data/packages/coffee-script/documentation/coffee/expressions_assignment.coffee +3 -0
  43. data/packages/coffee-script/documentation/coffee/expressions_comprehension.coffee +3 -0
  44. data/packages/coffee-script/documentation/coffee/expressions_try.coffee +7 -0
  45. data/packages/coffee-script/documentation/coffee/fat_arrow.coffee +6 -0
  46. data/packages/coffee-script/documentation/coffee/functions.coffee +2 -0
  47. data/packages/coffee-script/documentation/coffee/heredocs.coffee +7 -0
  48. data/packages/coffee-script/documentation/coffee/heregexes.coffee +11 -0
  49. data/packages/coffee-script/documentation/coffee/interpolation.coffee +6 -0
  50. data/packages/coffee-script/documentation/coffee/multiple_return_values.coffee +7 -0
  51. data/packages/coffee-script/documentation/coffee/object_comprehensions.coffee +4 -0
  52. data/packages/coffee-script/documentation/coffee/object_extraction.coffee +13 -0
  53. data/packages/coffee-script/documentation/coffee/objects_and_arrays.coffee +19 -0
  54. data/packages/coffee-script/documentation/coffee/objects_reserved.coffee +5 -0
  55. data/packages/coffee-script/documentation/coffee/overview.coffee +28 -0
  56. data/packages/coffee-script/documentation/coffee/parallel_assignment.coffee +6 -0
  57. data/packages/coffee-script/documentation/coffee/patterns_and_splats.coffee +7 -0
  58. data/packages/coffee-script/documentation/coffee/prototypes.coffee +3 -0
  59. data/packages/coffee-script/documentation/coffee/range_comprehensions.coffee +2 -0
  60. data/packages/coffee-script/documentation/coffee/scope.coffee +5 -0
  61. data/packages/coffee-script/documentation/coffee/slices.coffee +7 -0
  62. data/packages/coffee-script/documentation/coffee/soaks.coffee +1 -0
  63. data/packages/coffee-script/documentation/coffee/splats.coffee +27 -0
  64. data/packages/coffee-script/documentation/coffee/splices.coffee +5 -0
  65. data/packages/coffee-script/documentation/coffee/strings.coffee +8 -0
  66. data/packages/coffee-script/documentation/coffee/switch.coffee +10 -0
  67. data/packages/coffee-script/documentation/coffee/try.coffee +8 -0
  68. data/packages/coffee-script/documentation/coffee/while.coffee +10 -0
  69. data/packages/coffee-script/documentation/css/docs.css +374 -0
  70. data/packages/coffee-script/documentation/css/idle.css +64 -0
  71. data/packages/coffee-script/documentation/docs/browser.html +25 -0
  72. data/packages/coffee-script/documentation/docs/cake.html +43 -0
  73. data/packages/coffee-script/documentation/docs/coffee-script.html +51 -0
  74. data/packages/coffee-script/documentation/docs/command.html +161 -0
  75. data/packages/coffee-script/documentation/docs/docco.css +186 -0
  76. data/packages/coffee-script/documentation/docs/grammar.html +399 -0
  77. data/packages/coffee-script/documentation/docs/helpers.html +31 -0
  78. data/packages/coffee-script/documentation/docs/index.html +3 -0
  79. data/packages/coffee-script/documentation/docs/lexer.html +490 -0
  80. data/packages/coffee-script/documentation/docs/nodes.html +1338 -0
  81. data/packages/coffee-script/documentation/docs/optparse.html +78 -0
  82. data/packages/coffee-script/documentation/docs/repl.html +24 -0
  83. data/packages/coffee-script/documentation/docs/rewriter.html +251 -0
  84. data/packages/coffee-script/documentation/docs/scope.html +54 -0
  85. data/packages/coffee-script/documentation/docs/underscore.html +295 -0
  86. data/packages/coffee-script/documentation/images/background.png +0 -0
  87. data/packages/coffee-script/documentation/images/banding.png +0 -0
  88. data/packages/coffee-script/documentation/images/button_bg.png +0 -0
  89. data/packages/coffee-script/documentation/images/button_bg_dark.gif +0 -0
  90. data/packages/coffee-script/documentation/images/button_bg_green.gif +0 -0
  91. data/packages/coffee-script/documentation/images/favicon.ico +0 -0
  92. data/packages/coffee-script/documentation/images/logo.png +0 -0
  93. data/packages/coffee-script/documentation/images/screenshadow.png +0 -0
  94. data/packages/coffee-script/documentation/index.html.erb +1607 -0
  95. data/packages/coffee-script/documentation/js/aliases.js +17 -0
  96. data/packages/coffee-script/documentation/js/array_comprehensions.js +6 -0
  97. data/packages/coffee-script/documentation/js/block_comment.js +4 -0
  98. data/packages/coffee-script/documentation/js/cake_tasks.js +10 -0
  99. data/packages/coffee-script/documentation/js/classes.js +44 -0
  100. data/packages/coffee-script/documentation/js/comparisons.js +3 -0
  101. data/packages/coffee-script/documentation/js/conditionals.js +12 -0
  102. data/packages/coffee-script/documentation/js/default_args.js +7 -0
  103. data/packages/coffee-script/documentation/js/do.js +10 -0
  104. data/packages/coffee-script/documentation/js/embedded.js +4 -0
  105. data/packages/coffee-script/documentation/js/existence.js +6 -0
  106. data/packages/coffee-script/documentation/js/expressions.js +15 -0
  107. data/packages/coffee-script/documentation/js/expressions_assignment.js +2 -0
  108. data/packages/coffee-script/documentation/js/expressions_comprehension.js +9 -0
  109. data/packages/coffee-script/documentation/js/expressions_try.js +7 -0
  110. data/packages/coffee-script/documentation/js/fat_arrow.js +9 -0
  111. data/packages/coffee-script/documentation/js/functions.js +7 -0
  112. data/packages/coffee-script/documentation/js/heredocs.js +2 -0
  113. data/packages/coffee-script/documentation/js/heregexes.js +2 -0
  114. data/packages/coffee-script/documentation/js/interpolation.js +4 -0
  115. data/packages/coffee-script/documentation/js/multiple_return_values.js +5 -0
  116. data/packages/coffee-script/documentation/js/object_comprehensions.js +15 -0
  117. data/packages/coffee-script/documentation/js/object_extraction.js +10 -0
  118. data/packages/coffee-script/documentation/js/objects_and_arrays.js +17 -0
  119. data/packages/coffee-script/documentation/js/objects_reserved.js +4 -0
  120. data/packages/coffee-script/documentation/js/overview.js +35 -0
  121. data/packages/coffee-script/documentation/js/parallel_assignment.js +4 -0
  122. data/packages/coffee-script/documentation/js/patterns_and_splats.js +4 -0
  123. data/packages/coffee-script/documentation/js/prototypes.js +3 -0
  124. data/packages/coffee-script/documentation/js/range_comprehensions.js +9 -0
  125. data/packages/coffee-script/documentation/js/scope.js +8 -0
  126. data/packages/coffee-script/documentation/js/slices.js +4 -0
  127. data/packages/coffee-script/documentation/js/soaks.js +2 -0
  128. data/packages/coffee-script/documentation/js/splats.js +15 -0
  129. data/packages/coffee-script/documentation/js/splices.js +3 -0
  130. data/packages/coffee-script/documentation/js/strings.js +2 -0
  131. data/packages/coffee-script/documentation/js/switch.js +23 -0
  132. data/packages/coffee-script/documentation/js/try.js +8 -0
  133. data/packages/coffee-script/documentation/js/while.js +18 -0
  134. data/packages/coffee-script/documentation/vendor/jquery-1.4.2.js +6240 -0
  135. data/packages/coffee-script/examples/beautiful_code/binary_search.coffee +16 -0
  136. data/packages/coffee-script/examples/beautiful_code/quicksort_runtime.coffee +13 -0
  137. data/packages/coffee-script/examples/beautiful_code/regular_expression_matcher.coffee +34 -0
  138. data/packages/coffee-script/examples/blocks.coffee +54 -0
  139. data/packages/coffee-script/examples/code.coffee +167 -0
  140. data/packages/coffee-script/examples/computer_science/README +4 -0
  141. data/packages/coffee-script/examples/computer_science/binary_search.coffee +25 -0
  142. data/packages/coffee-script/examples/computer_science/bubble_sort.coffee +11 -0
  143. data/packages/coffee-script/examples/computer_science/linked_list.coffee +108 -0
  144. data/packages/coffee-script/examples/computer_science/luhn_algorithm.coffee +36 -0
  145. data/packages/coffee-script/examples/computer_science/merge_sort.coffee +19 -0
  146. data/packages/coffee-script/examples/computer_science/selection_sort.coffee +23 -0
  147. data/packages/coffee-script/examples/poignant.coffee +181 -0
  148. data/packages/coffee-script/examples/potion.coffee +206 -0
  149. data/packages/coffee-script/examples/underscore.coffee +682 -0
  150. data/packages/coffee-script/examples/web_server.coffee +12 -0
  151. data/packages/coffee-script/extras/EXTRAS +7 -0
  152. data/packages/coffee-script/extras/coffee-script.js +8 -0
  153. data/packages/coffee-script/extras/jsl.conf +44 -0
  154. data/packages/coffee-script/index.html +2515 -0
  155. data/packages/coffee-script/lib/browser.js +52 -0
  156. data/packages/coffee-script/lib/cake.js +76 -0
  157. data/packages/coffee-script/lib/coffee-script.js +82 -0
  158. data/packages/coffee-script/lib/command.js +263 -0
  159. data/packages/coffee-script/lib/grammar.js +581 -0
  160. data/packages/coffee-script/lib/helpers.js +66 -0
  161. data/packages/coffee-script/lib/index.js +8 -0
  162. data/packages/coffee-script/lib/lexer.js +633 -0
  163. data/packages/coffee-script/lib/nodes.js +2165 -0
  164. data/packages/coffee-script/lib/optparse.js +111 -0
  165. data/packages/coffee-script/lib/parser.js +649 -0
  166. data/packages/coffee-script/lib/repl.js +42 -0
  167. data/packages/coffee-script/lib/rewriter.js +353 -0
  168. data/packages/coffee-script/lib/scope.js +120 -0
  169. data/packages/coffee-script/lib/spade-format.js +45 -0
  170. data/packages/coffee-script/package.json +26 -0
  171. data/packages/coffee-script/src/browser.coffee +43 -0
  172. data/packages/coffee-script/src/cake.coffee +69 -0
  173. data/packages/coffee-script/src/coffee-script.coffee +92 -0
  174. data/packages/coffee-script/src/command.coffee +214 -0
  175. data/packages/coffee-script/src/grammar.coffee +590 -0
  176. data/packages/coffee-script/src/helpers.coffee +56 -0
  177. data/packages/coffee-script/src/index.coffee +2 -0
  178. data/packages/coffee-script/src/lexer.coffee +653 -0
  179. data/packages/coffee-script/src/nodes.coffee +1754 -0
  180. data/packages/coffee-script/src/optparse.coffee +99 -0
  181. data/packages/coffee-script/src/repl.coffee +42 -0
  182. data/packages/coffee-script/src/rewriter.coffee +326 -0
  183. data/packages/coffee-script/src/scope.coffee +94 -0
  184. data/packages/coffee-script/test/arguments.coffee +127 -0
  185. data/packages/coffee-script/test/assignment.coffee +98 -0
  186. data/packages/coffee-script/test/break.coffee +18 -0
  187. data/packages/coffee-script/test/comments.coffee +201 -0
  188. data/packages/coffee-script/test/conditionals.coffee +181 -0
  189. data/packages/coffee-script/test/exception_handling.coffee +90 -0
  190. data/packages/coffee-script/test/helpers.coffee +96 -0
  191. data/packages/coffee-script/test/importing.coffee +18 -0
  192. data/packages/coffee-script/test/operators.coffee +225 -0
  193. data/packages/coffee-script/test/ranges_slices_and_splices.coffee +186 -0
  194. data/packages/coffee-script/test/regular_expressions.coffee +56 -0
  195. data/packages/coffee-script/test/test.html +123 -0
  196. data/packages/coffee-script/test/test_chaining.coffee +77 -0
  197. data/packages/coffee-script/test/test_classes.coffee +372 -0
  198. data/packages/coffee-script/test/test_compilation.coffee +26 -0
  199. data/packages/coffee-script/test/test_comprehensions.coffee +318 -0
  200. data/packages/coffee-script/test/test_existence.coffee +165 -0
  201. data/packages/coffee-script/test/test_functions.coffee +379 -0
  202. data/packages/coffee-script/test/test_heredocs.coffee +111 -0
  203. data/packages/coffee-script/test/test_literals.coffee +270 -0
  204. data/packages/coffee-script/test/test_option_parser.coffee +27 -0
  205. data/packages/coffee-script/test/test_pattern_matching.coffee +162 -0
  206. data/packages/coffee-script/test/test_returns.coffee +63 -0
  207. data/packages/coffee-script/test/test_splats.coffee +102 -0
  208. data/packages/coffee-script/test/test_strings.coffee +118 -0
  209. data/packages/coffee-script/test/test_switch.coffee +103 -0
  210. data/packages/coffee-script/test/test_while.coffee +71 -0
  211. data/packages/ivory/LICENSE.txt +1 -0
  212. data/packages/ivory/README.md +19 -0
  213. data/packages/ivory/lib/buffer.js +111 -0
  214. data/packages/ivory/lib/events.js +137 -0
  215. data/packages/ivory/lib/fs.js +266 -0
  216. data/packages/ivory/lib/main.js +13 -0
  217. data/packages/ivory/lib/path.js +158 -0
  218. data/packages/ivory/lib/ruby/buffer.rb +145 -0
  219. data/packages/ivory/lib/ruby/constants.rb +585 -0
  220. data/packages/ivory/lib/ruby/events.rb +32 -0
  221. data/packages/ivory/lib/ruby/fs.rb +245 -0
  222. data/packages/ivory/lib/ruby/process.rb +28 -0
  223. data/packages/ivory/lib/stream.js +115 -0
  224. data/packages/ivory/lib/util.js +414 -0
  225. data/packages/ivory/package.json +11 -0
  226. data/packages/ivory/spade-boot.js +78 -0
  227. data/packages/jquery/main.js +7179 -0
  228. data/packages/jquery/package.json +10 -0
  229. data/packages/json/lib/main.js +14 -0
  230. data/packages/json/package.json +8 -0
  231. data/packages/lproj/README.md +77 -0
  232. data/packages/lproj/examples/demo-app/en.lproj/localized.strings +2 -0
  233. data/packages/lproj/examples/demo-app/fr.lproj/localized.strings +3 -0
  234. data/packages/lproj/examples/demo-app/index.html +8 -0
  235. data/packages/lproj/examples/demo-app/lib/main.js +7 -0
  236. data/packages/lproj/examples/demo-app/package.json +9 -0
  237. data/packages/lproj/lib/main.js +78 -0
  238. data/packages/lproj/lib/strings-format.js +6 -0
  239. data/packages/lproj/package.json +9 -0
  240. data/packages/optparse/README.md +161 -0
  241. data/packages/optparse/TODO +1 -0
  242. data/packages/optparse/examples/browser-test.html +75 -0
  243. data/packages/optparse/examples/nodejs-test.js +90 -0
  244. data/packages/optparse/lib/optparse.js +309 -0
  245. data/packages/optparse/package.json +13 -0
  246. data/packages/optparse/seed.yml +5 -0
  247. data/packages/text/lib/main.js +8 -0
  248. data/packages/text/package.json +9 -0
  249. data/packages/web-file/README.md +7 -0
  250. data/packages/web-file/lib/errors.js +32 -0
  251. data/packages/web-file/lib/file-reader.js +10 -0
  252. data/packages/web-file/lib/file-system.js +234 -0
  253. data/packages/web-file/lib/file-writer.js +10 -0
  254. data/packages/web-file/lib/file.js +9 -0
  255. data/packages/web-file/lib/main.js +34 -0
  256. data/packages/web-file/lib/platform.js +25 -0
  257. data/packages/web-file/lib/ruby/file.rb +252 -0
  258. data/packages/web-file/lib/ruby/file_reader.rb +69 -0
  259. data/packages/web-file/lib/ruby/file_system.rb +134 -0
  260. data/packages/web-file/lib/ruby/file_writer.rb +78 -0
  261. data/packages/web-file/package.json +12 -0
  262. data/packages/web-typed-array/README.md +7 -0
  263. data/packages/web-typed-array/lib/array-buffer-view.js +9 -0
  264. data/packages/web-typed-array/lib/array-buffer.js +7 -0
  265. data/packages/web-typed-array/lib/main.js +33 -0
  266. data/packages/web-typed-array/lib/platform.js +20 -0
  267. data/packages/web-typed-array/lib/ruby/array_buffer.rb +31 -0
  268. data/packages/web-typed-array/lib/ruby/array_buffer_view.rb +130 -0
  269. data/packages/web-typed-array/lib/ruby/typed_array.rb +133 -0
  270. data/packages/web-typed-array/lib/typed-array.js +26 -0
  271. data/packages/web-typed-array/package.json +9 -0
  272. data/spade-packager.gemspec +39 -0
  273. data/spec/cli/build_spec.rb +57 -0
  274. data/spec/cli/install_spec.rb +119 -0
  275. data/spec/cli/installed_spec.rb +55 -0
  276. data/spec/cli/list_spec.rb +74 -0
  277. data/spec/cli/login_spec.rb +75 -0
  278. data/spec/cli/new_spec.rb +5 -0
  279. data/spec/cli/owner_spec.rb +114 -0
  280. data/spec/cli/push_spec.rb +73 -0
  281. data/spec/cli/uninstall_spec.rb +58 -0
  282. data/spec/cli/unpack_spec.rb +72 -0
  283. data/spec/cli/unyank_spec.rb +73 -0
  284. data/spec/cli/yank_spec.rb +73 -0
  285. data/spec/credentials_spec.rb +23 -0
  286. data/spec/fixtures/badrake-0.8.7.spd +0 -0
  287. data/spec/fixtures/builder-3.0.0.spd +0 -0
  288. data/spec/fixtures/bundler-1.1.pre.spd +0 -0
  289. data/spec/fixtures/coffee-1.0.1.pre.spd +0 -0
  290. data/spec/fixtures/core-test-0.4.3.spd +0 -0
  291. data/spec/fixtures/core-test/bin/cot +3 -0
  292. data/spec/fixtures/core-test/lib/main.js +1 -0
  293. data/spec/fixtures/core-test/resources/runner.css +0 -0
  294. data/spec/fixtures/core-test/tests/test.js +1 -0
  295. data/spec/fixtures/highline-1.6.1.spd +0 -0
  296. data/spec/fixtures/ivory-0.0.1.spd +0 -0
  297. data/spec/fixtures/jquery-1.4.3.spd +0 -0
  298. data/spec/fixtures/optparse-1.0.1.spd +0 -0
  299. data/spec/fixtures/package.json +30 -0
  300. data/spec/fixtures/rake-0.8.6.spd +0 -0
  301. data/spec/fixtures/rake-0.8.7.spd +0 -0
  302. data/spec/gauntlet_spec.rb +27 -0
  303. data/spec/package_spec.rb +267 -0
  304. data/spec/spec_helper.rb +32 -0
  305. data/spec/support/cli.rb +103 -0
  306. data/spec/support/fake.rb +48 -0
  307. data/spec/support/fake_gem_server.rb +67 -0
  308. data/spec/support/fake_gemcutter.rb +50 -0
  309. data/spec/support/matchers.rb +32 -0
  310. data/spec/support/path.rb +61 -0
  311. data/templates/project/LICENSE +19 -0
  312. data/templates/project/README.md +21 -0
  313. data/templates/project/lib/main.js +9 -0
  314. data/templates/project/project.json +31 -0
  315. data/templates/project/tests/main-test.js +8 -0
  316. metadata +484 -0
@@ -0,0 +1,90 @@
1
+ // Import the optparse script
2
+ require.paths.unshift(__dirname); //make local paths accessible
3
+
4
+ var optparse = require('lib/optparse');
5
+
6
+ var sys= require('sys');
7
+
8
+ // Define some options
9
+ var SWITCHES = [
10
+ ['-i', '--include-file FILE', "Includes a file"],
11
+ ['-p', '--print [MESSAGE]', "Prints an optional message on screen"],
12
+ ['-d', '--debug', "Enables debug mode"],
13
+ ['-H', '--help', "Shows this help section"],
14
+ ['--date DATE', "A date. A date is expected E.G. 2009-01-14"],
15
+ ['--number NUMBER', "A Number. Supported formats are 123, 123.123, 0xA123"],
16
+ ['--other NAME', "No handler defined for this option. Will be handled by the wildcard handler."],
17
+ ];
18
+
19
+ // Create a new OptionParser with defined switches
20
+ var parser = new optparse.OptionParser(SWITCHES), print_summary = true,
21
+ first_arg;
22
+ parser.banner = 'Usage: nodejs-test.js [options]';
23
+
24
+ // Internal variable to store options.
25
+ var options = {
26
+ debug: true,
27
+ files: [],
28
+ number: undefined,
29
+ date: undefined
30
+ };
31
+
32
+ // Handle the first argument (switches excluded)
33
+ parser.on(0, function(value) {
34
+ first_arg = value;
35
+ });
36
+
37
+ // Handle the --include-file switch
38
+ parser.on('include-file', function(value) {
39
+ options.files.push(value);
40
+ });
41
+
42
+ // Handle the --print switch
43
+ parser.on('print', function(value) {
44
+ sys.puts('PRINT: ' + (value || 'No message entered'));
45
+ });
46
+
47
+ // Handle the --date switch
48
+ parser.on('date', function(value) {
49
+ options.date = value;
50
+ });
51
+
52
+ // Handle the --number switch
53
+ parser.on('number', function(value) {
54
+ options.number = value;
55
+ });
56
+
57
+ // Handle the --debug switch
58
+ parser.on('debug', function() {
59
+ options.debug = true;
60
+ });
61
+
62
+ // Handle the --help switch
63
+ parser.on('help', function() {
64
+ sys.puts(parser.toString());
65
+ print_summary = false;
66
+ });
67
+
68
+ // Set a default handler
69
+ parser.on('*', function(opt, value) {
70
+ sys.puts('wild handler for ' + opt + ', value=' + value);
71
+ });
72
+
73
+ // Parse command line arguments
74
+ parser.parse(process.ARGV);
75
+
76
+ if(print_summary) {
77
+ sys.puts("First non-switch argument is: " + first_arg);
78
+
79
+ // Output all files that was included.
80
+ sys.puts("No of files to include: " + options.files.length);
81
+ for(var i = 0; i < options.files.length; i++) {
82
+ sys.puts("File [" + (i + 1) + "]:" + options.files[i]);
83
+ }
84
+
85
+ // Is debug-mode enabled?
86
+ sys.puts("Debug mode is set to: " + options.debug);
87
+
88
+ sys.puts("Number value is: " + options.number);
89
+ sys.puts("Date value is: " + options.date);
90
+ }
@@ -0,0 +1,309 @@
1
+ // Optparse.js 1.0.2 - Option Parser for Javascript
2
+ //
3
+ // Copyright (c) 2009 Johan Dahlberg
4
+ //
5
+ // See README.md for license.
6
+ //
7
+ var optparse = {};
8
+ try{ optparse = exports } catch(e) {}; // Try to export the lib for node.js
9
+ (function(self) {
10
+ var VERSION = '1.0.2';
11
+ var LONG_SWITCH_RE = /^--\w/;
12
+ var SHORT_SWITCH_RE = /^-\w/;
13
+ var NUMBER_RE = /^(0x[A-Fa-f0-9]+)|([0-9]+\.[0-9]+)|(\d+)$/;
14
+ var DATE_RE = /^\d{4}-(0[0-9]|1[0,1,2])-([0,1,2][0-9]|3[0,1])$/;
15
+ var EMAIL_RE = /^([0-9a-zA-Z]+([_.-]?[0-9a-zA-Z]+)*@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$/;
16
+ var EXT_RULE_RE = /(\-\-[\w_-]+)\s+([\w\[\]_-]+)|(\-\-[\w_-]+)/;
17
+ var ARG_OPTIONAL_RE = /\[(.+)\]/;
18
+
19
+ // The default switch argument filter to use, when argument name doesnt match
20
+ // any other names.
21
+ var DEFAULT_FILTER = '_DEFAULT';
22
+ var PREDEFINED_FILTERS = {};
23
+
24
+ // The default switch argument filter. Parses the argument as text.
25
+ function filter_text(value) {
26
+ return value;
27
+ }
28
+
29
+ // Switch argument filter that expects an integer, HEX or a decimal value. An
30
+ // exception is throwed if the criteria is not matched.
31
+ // Valid input formats are: 0xFFFFFFF, 12345 and 1234.1234
32
+ function filter_number(value) {
33
+ var m = NUMBER_RE(value);
34
+ if(m == null) throw OptError('Expected a number representative');
35
+ if(m[1]) {
36
+ // The number is in HEX format. Convert into a number, then return it
37
+ return parseInt(m[1], 16);
38
+ } else {
39
+ // The number is in regular- or decimal form. Just run in through
40
+ // the float caster.
41
+ return parseFloat(m[2] || m[3]);
42
+ }
43
+ };
44
+
45
+ // Switch argument filter that expects a Date expression. The date string MUST be
46
+ // formated as: "yyyy-mm-dd" An exception is throwed if the criteria is not
47
+ // matched. An DATE object is returned on success.
48
+ function filter_date(value) {
49
+ var m = DATE_RE(value);
50
+ if(m == null) throw OptError('Expected a date representation in the "yyyy-mm-dd" format.');
51
+ return new Date(parseInt(m[0]), parseInt(m[1]), parseInt(m[2]));
52
+ };
53
+
54
+ // Switch argument filter that expects an email address. An exception is throwed
55
+ // if the criteria doesn`t match.
56
+ function filter_email(value) {
57
+ var m = EMAIL_RE(value);
58
+ if(m == null) throw OptError('Excpeted an email address.');
59
+ return m[1];
60
+ }
61
+
62
+ // Register all predefined filters. This dict is used by each OptionParser
63
+ // instance, when parsing arguments. Custom filters can be added to the parser
64
+ // instance by calling the "add_filter" -method.
65
+ PREDEFINED_FILTERS[DEFAULT_FILTER] = filter_text;
66
+ PREDEFINED_FILTERS['TEXT'] = filter_text;
67
+ PREDEFINED_FILTERS['NUMBER'] = filter_number;
68
+ PREDEFINED_FILTERS['DATE'] = filter_date;
69
+ PREDEFINED_FILTERS['EMAIL'] = filter_email;
70
+
71
+ // Buildes rules from a switches collection. The switches collection is defined
72
+ // when constructing a new OptionParser object.
73
+ function build_rules(filters, arr) {
74
+ var rules = [];
75
+ for(var i=0; i<arr.length; i++) {
76
+ var r = arr[i], rule
77
+ if(!contains_expr(r)) throw OptError('Rule MUST contain an option.');
78
+ switch(r.length) {
79
+ case 1:
80
+ rule = build_rule(filters, r[0]);
81
+ break;
82
+ case 2:
83
+ var expr = LONG_SWITCH_RE(r[0]) ? 0 : 1;
84
+ var alias = expr == 0 ? -1 : 0;
85
+ var desc = alias == -1 ? 1 : -1;
86
+ rule = build_rule(filters, r[alias], r[expr], r[desc]);
87
+ break;
88
+ case 3:
89
+ rule = build_rule(filters, r[0], r[1], r[2]);
90
+ break;
91
+ default:
92
+ case 0:
93
+ continue;
94
+ }
95
+ rules.push(rule)
96
+ }
97
+ return rules;
98
+ }
99
+
100
+ // Builds a rule with specified expression, short style switch and help. This
101
+ // function expects a dict with filters to work correctly.
102
+ //
103
+ // Return format:
104
+ // name The name of the switch.
105
+ // short The short style switch
106
+ // long The long style switch
107
+ // decl The declaration expression (the input expression)
108
+ // desc The optional help section for the switch
109
+ // optional_arg Indicates that switch argument is optional
110
+ // filter The filter to use when parsing the arg. An
111
+ // <<undefined>> value means that the switch does
112
+ // not take anargument.
113
+ function build_rule(filters, short, expr, desc) {
114
+ var optional, filter;
115
+ var m = expr.match(EXT_RULE_RE);
116
+ if(m == null) throw OptError('The switch is not well-formed.');
117
+ var long = m[1] || m[3];
118
+ if(m[2] != undefined) {
119
+ // A switch argument is expected. Check if the argument is optional,
120
+ // then find a filter that suites.
121
+ var optional_match = ARG_OPTIONAL_RE(m[2]);
122
+ var filter_name = optional_match === null ? m[2] : optional_match[1];
123
+ optional = optional_match !== null;
124
+ filter = filters[filter_name];
125
+ if(filter === undefined) filter = filters[DEFAULT_FILTER];
126
+ }
127
+ return {
128
+ name: long.substr(2),
129
+ short: short,
130
+ long: long,
131
+ decl: expr,
132
+ desc: desc,
133
+ optional_arg: optional,
134
+ filter: filter
135
+ }
136
+ }
137
+
138
+ // Loop's trough all elements of an array and check if there is valid
139
+ // options expression within. An valid option is a token that starts
140
+ // double dashes. E.G. --my_option
141
+ function contains_expr(arr) {
142
+ if(!arr || !arr.length) return false;
143
+ var l = arr.length;
144
+ while(l-- > 0) if(LONG_SWITCH_RE(arr[l])) return true;
145
+ return false;
146
+ }
147
+
148
+ // Extends destination object with members of source object
149
+ function extend(dest, src) {
150
+ var result = dest;
151
+ for(var n in src) {
152
+ result[n] = src[n];
153
+ }
154
+ return result;
155
+ }
156
+
157
+ // Appends spaces to match specified number of chars
158
+ function spaces(arg1, arg2) {
159
+ var l, builder = [];
160
+ if(arg1.constructor === Number) {
161
+ l = arg1;
162
+ } else {
163
+ if(arg1.length == arg2) return arg1;
164
+ l = arg2 - arg1.length;
165
+ builder.push(arg1);
166
+ }
167
+ while(l-- > 0) builder.push(' ');
168
+ return builder.join('');
169
+ }
170
+
171
+ // Create a new Parser object that can be used to parse command line arguments.
172
+ //
173
+ //
174
+ function Parser(rules) {
175
+ return new OptionParser(rules);
176
+ }
177
+
178
+ // Creates an error object with specified error message.
179
+ function OptError(msg) {
180
+ return new function() {
181
+ this.msg = msg;
182
+ this.toString = function() {
183
+ return this.msg;
184
+ }
185
+ }
186
+ }
187
+
188
+ function OptionParser(rules) {
189
+ this.banner = 'Usage: [Options]';
190
+ this.options_title = 'Available options:'
191
+ this._rules = rules;
192
+ this._halt = false;
193
+ this.filters = extend({}, PREDEFINED_FILTERS);
194
+ this.on_args = {};
195
+ this.on_switches = {};
196
+ this.on_halt = function() {};
197
+ this.default_handler = function() {};
198
+ }
199
+
200
+ OptionParser.prototype = {
201
+
202
+ // Adds args and switchs handler.
203
+ on: function(value, fn) {
204
+ if(value.constructor === Function ) {
205
+ this.default_handler = value;
206
+ } else if(value.constructor === Number) {
207
+ this.on_args[value] = fn;
208
+ } else {
209
+ this.on_switches[value] = fn;
210
+ }
211
+ },
212
+
213
+ // Adds a custom filter to the parser. It's possible to override the
214
+ // default filter by passing the value "_DEFAULT" to the ´´name´´
215
+ // argument. The name of the filter is automatically transformed into
216
+ // upper case.
217
+ filter: function(name, fn) {
218
+ this.filters[name.toUpperCase()] = fn;
219
+ },
220
+
221
+ // Parses specified args. Returns remaining arguments.
222
+ parse: function(args) {
223
+ var result = [], callback;
224
+ var rules = build_rules(this.filters, this._rules);
225
+ var tokens = args.concat([]);
226
+ while((token = tokens.shift()) && this._halt == false) {
227
+ if(LONG_SWITCH_RE(token) || SHORT_SWITCH_RE(token)) {
228
+ var arg = undefined;
229
+ // The token is a long or a short switch. Get the corresponding
230
+ // rule, filter and handle it. Pass the switch to the default
231
+ // handler if no rule matched.
232
+ for(var i = 0; i < rules.length; i++) {
233
+ var rule = rules[i];
234
+ if(rule.long == token || rule.short == token) {
235
+ if(rule.filter !== undefined) {
236
+ arg = tokens.shift();
237
+ if(!LONG_SWITCH_RE(arg) && !SHORT_SWITCH_RE(arg)) {
238
+ try {
239
+ arg = rule.filter(arg);
240
+ } catch(e) {
241
+ throw OptError(token + ': ' + e.toString());
242
+ }
243
+ } else if(rule.optional_arg) {
244
+ tokens.unshift(arg);
245
+ } else {
246
+ throw OptError('Expected switch argument.');
247
+ }
248
+ }
249
+ callback = this.on_switches[rule.name];
250
+ if (!callback) callback = this.on_switches['*'];
251
+ if(callback) callback.apply(this, [rule.name, arg]);
252
+ break;
253
+ }
254
+ }
255
+ if(i == rules.length) this.default_handler.apply(this, [token]);
256
+ } else {
257
+ // Did not match long or short switch. Parse the token as a
258
+ // normal argument.
259
+ callback = this.on_args[result.length];
260
+ result.push(token);
261
+ if(callback) callback.apply(this, [token]);
262
+ }
263
+ }
264
+ return this._halt ? this.on_halt.apply(this, []) : result;
265
+ },
266
+
267
+ // Returns an Array with all defined option rules
268
+ options: function() {
269
+ return build_rules(this.filters, this._rules);
270
+ },
271
+
272
+ // Add an on_halt callback if argument ´´fn´´ is specified. on_switch handlers can
273
+ // call instance.halt to abort the argument parsing. This can be useful when
274
+ // displaying help or version information.
275
+ halt: function(fn) {
276
+ this._halt = fn === undefined
277
+ if(fn) this.on_halt = fn;
278
+ },
279
+
280
+ // Returns a string representation of this OptionParser instance.
281
+ toString: function() {
282
+ var builder = [this.banner, '', this.options_title],
283
+ shorts = false, longest = 0, rule;
284
+ var rules = build_rules(this.filters, this._rules);
285
+ for(var i = 0; i < rules.length; i++) {
286
+ rule = rules[i];
287
+ // Quick-analyze the options.
288
+ if(rule.short) shorts = true;
289
+ if(rule.decl.length > longest) longest = rule.decl.length;
290
+ }
291
+ for(var i = 0; i < rules.length; i++) {
292
+ var text;
293
+ rule = rules[i];
294
+ if(shorts) {
295
+ if(rule.short) text = spaces(2) + rule.short + ', ';
296
+ else text = spaces(6);
297
+ }
298
+ text += spaces(rule.decl, longest) + spaces(3);
299
+ text += rule.desc;
300
+ builder.push(text);
301
+ }
302
+ return builder.join('\n');
303
+ }
304
+ }
305
+
306
+ self.VERSION = VERSION;
307
+ self.OptionParser = OptionParser;
308
+
309
+ })(optparse);
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "optparse",
3
+ "author": "Johan Dahlberg",
4
+ "summary": "Command-line option parser",
5
+ "description": "Optparse-js is a command line option parser for Javascript. It's slightly based on Ruby's implementation optparse but with some differences (different languages has different needs) such as custom parsers.",
6
+ "keywords": ["option", "parser", "command-line", "cli", "terminal"],
7
+ "version": "1.0.1",
8
+ "homepage": "https://github.com/jfd/optparse-js",
9
+ "main": "./lib/optparse",
10
+ "directories" : {
11
+ "lib" : "./lib"
12
+ }
13
+ }
@@ -0,0 +1,5 @@
1
+ ---
2
+ name: optparse
3
+ description: Command-line option parser
4
+ tags: option parser command-line cli terminal
5
+ version: 1.0.1
@@ -0,0 +1,8 @@
1
+
2
+ // to compile a format return a string of JavaScript that can be eval'd for
3
+ // the module. This way later the format compiler can be removed by the
4
+ // optimizer.
5
+ exports.compileFormat = function(str) {
6
+ return 'return '+JSON.stringify(str)+';';
7
+ };
8
+
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "text",
3
+ "version": "1.0.0",
4
+ "description": "format plugin to read plain text files",
5
+
6
+ "plugin:formats": {
7
+ "txt": "text/main"
8
+ }
9
+ }
@@ -0,0 +1,7 @@
1
+ # Web File
2
+
3
+ Implements the HTML5 [File](http://www.w3.org/TR/FileAPI/) specification in the spade CLI. Also returns feature detection info if available in browser.
4
+
5
+
6
+
7
+