vulcan 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (211) hide show
  1. data/bin/vulcan +3 -1
  2. data/lib/vulcan/cli.rb +22 -3
  3. data/lib/vulcan/version.rb +1 -1
  4. data/server/bin/make +1 -3
  5. data/server/lib/spawner.js +9 -4
  6. data/server/node_modules/connect-form/node_modules/formidable/Readme.md +13 -2
  7. data/server/node_modules/connect-form/node_modules/formidable/lib/incoming_form.js +19 -7
  8. data/server/node_modules/connect-form/node_modules/formidable/lib/multipart_parser.js +12 -1
  9. data/server/node_modules/connect-form/node_modules/formidable/package.json +1 -1
  10. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/file/plain.txt +1 -0
  11. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/no-filename/generic.http +13 -0
  12. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +0 -10
  13. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +0 -9
  14. data/server/node_modules/connect-form/node_modules/formidable/test/fixture/js/no-filename.js +3 -0
  15. data/server/node_modules/connect-form/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +1 -1
  16. data/server/node_modules/cradle/lib/cradle.js +0 -1
  17. data/server/node_modules/cradle/package.json +3 -3
  18. data/server/node_modules/cradle/test/cache-test.js +6 -7
  19. data/server/node_modules/cradle/test/cradle-test.js +4 -5
  20. data/server/node_modules/cradle/test/response-test.js +5 -6
  21. data/server/node_modules/express/History.md +53 -1
  22. data/server/node_modules/express/Makefile +3 -9
  23. data/server/node_modules/express/Readme.md +3 -1
  24. data/server/node_modules/express/bin/express +65 -66
  25. data/server/node_modules/express/lib/express.js +1 -1
  26. data/server/node_modules/express/lib/request.js +23 -9
  27. data/server/node_modules/express/lib/response.js +3 -2
  28. data/server/node_modules/express/lib/utils.js +13 -0
  29. data/server/node_modules/express/lib/view/view.js +2 -1
  30. data/server/node_modules/express/lib/view.js +19 -16
  31. data/server/node_modules/express/node_modules/connect/lib/connect.js +1 -1
  32. data/server/node_modules/express/node_modules/connect/lib/http.js +2 -0
  33. data/server/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js +135 -31
  34. data/server/node_modules/express/node_modules/connect/lib/middleware/limit.js +5 -1
  35. data/server/node_modules/express/node_modules/connect/lib/middleware/session.js +2 -2
  36. data/server/node_modules/express/node_modules/connect/lib/middleware/static.js +26 -21
  37. data/server/node_modules/express/node_modules/connect/lib/middleware/staticCache.js +91 -38
  38. data/server/node_modules/express/node_modules/connect/lib/middleware/vhost.js +1 -1
  39. data/server/node_modules/express/node_modules/connect/lib/utils.js +11 -4
  40. data/server/node_modules/express/node_modules/connect/node_modules/formidable/Makefile +14 -0
  41. data/server/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md +286 -0
  42. data/server/node_modules/express/node_modules/connect/node_modules/formidable/TODO +3 -0
  43. data/server/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js +70 -0
  44. data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js +43 -0
  45. data/server/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js +48 -0
  46. data/server/node_modules/express/node_modules/connect/node_modules/formidable/index.js +1 -0
  47. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js +61 -0
  48. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js +377 -0
  49. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js +3 -0
  50. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js +312 -0
  51. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js +25 -0
  52. data/server/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js +6 -0
  53. data/server/node_modules/express/node_modules/connect/node_modules/formidable/package.json +22 -0
  54. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js +19 -0
  55. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt +1 -0
  56. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt +1 -0
  57. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/no-filename/generic.http +13 -0
  58. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md +3 -0
  59. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-chrome-13.http +26 -0
  60. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-firefox-3.6.http +24 -0
  61. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/osx-safari-5.http +23 -0
  62. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-chrome-12.http +24 -0
  63. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-7.http +22 -0
  64. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-ie-8.http +22 -0
  65. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/xp-safari-5.http +22 -0
  66. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js +3 -0
  67. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +21 -0
  68. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multi_video.upload +0 -0
  69. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js +72 -0
  70. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js +89 -0
  71. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js +24 -0
  72. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js +80 -0
  73. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js +104 -0
  74. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js +715 -0
  75. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +50 -0
  76. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js +45 -0
  77. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js +72 -0
  78. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js +2 -0
  79. data/server/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js +63 -0
  80. data/server/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js +47 -0
  81. data/server/node_modules/express/node_modules/connect/package.json +7 -6
  82. data/server/node_modules/express/node_modules/connect/test.js +44 -31
  83. data/server/node_modules/express/node_modules/mime/mime.js +3 -3
  84. data/server/node_modules/express/node_modules/mime/package.json +21 -10
  85. data/server/node_modules/express/node_modules/mime/test.js +2 -3
  86. data/server/node_modules/express/node_modules/mime/{mime.types → types/mime.types} +0 -0
  87. data/server/node_modules/express/node_modules/mime/{node.types → types/node.types} +17 -0
  88. data/server/node_modules/express/node_modules/mkdirp/LICENSE +21 -0
  89. data/server/node_modules/express/node_modules/mkdirp/README.markdown +21 -0
  90. data/server/node_modules/express/node_modules/mkdirp/examples/pow.js +6 -0
  91. data/server/node_modules/express/node_modules/mkdirp/examples/pow.js.orig +6 -0
  92. data/server/node_modules/express/node_modules/mkdirp/examples/pow.js.rej +19 -0
  93. data/server/node_modules/express/node_modules/mkdirp/index.js +20 -0
  94. data/server/node_modules/express/node_modules/mkdirp/package.json +23 -0
  95. data/server/node_modules/express/node_modules/mkdirp/test/mkdirp.js +28 -0
  96. data/server/node_modules/express/node_modules/mkdirp/test/race.js +41 -0
  97. data/server/node_modules/express/node_modules/mkdirp/test/rel.js +32 -0
  98. data/server/node_modules/express/node_modules/qs/History.md +11 -0
  99. data/server/node_modules/express/node_modules/qs/Makefile +1 -3
  100. data/server/node_modules/express/node_modules/qs/Readme.md +2 -4
  101. data/server/node_modules/express/node_modules/qs/lib/querystring.js +100 -74
  102. data/server/node_modules/express/node_modules/qs/package.json +9 -2
  103. data/server/node_modules/express/node_modules/qs/test/mocha.opts +2 -0
  104. data/server/node_modules/express/node_modules/qs/test/{parse.test.js → parse.js} +1 -2
  105. data/server/node_modules/express/node_modules/qs/test/{stringify.test.js → stringify.js} +0 -0
  106. data/server/node_modules/express/package.json +9 -8
  107. data/server/node_modules/express/testing/foo/app.js +35 -0
  108. data/server/node_modules/express/testing/foo/package.json +9 -0
  109. data/server/node_modules/express/testing/foo/public/stylesheets/style.css +8 -0
  110. data/server/node_modules/express/testing/foo/routes/index.js +10 -0
  111. data/server/node_modules/express/testing/foo/views/index.jade +2 -0
  112. data/server/node_modules/express/testing/foo/views/layout.jade +6 -0
  113. data/server/node_modules/express/testing/index.js +43 -0
  114. data/server/node_modules/express/testing/public/test.txt +2971 -0
  115. data/server/node_modules/express/testing/views/page.html +1 -0
  116. data/server/node_modules/express/testing/views/page.jade +3 -0
  117. data/server/node_modules/express/testing/views/test.md +1 -0
  118. data/server/node_modules/express/testing/views/user/index.jade +1 -0
  119. data/server/node_modules/express/testing/views/user/list.jade +1 -0
  120. data/server/node_modules/node-uuid/README.md +166 -67
  121. data/server/node_modules/node-uuid/benchmark/README.md +53 -0
  122. data/server/node_modules/node-uuid/benchmark/bench.gnu +174 -0
  123. data/server/node_modules/node-uuid/benchmark/bench.sh +34 -0
  124. data/server/node_modules/node-uuid/{test → benchmark}/benchmark-native.c +0 -0
  125. data/server/node_modules/node-uuid/benchmark/benchmark.js +84 -0
  126. data/server/node_modules/node-uuid/package.json +5 -3
  127. data/server/node_modules/node-uuid/test/benchmark-native +0 -0
  128. data/server/node_modules/node-uuid/test/compare_v1.js +63 -0
  129. data/server/node_modules/node-uuid/test/test.html +3 -0
  130. data/server/node_modules/node-uuid/test/test.js +214 -57
  131. data/server/node_modules/node-uuid/uuid.js +225 -56
  132. data/server/node_modules/restler/README.md +20 -7
  133. data/server/node_modules/restler/bin/restler +1 -1
  134. data/server/node_modules/restler/lib/multipartform.js +9 -8
  135. data/server/node_modules/restler/lib/restler.js +64 -22
  136. data/server/node_modules/restler/package.json +2 -2
  137. data/server/node_modules/restler/test/restler.js +22 -2
  138. data/server/node_modules/restler/test/test_helper.js +20 -1
  139. data/server/package.json +1 -2
  140. data/server/web.js +30 -7
  141. metadata +90 -86
  142. data/server/node_modules/cradle/node_modules/vows/LICENSE +0 -20
  143. data/server/node_modules/cradle/node_modules/vows/Makefile +0 -7
  144. data/server/node_modules/cradle/node_modules/vows/README.md +0 -39
  145. data/server/node_modules/cradle/node_modules/vows/bin/vows +0 -515
  146. data/server/node_modules/cradle/node_modules/vows/lib/assert/error.js +0 -27
  147. data/server/node_modules/cradle/node_modules/vows/lib/assert/macros.js +0 -215
  148. data/server/node_modules/cradle/node_modules/vows/lib/assert/utils.js +0 -77
  149. data/server/node_modules/cradle/node_modules/vows/lib/vows/console.js +0 -131
  150. data/server/node_modules/cradle/node_modules/vows/lib/vows/context.js +0 -55
  151. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/file.js +0 -29
  152. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-foot.html +0 -2
  153. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/fragments/coverage-head.html +0 -61
  154. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-html.js +0 -54
  155. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-json.js +0 -54
  156. data/server/node_modules/cradle/node_modules/vows/lib/vows/coverage/report-plain.js +0 -38
  157. data/server/node_modules/cradle/node_modules/vows/lib/vows/extras.js +0 -28
  158. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/dot-matrix.js +0 -67
  159. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/json.js +0 -16
  160. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/silent.js +0 -8
  161. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/spec.js +0 -44
  162. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/watch.js +0 -39
  163. data/server/node_modules/cradle/node_modules/vows/lib/vows/reporters/xunit.js +0 -90
  164. data/server/node_modules/cradle/node_modules/vows/lib/vows/suite.js +0 -319
  165. data/server/node_modules/cradle/node_modules/vows/lib/vows.js +0 -193
  166. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/LICENSE +0 -20
  167. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/Makefile +0 -4
  168. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/README.md +0 -72
  169. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/lib/eyes.js +0 -233
  170. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/package.json +0 -14
  171. data/server/node_modules/cradle/node_modules/vows/node_modules/eyes/test/eyes-test.js +0 -55
  172. data/server/node_modules/cradle/node_modules/vows/package.json +0 -14
  173. data/server/node_modules/cradle/node_modules/vows/test/assert-test.js +0 -135
  174. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/failing.js +0 -18
  175. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/log.js +0 -18
  176. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/passing.js +0 -17
  177. data/server/node_modules/cradle/node_modules/vows/test/fixtures/isolate/stderr.js +0 -18
  178. data/server/node_modules/cradle/node_modules/vows/test/isolate-test.js +0 -140
  179. data/server/node_modules/cradle/node_modules/vows/test/testInherit.js +0 -133
  180. data/server/node_modules/cradle/node_modules/vows/test/vows-error-test.js +0 -51
  181. data/server/node_modules/cradle/node_modules/vows/test/vows-test.js +0 -374
  182. data/server/node_modules/express/node_modules/mime/index.js +0 -1
  183. data/server/node_modules/express/node_modules/qs/support/expresso/History.md +0 -128
  184. data/server/node_modules/express/node_modules/qs/support/expresso/Makefile +0 -53
  185. data/server/node_modules/express/node_modules/qs/support/expresso/Readme.md +0 -61
  186. data/server/node_modules/express/node_modules/qs/support/expresso/bin/expresso +0 -856
  187. data/server/node_modules/express/node_modules/qs/support/expresso/docs/api.html +0 -1080
  188. data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.html +0 -377
  189. data/server/node_modules/express/node_modules/qs/support/expresso/docs/index.md +0 -290
  190. data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/foot.html +0 -3
  191. data/server/node_modules/express/node_modules/qs/support/expresso/docs/layout/head.html +0 -42
  192. data/server/node_modules/express/node_modules/qs/support/expresso/lib/bar.js +0 -4
  193. data/server/node_modules/express/node_modules/qs/support/expresso/lib/foo.js +0 -16
  194. data/server/node_modules/express/node_modules/qs/support/expresso/package.json +0 -12
  195. data/server/node_modules/express/node_modules/qs/support/expresso/test/assert.test.js +0 -91
  196. data/server/node_modules/express/node_modules/qs/support/expresso/test/async.test.js +0 -12
  197. data/server/node_modules/express/node_modules/qs/support/expresso/test/bar.test.js +0 -13
  198. data/server/node_modules/express/node_modules/qs/support/expresso/test/foo.test.js +0 -14
  199. data/server/node_modules/express/node_modules/qs/support/expresso/test/http.test.js +0 -146
  200. data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/async.test.js +0 -39
  201. data/server/node_modules/express/node_modules/qs/support/expresso/test/serial/http.test.js +0 -48
  202. data/server/node_modules/express/node_modules/qs/support/should/History.md +0 -22
  203. data/server/node_modules/express/node_modules/qs/support/should/Makefile +0 -6
  204. data/server/node_modules/express/node_modules/qs/support/should/Readme.md +0 -248
  205. data/server/node_modules/express/node_modules/qs/support/should/examples/runner.js +0 -53
  206. data/server/node_modules/express/node_modules/qs/support/should/index.js +0 -2
  207. data/server/node_modules/express/node_modules/qs/support/should/lib/eql.js +0 -91
  208. data/server/node_modules/express/node_modules/qs/support/should/lib/should.js +0 -548
  209. data/server/node_modules/express/node_modules/qs/support/should/package.json +0 -8
  210. data/server/node_modules/express/node_modules/qs/support/should/test/should.test.js +0 -358
  211. data/server/node_modules/node-uuid/test/benchmark.js +0 -27
@@ -5,13 +5,15 @@
5
5
  */
6
6
 
7
7
  var fs = require('fs')
8
- , exec = require('child_process').exec;
8
+ , os = require('os')
9
+ , exec = require('child_process').exec
10
+ , mkdirp = require('mkdirp');
9
11
 
10
12
  /**
11
13
  * Framework version.
12
14
  */
13
15
 
14
- var version = '2.4.6';
16
+ var version = '2.5.5';
15
17
 
16
18
  /**
17
19
  * Add session support.
@@ -25,6 +27,14 @@ var sessions = false;
25
27
 
26
28
  var cssEngine;
27
29
 
30
+ /**
31
+ * End-of-line code.
32
+ */
33
+
34
+ var eol = os.platform
35
+ ? ('win32' == os.platform() ? '\r\n' : '\n')
36
+ : '\n';
37
+
28
38
  /**
29
39
  * Template engine to utilize.
30
40
  */
@@ -42,11 +52,26 @@ var usage = ''
42
52
  + ' Options:\n'
43
53
  + ' -s, --sessions add session support\n'
44
54
  + ' -t, --template <engine> add template <engine> support (jade|ejs). default=jade\n'
45
- + ' -c, --css <engine> add stylesheet <engine> support (less|sass|stylus). default=plain css\n'
55
+ + ' -c, --css <engine> add stylesheet <engine> support (stylus). default=plain css\n'
46
56
  + ' -v, --version output framework version\n'
47
57
  + ' -h, --help output help information\n'
48
58
  ;
49
59
 
60
+ /**
61
+ * Routes index template.
62
+ */
63
+
64
+ var index = [
65
+ ''
66
+ , '/*'
67
+ , ' * GET home page.'
68
+ , ' */'
69
+ , ''
70
+ , 'exports.index = function(req, res){'
71
+ , ' res.render(\'index\', { title: \'Express\' })'
72
+ , '};'
73
+ ].join(eol);
74
+
50
75
  /**
51
76
  * Jade layout template.
52
77
  */
@@ -58,7 +83,7 @@ var jadeLayout = [
58
83
  , ' title= title'
59
84
  , ' link(rel=\'stylesheet\', href=\'/stylesheets/style.css\')'
60
85
  , ' body!= body'
61
- ].join('\n');
86
+ ].join(eol);
62
87
 
63
88
  /**
64
89
  * Jade index template.
@@ -67,7 +92,7 @@ var jadeLayout = [
67
92
  var jadeIndex = [
68
93
  'h1= title'
69
94
  , 'p Welcome to #{title}'
70
- ].join('\n');
95
+ ].join(eol);
71
96
 
72
97
  /**
73
98
  * EJS layout template.
@@ -84,7 +109,7 @@ var ejsLayout = [
84
109
  , ' <%- body %>'
85
110
  , ' </body>'
86
111
  , '</html>'
87
- ].join('\n');
112
+ ].join(eol);
88
113
 
89
114
  /**
90
115
  * EJS index template.
@@ -93,7 +118,7 @@ var ejsLayout = [
93
118
  var ejsIndex = [
94
119
  '<h1><%= title %></h1>'
95
120
  , '<p>Welcome to <%= title %></p>'
96
- ].join('\n');
121
+ ].join(eol);
97
122
 
98
123
  /**
99
124
  * Default css template.
@@ -108,34 +133,7 @@ var css = [
108
133
  , 'a {'
109
134
  , ' color: #00B7FF;'
110
135
  , '}'
111
- ].join('\n');
112
-
113
- /**
114
- * Default less template.
115
- */
116
-
117
- var less = [
118
- 'body {'
119
- , ' padding: 50px;'
120
- , ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;'
121
- , '}'
122
- , ''
123
- , 'a {'
124
- , ' color: #00B7FF;'
125
- , '}'
126
- ].join('\n');
127
-
128
- /**
129
- * Default sass template.
130
- */
131
-
132
- var sass = [
133
- 'body'
134
- , ' :padding 50px'
135
- , ' :font 14px "Lucida Grande", Helvetica, Arial, sans-serif'
136
- , 'a'
137
- , ' :color #00B7FF'
138
- ].join('\n');
136
+ ].join(eol);
139
137
 
140
138
  /**
141
139
  * Default stylus template.
@@ -147,7 +145,7 @@ var stylus = [
147
145
  , ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif'
148
146
  , 'a'
149
147
  , ' color: #00B7FF'
150
- ].join('\n');
148
+ ].join(eol);
151
149
 
152
150
  /**
153
151
  * App template.
@@ -159,7 +157,8 @@ var app = [
159
157
  , ' * Module dependencies.'
160
158
  , ' */'
161
159
  , ''
162
- , 'var express = require(\'express\');'
160
+ , 'var express = require(\'express\')'
161
+ , ' , routes = require(\'./routes\')'
163
162
  , ''
164
163
  , 'var app = module.exports = express.createServer();'
165
164
  , ''
@@ -184,16 +183,12 @@ var app = [
184
183
  , ''
185
184
  , '// Routes'
186
185
  , ''
187
- , 'app.get(\'/\', function(req, res){'
188
- , ' res.render(\'index\', {'
189
- , ' title: \'Express\''
190
- , ' });'
191
- , '});'
186
+ , 'app.get(\'/\', routes.index);'
192
187
  , ''
193
188
  , 'app.listen(3000);'
194
189
  , 'console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);'
195
190
  , ''
196
- ].join('\n');
191
+ ].join(eol);
197
192
 
198
193
  // Parse arguments
199
194
 
@@ -259,7 +254,16 @@ while (args.length) {
259
254
  */
260
255
 
261
256
  function createApplicationAt(path) {
257
+ console.log();
258
+ process.on('exit', function(){
259
+ console.log();
260
+ console.log(' dont forget to install dependencies:');
261
+ console.log(' $ cd %s && npm install', path);
262
+ console.log();
263
+ });
264
+
262
265
  mkdir(path, function(){
266
+ mkdir(path + '/public');
263
267
  mkdir(path + '/public/javascripts');
264
268
  mkdir(path + '/public/images');
265
269
  mkdir(path + '/public/stylesheets', function(){
@@ -267,16 +271,15 @@ function createApplicationAt(path) {
267
271
  case 'stylus':
268
272
  write(path + '/public/stylesheets/style.styl', stylus);
269
273
  break;
270
- case 'less':
271
- write(path + '/public/stylesheets/style.less', less);
272
- break;
273
- case 'sass':
274
- write(path + '/public/stylesheets/style.sass', sass);
275
- break;
276
274
  default:
277
275
  write(path + '/public/stylesheets/style.css', css);
278
276
  }
279
277
  });
278
+
279
+ mkdir(path + '/routes', function(){
280
+ write(path + '/routes/index.js', index);
281
+ });
282
+
280
283
  mkdir(path + '/views', function(){
281
284
  switch (templateEngine) {
282
285
  case 'ejs':
@@ -292,12 +295,8 @@ function createApplicationAt(path) {
292
295
 
293
296
  // CSS Engine support
294
297
  switch (cssEngine) {
295
- case 'sass':
296
- case 'less':
297
- app = app.replace('{css}', '\n app.use(express.compiler({ src: __dirname + \'/public\', enable: [\'' + cssEngine + '\'] }));');
298
- break;
299
298
  case 'stylus':
300
- app = app.replace('{css}', '\n app.use(require(\'stylus\').middleware({ src: __dirname + \'/public\' }));');
299
+ app = app.replace('{css}', eol + ' app.use(require(\'stylus\').middleware({ src: __dirname + \'/public\' }));');
301
300
  break;
302
301
  default:
303
302
  app = app.replace('{css}', '');
@@ -305,22 +304,22 @@ function createApplicationAt(path) {
305
304
 
306
305
  // Session support
307
306
  app = app.replace('{sess}', sessions
308
- ? '\n app.use(express.cookieParser());\n app.use(express.session({ secret: \'your secret here\' }));'
307
+ ? eol + ' app.use(express.cookieParser());' + eol + ' app.use(express.session({ secret: \'your secret here\' }));'
309
308
  : '');
310
309
 
311
310
  // Template support
312
311
  app = app.replace(':TEMPLATE', templateEngine);
313
312
 
314
313
  // package.json
315
- var json = '{\n';
316
- json += ' "name": "application-name"\n';
317
- json += ' , "version": "0.0.1"\n';
318
- json += ' , "private": true\n';
319
- json += ' , "dependencies": {\n';
320
- json += ' "express": "' + version + '"\n';
321
- if (cssEngine) json += ' , "' + cssEngine + '": ">= 0.0.1"\n';
322
- if (templateEngine) json += ' , "' + templateEngine + '": ">= 0.0.1"\n';
323
- json += ' }\n';
314
+ var json = '{' + eol;
315
+ json += ' "name": "application-name"' + eol;
316
+ json += ' , "version": "0.0.1"' + eol;
317
+ json += ' , "private": true' + eol;
318
+ json += ' , "dependencies": {' + eol;
319
+ json += ' "express": "' + version + '"' + eol;
320
+ if (cssEngine) json += ' , "' + cssEngine + '": ">= 0.0.1"' + eol;
321
+ if (templateEngine) json += ' , "' + templateEngine + '": ">= 0.0.1"' + eol;
322
+ json += ' }' + eol;
324
323
  json += '}';
325
324
 
326
325
 
@@ -398,9 +397,9 @@ function prompt(msg, fn) {
398
397
  */
399
398
 
400
399
  function mkdir(path, fn) {
401
- exec('mkdir -p ' + path, function(err){
400
+ mkdirp(path, 0755, function(err){
402
401
  if (err) throw err;
403
- console.log(' \x1b[36mcreate\x1b[0m : ' + path);
402
+ console.log(' \033[36mcreate\033[0m : ' + path);
404
403
  fn && fn();
405
404
  });
406
405
  }
@@ -28,7 +28,7 @@ var exports = module.exports = connect.middleware;
28
28
  * Framework version.
29
29
  */
30
30
 
31
- exports.version = '2.4.6';
31
+ exports.version = '2.5.6';
32
32
 
33
33
  /**
34
34
  * Shortcut for `new Server(...)`.
@@ -12,6 +12,7 @@
12
12
  var http = require('http')
13
13
  , req = http.IncomingMessage.prototype
14
14
  , utils = require('./utils')
15
+ , parse = require('url').parse
15
16
  , mime = require('mime');
16
17
 
17
18
  /**
@@ -87,6 +88,17 @@ req.get = function(field, param){
87
88
  return RegExp.$1 || RegExp.$2;
88
89
  };
89
90
 
91
+ /**
92
+ * Short-hand for `require('url').parse(req.url).pathname`.
93
+ *
94
+ * @return {String}
95
+ * @api public
96
+ */
97
+
98
+ req.__defineGetter__('path', function(){
99
+ return parse(this.url).pathname;
100
+ });
101
+
90
102
  /**
91
103
  * Check if the _Accept_ header is present, and includes the given `type`.
92
104
  *
@@ -217,10 +229,10 @@ req.flash = function(type, msg){
217
229
  , args = arguments
218
230
  , formatters = this.app.flashFormatters || {};
219
231
  formatters.__proto__ = flashFormatters;
220
- msg = utils.miniMarkdown(utils.escape(msg));
232
+ msg = utils.miniMarkdown(msg);
221
233
  msg = msg.replace(/%([a-zA-Z])/g, function(_, format){
222
234
  var formatter = formatters[format];
223
- if (formatter) return formatter(args[i++]);
235
+ if (formatter) return formatter(utils.escape(args[i++]));
224
236
  });
225
237
  return (msgs[type] = msgs[type] || []).push(msg);
226
238
  } else if (type) {
@@ -280,16 +292,18 @@ req.flash = function(type, msg){
280
292
  req.is = function(type){
281
293
  var fn = this.app.is(type);
282
294
  if (fn) return fn(this);
283
- var contentType = this.headers['content-type'];
284
- if (!contentType) return;
295
+ var ct = this.headers['content-type'];
296
+ if (!ct) return false;
297
+ ct = ct.split(';')[0];
285
298
  if (!~type.indexOf('/')) type = mime.lookup(type);
286
299
  if (~type.indexOf('*')) {
287
- type = type.split('/')
288
- contentType = contentType.split('/');
289
- if ('*' == type[0] && type[1] == contentType[1]) return true;
290
- if ('*' == type[1] && type[0] == contentType[0]) return true;
300
+ type = type.split('/');
301
+ ct = ct.split('/');
302
+ if ('*' == type[0] && type[1] == ct[1]) return true;
303
+ if ('*' == type[1] && type[0] == ct[0]) return true;
304
+ return false;
291
305
  }
292
- return !! ~contentType.indexOf(type);
306
+ return !! ~ct.indexOf(type);
293
307
  };
294
308
 
295
309
  // Callback for isXMLHttpRequest / xhr
@@ -105,7 +105,7 @@ res.send = function(body, headers, status){
105
105
 
106
106
  // respond
107
107
  this.statusCode = status;
108
- this.end('HEAD' == this.req.method ? undefined : body);
108
+ this.end('HEAD' == this.req.method ? null : body);
109
109
  return this;
110
110
  };
111
111
 
@@ -376,6 +376,7 @@ res.redirect = function(url, status){
376
376
  , req = this.req
377
377
  , base = app.set('basepath') || app.route
378
378
  , status = status || 302
379
+ , head = 'HEAD' == req.method
379
380
  , body;
380
381
 
381
382
  // Setup redirect map
@@ -418,7 +419,7 @@ res.redirect = function(url, status){
418
419
  // Respond
419
420
  this.statusCode = status;
420
421
  this.header('Location', url);
421
- this.end(body);
422
+ this.end(head ? null : body);
422
423
  };
423
424
 
424
425
  /**
@@ -5,6 +5,19 @@
5
5
  * MIT Licensed
6
6
  */
7
7
 
8
+ /**
9
+ * Check if `path` looks absolute.
10
+ *
11
+ * @param {String} path
12
+ * @return {Boolean}
13
+ * @api private
14
+ */
15
+
16
+ exports.isAbsolute = function(path){
17
+ if ('/' == path[0]) return true;
18
+ if (':' == path[1] && '\\' == path[2]) return true;
19
+ };
20
+
8
21
  /**
9
22
  * Merge object `b` with `a` giving precedence to
10
23
  * values in object `a`.
@@ -10,6 +10,7 @@
10
10
  */
11
11
 
12
12
  var path = require('path')
13
+ , utils = require('../utils')
13
14
  , extname = path.extname
14
15
  , dirname = path.dirname
15
16
  , basename = path.basename
@@ -99,7 +100,7 @@ View.prototype.resolvePath = function(){
99
100
  // Implicit engine
100
101
  if (!~this.basename.indexOf('.')) path += this.extension;
101
102
  // Absolute
102
- if ('/' == path[0]) return path;
103
+ if (utils.isAbsolute(path)) return path;
103
104
  // Relative to parent
104
105
  if (this.relative && this.parent) return this.parent.dirname + '/' + path;
105
106
  // Relative to root
@@ -47,7 +47,10 @@ exports.register = View.register;
47
47
  */
48
48
 
49
49
  exports.compile = function(view, cache, cid, options){
50
- if (cache && cid && cache[cid]) return cache[cid];
50
+ if (cache && cid && cache[cid]){
51
+ options.filename = cache[cid].path;
52
+ return cache[cid];
53
+ }
51
54
 
52
55
  // lookup
53
56
  view = exports.lookup(view, options);
@@ -58,13 +61,13 @@ exports.compile = function(view, cache, cid, options){
58
61
  var err = new Error('failed to locate view "' + view.original.view + '"');
59
62
  err.view = view.original;
60
63
  throw err;
61
- }
64
+ }
62
65
 
63
66
  // compile
64
67
  options.filename = view.path;
65
68
  view.fn = view.templateEngine.compile(view.contents, options);
66
69
  cache[cid] = view;
67
-
70
+
68
71
  return view;
69
72
  };
70
73
 
@@ -81,11 +84,11 @@ exports.compile = function(view, cache, cid, options){
81
84
  *
82
85
  * Lookup:
83
86
  *
84
- * - partial `_<name>`
85
- * - any `<name>/index`
86
- * - non-layout `../<name>/index`
87
- * - any `<root>/<name>`
88
- * - partial `<root>/_<name>`
87
+ * - partial `_<name>`
88
+ * - any `<name>/index`
89
+ * - non-layout `../<name>/index`
90
+ * - any `<root>/<name>`
91
+ * - partial `<root>/_<name>`
89
92
  *
90
93
  * @param {String} view
91
94
  * @param {Object} options
@@ -161,7 +164,7 @@ function renderPartial(res, view, options, parentLocals, parent){
161
164
 
162
165
  // Inherit locals from parent
163
166
  union(options, parentLocals);
164
-
167
+
165
168
  // Merge locals
166
169
  if (locals) merge(options, locals);
167
170
 
@@ -202,7 +205,7 @@ function renderPartial(res, view, options, parentLocals, parent){
202
205
  options.lastInCollection = i == len - 1;
203
206
  object = val;
204
207
  buf += render();
205
- }
208
+ }
206
209
  } else {
207
210
  keys = Object.keys(collection);
208
211
  len = keys.length;
@@ -227,20 +230,20 @@ function renderPartial(res, view, options, parentLocals, parent){
227
230
  };
228
231
 
229
232
  /**
230
- * Render `view` partial with the given `options`. Optionally a
233
+ * Render `view` partial with the given `options`. Optionally a
231
234
  * callback `fn(err, str)` may be passed instead of writing to
232
235
  * the socket.
233
236
  *
234
237
  * Options:
235
238
  *
236
- * - `object` Single object with name derived from the view (unless `as` is present)
239
+ * - `object` Single object with name derived from the view (unless `as` is present)
237
240
  *
238
241
  * - `as` Variable name for each `collection` value, defaults to the view name.
239
242
  * * as: 'something' will add the `something` local variable
240
243
  * * as: this will use the collection value as the template context
241
244
  * * as: global will merge the collection value's properties with `locals`
242
245
  *
243
- * - `collection` Array of objects, the name is derived from the view name itself.
246
+ * - `collection` Array of objects, the name is derived from the view name itself.
244
247
  * For example _video.html_ will have a object _video_ available to it.
245
248
  *
246
249
  * @param {String} view
@@ -294,7 +297,7 @@ res.partial = function(view, options, fn){
294
297
  * automatically, however otherwise a response of _200_ and _text/html_ is given.
295
298
  *
296
299
  * Options:
297
- *
300
+ *
298
301
  * - `scope` Template evaluation context (the value of `this`)
299
302
  * - `debug` Output debugging information
300
303
  * - `status` Response status code
@@ -430,7 +433,7 @@ res._render = function(view, opts, fn, parent, sub){
430
433
  // partial return
431
434
  } else if (partial) {
432
435
  return str;
433
- // render complete, and
436
+ // render complete, and
434
437
  // callback given
435
438
  } else if (fn) {
436
439
  fn(null, str);
@@ -454,4 +457,4 @@ function hintAtViewPaths(view, options) {
454
457
  console.error(' - %s', path);
455
458
  });
456
459
  console.error();
457
- }
460
+ }
@@ -26,7 +26,7 @@ exports = module.exports = createServer;
26
26
  * Framework version.
27
27
  */
28
28
 
29
- exports.version = '1.7.1';
29
+ exports.version = '1.8.5';
30
30
 
31
31
  /**
32
32
  * Initialize a new `connect.HTTPServer` with the middleware
@@ -163,10 +163,12 @@ Server.prototype.handle = function(req, res, out) {
163
163
 
164
164
  res.statusCode = 500;
165
165
  res.setHeader('Content-Type', 'text/plain');
166
+ if ('HEAD' == req.method) return res.end();
166
167
  res.end(msg);
167
168
  } else {
168
169
  res.statusCode = 404;
169
170
  res.setHeader('Content-Type', 'text/plain');
171
+ if ('HEAD' == req.method) return res.end();
170
172
  res.end('Cannot ' + req.method + ' ' + req.url);
171
173
  }
172
174
  return;