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
data/bin/vulcan CHANGED
@@ -1,9 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ $:.unshift File.expand_path("../../lib", __FILE__)
4
+
3
5
  require "net/http/post/multipart"
4
6
  require "tmpdir"
5
7
  require "uri"
6
- require File.expand_path("#{File.dirname(__FILE__)}/../lib/vulcan/cli")
8
+ require "vulcan/cli"
7
9
 
8
10
  Vulcan::CLI.start
9
11
 
data/lib/vulcan/cli.rb CHANGED
@@ -62,15 +62,20 @@ if no COMMAND is specified, a sensible default will be chosen for you
62
62
 
63
63
  puts ">> Downloading build artifacts to: #{output}"
64
64
 
65
+ output_url = "#{server}/output/#{response["X-Make-Id"]}"
66
+ puts " (available at #{output_url})"
67
+
65
68
  File.open(output, "w") do |output|
66
69
  begin
67
- output.print RestClient.get("#{server}/output/#{response["X-Make-Id"]}")
70
+ output.print RestClient.get(output_url)
68
71
  rescue Exception => ex
69
72
  puts ex.inspect
70
73
  end
71
74
  end
72
75
  end
73
76
  end
77
+ rescue Interrupt
78
+ error "Aborted by user"
74
79
  rescue Errno::EPIPE
75
80
  error "Could not connect to build server: #{server}"
76
81
  end
@@ -111,17 +116,20 @@ update the build server
111
116
  error "invalid api key detected, try running `heroku auth:token`" if api_key =~ / /
112
117
 
113
118
  system "git init"
114
- system "git remote add heroku git@heroku.com:#{config[:app]}.git"
119
+ system "git remote add heroku git@#{heroku_git_domain}:#{config[:app]}.git"
115
120
  FileUtils.cp_r "#{server_path}/.", "."
116
121
  File.open(".gitignore", "w") do |file|
117
122
  file.puts ".env"
118
123
  file.puts "node_modules"
119
124
  end
125
+
126
+ %x{ env BUNDLE_GEMFILE= heroku config:remove BUILDPACK_URL 2>&1 }
127
+
120
128
  system "git add . >/dev/null"
121
129
  system "git commit -m commit >/dev/null"
122
130
  system "git push heroku -f master"
123
131
 
124
- %x{ env BUNDLE_GEMFILE= heroku config:add SECRET=#{config[:secret]} SPAWN_ENV=heroku HEROKU_APP=#{config[:app]} HEROKU_API_KEY=#{api_key} 2>&1 }
132
+ %x{ env BUNDLE_GEMFILE= heroku config:add SECRET=#{config[:secret]} SPAWN_ENV=heroku HEROKU_APP=#{config[:app]} HEROKU_API_KEY=#{api_key} NODE_PATH=lib 2>&1 }
125
133
  %x{ env BUNDLE_GEMFILE= heroku addons:add cloudant:oxygen }
126
134
  end
127
135
  end
@@ -158,5 +166,16 @@ private
158
166
  def server_path
159
167
  File.expand_path("../../../server", __FILE__)
160
168
  end
169
+
170
+ #
171
+ # heroku_git_domain checks to see if the heroku-accounts plugin is present,
172
+ # and if so, it will set the domain to the one that matches the credentials
173
+ # for the currently set account
174
+ #
175
+ def heroku_git_domain
176
+ suffix = %x{ git config heroku.account }
177
+ suffix = "com" if suffix.nil? or suffix.strip == ""
178
+ "heroku.#{suffix.strip}"
179
+ end
161
180
 
162
181
  end
@@ -1,5 +1,5 @@
1
1
  module Vulcan
2
2
 
3
- VERSION = "0.3.0"
3
+ VERSION = "0.4.0"
4
4
 
5
5
  end
data/server/bin/make CHANGED
@@ -35,12 +35,10 @@ Dir.mktmpdir do |dir|
35
35
  %x{ tar czf #{dir}/output.tgz * 2>&1 }
36
36
  end
37
37
 
38
- retries = 0
39
38
  begin
40
39
  doc.put_attachment("output", File.open("#{dir}/output.tgz"))
41
40
  rescue RestClient::Conflict
42
- retries += 1
43
- retry if retries < 3
41
+ # temporarily work around problem with bigcouch
44
42
  end
45
43
 
46
44
  end
@@ -62,7 +62,8 @@ var Spawner = function(env) {
62
62
  restler.post('https://api.heroku.com/apps/' + app + '/ps', {
63
63
  headers: {
64
64
  'Authorization': auth,
65
- 'Accept': 'application/json'
65
+ 'Accept': 'application/json',
66
+ 'User-Agent': 'heroku-gem/2.5'
66
67
  },
67
68
  data: {
68
69
  attach: true,
@@ -72,10 +73,14 @@ var Spawner = function(env) {
72
73
  }).on('success', function(data) {
73
74
 
74
75
  var url = require('url').parse(data.rendezvous_url);
75
- var rendezvous = new net.Socket();
76
76
 
77
- rendezvous.connect(url.port, url.hostname, function() {
78
- rendezvous.write(url.pathname.substring(1) + '\n');
77
+ var rendezvous = tls.connect(url.port, url.hostname, function() {
78
+ if (rendezvous.authorized) {
79
+ console.log('valid socket');
80
+ rendezvous.write(url.pathname.substring(1) + '\n');
81
+ } else {
82
+ console.log('invalid socket');
83
+ }
79
84
  });
80
85
 
81
86
  rendezvous.on('data', function(data) {
@@ -20,6 +20,15 @@ a big variety of clients and is considered production-ready.
20
20
 
21
21
  ## Changelog
22
22
 
23
+ ### v1.0.5
24
+
25
+ * Support filename="" in multipart parts
26
+ * Explain unexpected end() errors in parser better
27
+
28
+ ### v1.0.4
29
+
30
+ * Detect a good default tmp directory regardless of plattform. (#88)
31
+
23
32
  ### v1.0.3
24
33
 
25
34
  * Fix problems with utf8 characters (#84) / semicolons in filenames (#58)
@@ -142,9 +151,11 @@ Creates a new incoming form.
142
151
 
143
152
  The encoding to use for incoming form fields.
144
153
 
145
- #### incomingForm.uploadDir = '/tmp'
154
+ #### incomingForm.uploadDir = process.env.TMP || '/tmp' || process.cwd()
146
155
 
147
- The directory for placing file uploads in. You can later on move them using `fs.rename()`.
156
+ The directory for placing file uploads in. You can later on move them using
157
+ `fs.rename()`. The default directoy is picked at module load time depending on
158
+ the first existing directory from those listed above.
148
159
 
149
160
  #### incomingForm.keepExtensions = false
150
161
 
@@ -1,5 +1,6 @@
1
1
  if (global.GENTLY) require = GENTLY.hijack(require);
2
2
 
3
+ var fs = require('fs');
3
4
  var util = require('./util'),
4
5
  path = require('path'),
5
6
  File = require('./file'),
@@ -17,7 +18,7 @@ function IncomingForm() {
17
18
 
18
19
  this.maxFieldsSize = 2 * 1024 * 1024;
19
20
  this.keepExtensions = false;
20
- this.uploadDir = '/tmp';
21
+ this.uploadDir = IncomingForm.UPLOAD_DIR;
21
22
  this.encoding = 'utf-8';
22
23
  this.headers = null;
23
24
  this.type = null;
@@ -32,6 +33,20 @@ function IncomingForm() {
32
33
  util.inherits(IncomingForm, EventEmitter);
33
34
  exports.IncomingForm = IncomingForm;
34
35
 
36
+ IncomingForm.UPLOAD_DIR = (function() {
37
+ var dirs = [process.env.TMP, '/tmp', process.cwd()];
38
+ for (var i = 0; i < dirs.length; i++) {
39
+ var dir = dirs[i];
40
+ var isDirectory = false;
41
+
42
+ try {
43
+ isDirectory = fs.statSync(dir).isDirectory();
44
+ } catch (e) {}
45
+
46
+ if (isDirectory) return dir;
47
+ }
48
+ })();
49
+
35
50
  IncomingForm.prototype.parse = function(req, cb) {
36
51
  this.pause = function() {
37
52
  try {
@@ -147,7 +162,7 @@ IncomingForm.prototype.onPart = function(part) {
147
162
  IncomingForm.prototype.handlePart = function(part) {
148
163
  var self = this;
149
164
 
150
- if (!part.filename) {
165
+ if (part.filename === undefined) {
151
166
  var value = ''
152
167
  , decoder = new StringDecoder(this.encoding);
153
168
 
@@ -278,10 +293,7 @@ IncomingForm.prototype._initMultipart = function(boundary) {
278
293
  part.name = m[1];
279
294
  }
280
295
 
281
- var filename = self._fileName(headerValue);
282
- if (filename) {
283
- part.filename = filename;
284
- }
296
+ part.filename = self._fileName(headerValue);
285
297
  } else if (headerField == 'content-type') {
286
298
  part.mime = headerValue;
287
299
  }
@@ -311,7 +323,7 @@ IncomingForm.prototype._initMultipart = function(boundary) {
311
323
  };
312
324
 
313
325
  IncomingForm.prototype._fileName = function(headerValue) {
314
- var m = headerValue.match(/filename="(.+?)"($|; )/i)
326
+ var m = headerValue.match(/filename="(.*?)"($|; )/i)
315
327
  if (!m) return;
316
328
 
317
329
  var filename = m[1].substr(m[1].lastIndexOf('\\') + 1);
@@ -49,6 +49,13 @@ function MultipartParser() {
49
49
  };
50
50
  exports.MultipartParser = MultipartParser;
51
51
 
52
+ MultipartParser.stateToString = function(stateNumber) {
53
+ for (var state in S) {
54
+ var number = S[state];
55
+ if (number === stateNumber) return state;
56
+ }
57
+ };
58
+
52
59
  MultipartParser.prototype.initWithBoundary = function(str) {
53
60
  this.boundary = new Buffer(str.length+4);
54
61
  this.boundary.write('\r\n--', 'ascii', 0);
@@ -296,6 +303,10 @@ MultipartParser.prototype.write = function(buffer) {
296
303
 
297
304
  MultipartParser.prototype.end = function() {
298
305
  if (this.state != S.END) {
299
- return new Error('MultipartParser.end(): stream ended unexpectedly');
306
+ return new Error('MultipartParser.end(): stream ended unexpectedly: ' + this.explain());
300
307
  }
301
308
  };
309
+
310
+ MultipartParser.prototype.explain = function() {
311
+ return 'state = ' + MultipartParser.stateToString(this.state);
312
+ };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "formidable",
3
- "version": "1.0.3",
3
+ "version": "1.0.6",
4
4
  "dependencies": {},
5
5
  "devDependencies": {
6
6
  "gently": "0.8.0",
@@ -0,0 +1,13 @@
1
+ POST /upload HTTP/1.1
2
+ Host: localhost:8080
3
+ Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytyE4wkKlZ5CQJVTG
4
+ Content-Length: 1000
5
+
6
+ ------WebKitFormBoundarytyE4wkKlZ5CQJVTG
7
+ Content-Disposition: form-data; name="upload"; filename=""
8
+ Content-Type: text/plain
9
+
10
+ I am a plain text file
11
+
12
+ ------WebKitFormBoundarytyE4wkKlZ5CQJVTG--
13
+
@@ -24,13 +24,3 @@ Content-Type: text/plain
24
24
  I am a text file with a funky name!
25
25
 
26
26
  ------WebKitFormBoundarytyE4wkKlZ5CQJVTG--
27
- GET /favicon.ico HTTP/1.1
28
- Host: localhost:8080
29
- Connection: keep-alive
30
- Accept: */*
31
- User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1
32
- Accept-Encoding: gzip,deflate,sdch
33
- Accept-Language: en-US,en;q=0.8
34
- Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
35
- Cookie: jqCookieJar_tablesorter=%7B%22showListTable%22%3A%5B%5B5%2C1%5D%2C%5B1%2C0%5D%5D%7D
36
-
@@ -22,12 +22,3 @@ Content-Type: text/plain
22
22
 
23
23
 
24
24
  ------WebKitFormBoundaryEvqBNplR3ByrwQPa--
25
- GET /favicon.ico HTTP/1.1
26
- Host: 192.168.56.1:8080
27
- Connection: keep-alive
28
- Accept: */*
29
- User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30
30
- Accept-Encoding: gzip,deflate,sdch
31
- Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
32
- Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
33
-
@@ -0,0 +1,3 @@
1
+ module.exports['generic.http'] = [
2
+ {type: 'file', name: 'upload', filename: '', fixture: 'plain.txt'},
3
+ ];
@@ -40,7 +40,7 @@ test(function parserError() {
40
40
 
41
41
  test(function end() {
42
42
  (function testError() {
43
- assert.equal(parser.end().message, 'MultipartParser.end(): stream ended unexpectedly');
43
+ assert.equal(parser.end().message, 'MultipartParser.end(): stream ended unexpectedly: ' + parser.explain());
44
44
  })();
45
45
 
46
46
  (function testRegular() {
@@ -1,5 +1,4 @@
1
1
  var path = require('path'),
2
- sys = require("sys"),
3
2
  http = require("http"),
4
3
  https = require("https"),
5
4
  events = require('events'),
@@ -5,9 +5,9 @@
5
5
  "keywords" : ["couchdb", "database", "couch"],
6
6
  "author" : "Alexis Sellier <self@cloudhead.net>",
7
7
  "contributors" : [],
8
- "dependencies" : { "vargs": ">=0.1.0", "vows": ">=0.5.4" },
9
- "devDependencies" : { "async": "~0.1.x", "request": "~2.1.1" },
10
- "version" : "0.5.7",
8
+ "dependencies" : { "vargs": ">=0.1.0" },
9
+ "devDependencies" : { "async": "0.1.x", "request": "2.2.x", "vows": "0.6.x" },
10
+ "version" : "0.5.8",
11
11
  "main" : "./lib/cradle",
12
12
  "directories" : { "test": "./test" },
13
13
  "engines" : { "node": ">=0.3.6" }
@@ -1,5 +1,4 @@
1
1
  var path = require('path'),
2
- sys = require('sys'),
3
2
  assert = require('assert'),
4
3
  events = require('events'),
5
4
  vows = require('vows');
@@ -19,7 +18,7 @@ vows.describe('cradle/Cache').addBatch({
19
18
 
20
19
  'should be able to store 8 keys': function (topic) {
21
20
  for (var i = 0; i < 8; i++) { topic.save(i.toString(), {}) }
22
- assert.length (Object.keys(topic.store), 8);
21
+ assert.lengthOf (Object.keys(topic.store), 8);
23
22
  },
24
23
  'if more than 8 keys are set': {
25
24
  topic: function (cache) {
@@ -30,7 +29,7 @@ vows.describe('cradle/Cache').addBatch({
30
29
  });
31
30
  },
32
31
  'there should still be 8 keys in the store': function (cache) {
33
- assert.length (Object.keys(cache.store), 8);
32
+ assert.lengthOf (Object.keys(cache.store), 8);
34
33
  }
35
34
  },
36
35
  'if an extra 8 keys are set': {
@@ -67,10 +66,10 @@ vows.describe('cradle/Cache').addBatch({
67
66
  }, 10);
68
67
  },
69
68
  'it should have the 3 accessed ones, with the 5 new ones': function (cache) {
70
- assert.length (Object.keys(cache.store), 8);
71
- assert.isTrue (cache.has('2'));
72
- assert.isTrue (cache.has('5'));
73
- assert.isTrue (cache.has('1'));
69
+ assert.lengthOf (Object.keys(cache.store), 8);
70
+ assert.isTrue (cache.has('2'));
71
+ assert.isTrue (cache.has('5'));
72
+ assert.isTrue (cache.has('1'));
74
73
  for (var i = 8; i < 13; i++) { cache.has(i.toString()) }
75
74
  }
76
75
  }
@@ -1,5 +1,4 @@
1
1
  var path = require('path'),
2
- sys = require('sys'),
3
2
  assert = require('assert'),
4
3
  events = require('events'),
5
4
  http = require('http'),
@@ -278,7 +277,7 @@ vows.describe("cradle").addBatch(seed.requireSeed()).addBatch({
278
277
  "returns a 200": status(200),
279
278
  "returns an array of UUIDs": function (uuids) {
280
279
  assert.isArray(uuids);
281
- assert.length(uuids, 42);
280
+ assert.lengthOf(uuids, 42);
282
281
  }
283
282
  },
284
283
  "without count": {
@@ -287,7 +286,7 @@ vows.describe("cradle").addBatch(seed.requireSeed()).addBatch({
287
286
  "returns a 200": status(200),
288
287
  "returns an array of UUIDs": function (uuids) {
289
288
  assert.isArray(uuids);
290
- assert.length(uuids, 1);
289
+ assert.lengthOf(uuids, 1);
291
290
  }
292
291
  }
293
292
  },
@@ -497,7 +496,7 @@ vows.describe("cradle").addBatch(seed.requireSeed()).addBatch({
497
496
  },
498
497
  "returns an iterable object with key/val pairs": function (res) {
499
498
  assert.isArray(res);
500
- assert.length(res, 2);
499
+ assert.lengthOf(res, 2);
501
500
  res.forEach(function (k, v) {
502
501
  assert.isObject(v);
503
502
  assert.isString(k);
@@ -528,7 +527,7 @@ vows.describe("cradle").addBatch(seed.requireSeed()).addBatch({
528
527
  },
529
528
  "returns an iterable object with key/val pairs": function (res) {
530
529
  assert.isArray(res);
531
- assert.length(res, 2);
530
+ assert.lengthOf(res, 2);
532
531
  res.forEach(function (k, v) {
533
532
  assert.isObject(v);
534
533
  assert.isString(k);
@@ -1,5 +1,4 @@
1
1
  var path = require('path'),
2
- sys = require('sys'),
3
2
  assert = require('assert'),
4
3
  events = require('events'),
5
4
  http = require('http'),
@@ -15,7 +14,7 @@ vows.describe('cradle/Response').addBatch({
15
14
  topic: new(cradle.Response)(document),
16
15
 
17
16
  'should only have the original keys': function (topic) {
18
- assert.length (Object.keys(topic), 4);
17
+ assert.lengthOf (Object.keys(topic), 4);
19
18
  assert.equal (topic.name, 'buzz');
20
19
  assert.equal (topic.age, 99);
21
20
  assert.deepEqual (document, topic);
@@ -29,15 +28,15 @@ vows.describe('cradle/Response').addBatch({
29
28
  assert.deepEqual (topic.json, document);
30
29
  assert.isUndefined (topic.json.json);
31
30
  assert.isUndefined (topic.headers);
32
- assert.length (Object.keys(topic.json), 4);
31
+ assert.lengthOf (Object.keys(topic.json), 4);
33
32
  },
34
33
  'when using a `for .. in` loop, should only return the original keys': function (topic) {
35
34
  var keys = [];
36
35
  for (var k in topic) { keys.push(k) }
37
36
 
38
- assert.length (keys, 4);
39
- assert.include (keys, 'name');
40
- assert.include (keys, 'age');
37
+ assert.lengthOf (keys, 4);
38
+ assert.include (keys, 'name');
39
+ assert.include (keys, 'age');
41
40
  },
42
41
  'should stringify': function (topic) {
43
42
  var expected = JSON.stringify(document);
@@ -1,4 +1,55 @@
1
1
 
2
+ 2.5.6 / 2012-01-13
3
+ ==================
4
+
5
+ * Updated hamljs dev dep. Closes #953
6
+
7
+ 2.5.5 / 2012-01-08
8
+ ==================
9
+
10
+ * Fixed: set `filename` on cached templates [matthewleon]
11
+
12
+ 2.5.4 / 2012-01-02
13
+ ==================
14
+
15
+ * Fixed `express(1)` eol on 0.4.x. Closes #947
16
+
17
+ 2.5.3 / 2011-12-30
18
+ ==================
19
+
20
+ * Fixed `req.is()` when a charset is present
21
+
22
+ 2.5.2 / 2011-12-10
23
+ ==================
24
+
25
+ * Fixed: express(1) LF -> CRLF for windows
26
+
27
+ 2.5.1 / 2011-11-17
28
+ ==================
29
+
30
+ * Changed: updated connect to 1.8.x
31
+ * Removed sass.js support from express(1)
32
+
33
+ 2.5.0 / 2011-10-24
34
+ ==================
35
+
36
+ * Added ./routes dir for generated app by default
37
+ * Added npm install reminder to express(1) app gen
38
+ * Added 0.5.x support
39
+ * Removed `make test-cov` since it wont work with node 0.5.x
40
+ * Fixed express(1) public dir for windows. Closes #866
41
+
42
+ 2.4.7 / 2011-10-05
43
+ ==================
44
+
45
+ * Added mkdirp to express(1). Closes #795
46
+ * Added simple _json-config_ example
47
+ * Added shorthand for the parsed request's pathname via `req.path`
48
+ * Changed connect dep to 1.7.x to fix npm issue...
49
+ * Fixed `res.redirect()` __HEAD__ support. [reported by xerox]
50
+ * Fixed `req.flash()`, only escape args
51
+ * Fixed absolute path checking on windows. Closes #829 [reported by andrewpmckenzie]
52
+
2
53
  2.4.6 / 2011-08-22
3
54
  ==================
4
55
 
@@ -9,7 +60,8 @@
9
60
 
10
61
  * Added support for routes to handle errors. Closes #809
11
62
  * Added `app.routes.all()`. Closes #803
12
- * Added "basepath" setting to work in conjunction with reverse proxies etc. * Refactored `Route` to use a single array of callbacks
63
+ * Added "basepath" setting to work in conjunction with reverse proxies etc.
64
+ * Refactored `Route` to use a single array of callbacks
13
65
  * Added support for multiple callbacks for `app.param()`. Closes #801
14
66
  Closes #805
15
67
  * Changed: removed .call(self) for route callbacks
@@ -1,16 +1,10 @@
1
1
 
2
2
  DOCS = $(shell find docs/*.md)
3
- HTMLDOCS =$(DOCS:.md=.html)
3
+ HTMLDOCS = $(DOCS:.md=.html)
4
4
  TESTS = $(shell find test/*.test.js)
5
5
 
6
6
  test:
7
- @NODE_ENV=test ./node_modules/.bin/expresso \
8
- -I lib \
9
- $(TESTFLAGS) \
10
- $(TESTS)
11
-
12
- test-cov:
13
- @TESTFLAGS=--cov $(MAKE) test
7
+ @NODE_ENV=test ./node_modules/.bin/expresso $(TESTS)
14
8
 
15
9
  docs: $(HTMLDOCS)
16
10
  @ echo "... generating TOC"
@@ -32,4 +26,4 @@ site:
32
26
  docclean:
33
27
  rm -f docs/*.{1,html}
34
28
 
35
- .PHONY: site test test-cov docs docclean
29
+ .PHONY: site test docs docclean
@@ -95,7 +95,9 @@ The following are the major contributors of Express (in no specific order).
95
95
 
96
96
  Express 1.x is compatible with node 0.2.x and connect < 1.0.
97
97
 
98
- Express 2.x is compatible with node 0.4.x and connect 1.x
98
+ Express 2.x is compatible with node 0.4.x or 0.6.x, and connect 1.x
99
+
100
+ Express 3.x (master) will be compatible with node 0.6.x and connect 2.x
99
101
 
100
102
  ## Viewing Examples
101
103