bpm 1.0.0.beta.8 → 1.0.0.beta.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (181) hide show
  1. data/.gitignore +1 -0
  2. data/CHANGELOG.md +9 -0
  3. data/bpm.gemspec +2 -7
  4. data/lib/bpm/pipeline/generated_asset.rb +19 -21
  5. data/lib/bpm/pipeline/plugin_context.rb +7 -7
  6. data/lib/bpm/pipeline/plugin_processor.rb +11 -20
  7. data/lib/bpm/pipeline/transport_processor.rb +8 -13
  8. data/lib/bpm/pipeline.rb +47 -42
  9. data/lib/bpm/project_generator.rb +2 -2
  10. data/lib/bpm/version.rb +1 -1
  11. data/lib/bpm.rb +0 -3
  12. data/spec/cli/init_spec.rb +48 -48
  13. data/spec/cli/rebuild_spec.rb +30 -30
  14. data/spec/fixtures/projects/init_app/assets/bpm_libs.js +1 -1
  15. data/spec/fixtures/projects/init_app/assets/bpm_styles.css +1 -1
  16. data/spec/fixtures/projects/init_default/assets/bpm_libs.js +1 -1
  17. data/spec/fixtures/projects/init_default/assets/bpm_styles.css +1 -1
  18. data/spec/plugins/minifier_spec.rb +8 -8
  19. data/templates/project/index.html +0 -2
  20. data/templates/project/{app → lib}/main.js +0 -0
  21. metadata +24 -209
  22. data/.gitmodules +0 -3
  23. data/vendor/sprockets/.gitignore +0 -7
  24. data/vendor/sprockets/.travis.yml +0 -7
  25. data/vendor/sprockets/Gemfile +0 -2
  26. data/vendor/sprockets/LICENSE +0 -20
  27. data/vendor/sprockets/README.md +0 -22
  28. data/vendor/sprockets/Rakefile +0 -8
  29. data/vendor/sprockets/lib/sprockets/asset.rb +0 -198
  30. data/vendor/sprockets/lib/sprockets/asset_attributes.rb +0 -178
  31. data/vendor/sprockets/lib/sprockets/base.rb +0 -134
  32. data/vendor/sprockets/lib/sprockets/bundled_asset.rb +0 -249
  33. data/vendor/sprockets/lib/sprockets/cache/file_store.rb +0 -41
  34. data/vendor/sprockets/lib/sprockets/caching.rb +0 -126
  35. data/vendor/sprockets/lib/sprockets/charset_normalizer.rb +0 -41
  36. data/vendor/sprockets/lib/sprockets/context.rb +0 -221
  37. data/vendor/sprockets/lib/sprockets/digest.rb +0 -73
  38. data/vendor/sprockets/lib/sprockets/directive_processor.rb +0 -397
  39. data/vendor/sprockets/lib/sprockets/eco_template.rb +0 -38
  40. data/vendor/sprockets/lib/sprockets/ejs_template.rb +0 -37
  41. data/vendor/sprockets/lib/sprockets/engines.rb +0 -117
  42. data/vendor/sprockets/lib/sprockets/environment.rb +0 -94
  43. data/vendor/sprockets/lib/sprockets/errors.rb +0 -17
  44. data/vendor/sprockets/lib/sprockets/index.rb +0 -81
  45. data/vendor/sprockets/lib/sprockets/jst_processor.rb +0 -26
  46. data/vendor/sprockets/lib/sprockets/mime.rb +0 -38
  47. data/vendor/sprockets/lib/sprockets/processing.rb +0 -269
  48. data/vendor/sprockets/lib/sprockets/processor.rb +0 -32
  49. data/vendor/sprockets/lib/sprockets/safety_colons.rb +0 -28
  50. data/vendor/sprockets/lib/sprockets/server.rb +0 -270
  51. data/vendor/sprockets/lib/sprockets/static_asset.rb +0 -86
  52. data/vendor/sprockets/lib/sprockets/static_compilation.rb +0 -74
  53. data/vendor/sprockets/lib/sprockets/trail.rb +0 -123
  54. data/vendor/sprockets/lib/sprockets/utils.rb +0 -67
  55. data/vendor/sprockets/lib/sprockets/version.rb +0 -3
  56. data/vendor/sprockets/lib/sprockets.rb +0 -31
  57. data/vendor/sprockets/sprockets.gemspec +0 -30
  58. data/vendor/sprockets/test/fixtures/asset/POW.png +0 -0
  59. data/vendor/sprockets/test/fixtures/asset/application.js +0 -6
  60. data/vendor/sprockets/test/fixtures/asset/bar-utf8.css +0 -2
  61. data/vendor/sprockets/test/fixtures/asset/charset.css +0 -2
  62. data/vendor/sprockets/test/fixtures/asset/circle/a.js +0 -2
  63. data/vendor/sprockets/test/fixtures/asset/circle/b.js +0 -2
  64. data/vendor/sprockets/test/fixtures/asset/circle/c.js +0 -2
  65. data/vendor/sprockets/test/fixtures/asset/compat.js +0 -4
  66. data/vendor/sprockets/test/fixtures/asset/constants.js +0 -2
  67. data/vendor/sprockets/test/fixtures/asset/constants.yml +0 -1
  68. data/vendor/sprockets/test/fixtures/asset/default_mime_type.js +0 -1
  69. data/vendor/sprockets/test/fixtures/asset/filename.js.erb +0 -1
  70. data/vendor/sprockets/test/fixtures/asset/foo-utf8.css +0 -2
  71. data/vendor/sprockets/test/fixtures/asset/included_header.js +0 -4
  72. data/vendor/sprockets/test/fixtures/asset/jquery.tmpl.min.js +0 -1
  73. data/vendor/sprockets/test/fixtures/asset/mismatch.js +0 -1
  74. data/vendor/sprockets/test/fixtures/asset/multiple.js +0 -2
  75. data/vendor/sprockets/test/fixtures/asset/multipleengine.js +0 -1
  76. data/vendor/sprockets/test/fixtures/asset/noengine.js +0 -1
  77. data/vendor/sprockets/test/fixtures/asset/noformat.coffee +0 -1
  78. data/vendor/sprockets/test/fixtures/asset/one.css +0 -1
  79. data/vendor/sprockets/test/fixtures/asset/oneengine.js +0 -1
  80. data/vendor/sprockets/test/fixtures/asset/project.css +0 -1
  81. data/vendor/sprockets/test/fixtures/asset/project.js.erb +0 -4
  82. data/vendor/sprockets/test/fixtures/asset/relative/include.js +0 -4
  83. data/vendor/sprockets/test/fixtures/asset/relative/require.js +0 -1
  84. data/vendor/sprockets/test/fixtures/asset/relative/require_outside_path.js +0 -1
  85. data/vendor/sprockets/test/fixtures/asset/require_self.css +0 -9
  86. data/vendor/sprockets/test/fixtures/asset/require_self_twice.css +0 -8
  87. data/vendor/sprockets/test/fixtures/asset/semicolons/bar.js +0 -1
  88. data/vendor/sprockets/test/fixtures/asset/semicolons/index.js +0 -5
  89. data/vendor/sprockets/test/fixtures/asset/sprite.css.erb +0 -12
  90. data/vendor/sprockets/test/fixtures/asset/tree/all/b/c/d.js +0 -2
  91. data/vendor/sprockets/test/fixtures/asset/tree/all/b/c/e.js +0 -1
  92. data/vendor/sprockets/test/fixtures/asset/tree/all/b/c.js +0 -1
  93. data/vendor/sprockets/test/fixtures/asset/tree/all/b.css +0 -2
  94. data/vendor/sprockets/test/fixtures/asset/tree/all/b.js.erb +0 -1
  95. data/vendor/sprockets/test/fixtures/asset/tree/all/d/c.js.coffee +0 -1
  96. data/vendor/sprockets/test/fixtures/asset/tree/all/d/e.js +0 -1
  97. data/vendor/sprockets/test/fixtures/asset/tree/all_with_require.js +0 -7
  98. data/vendor/sprockets/test/fixtures/asset/tree/all_with_require_directory.js +0 -1
  99. data/vendor/sprockets/test/fixtures/asset/tree/all_with_require_tree.js +0 -2
  100. data/vendor/sprockets/test/fixtures/asset/tree/directory/application.js +0 -2
  101. data/vendor/sprockets/test/fixtures/asset/tree/directory/bar.js +0 -1
  102. data/vendor/sprockets/test/fixtures/asset/tree/directory/foo.js +0 -1
  103. data/vendor/sprockets/test/fixtures/asset/tree/tree/application.js +0 -2
  104. data/vendor/sprockets/test/fixtures/asset/tree/tree/bar.js +0 -1
  105. data/vendor/sprockets/test/fixtures/asset/tree/tree/foo.js +0 -1
  106. data/vendor/sprockets/test/fixtures/asset/tree/with_logical_path/a/a.js +0 -1
  107. data/vendor/sprockets/test/fixtures/asset/tree/with_logical_path/require_tree_with_logical_path.js +0 -1
  108. data/vendor/sprockets/test/fixtures/asset/tree/without_argument/a.js +0 -1
  109. data/vendor/sprockets/test/fixtures/asset/tree/without_argument/b.js +0 -1
  110. data/vendor/sprockets/test/fixtures/asset/tree/without_argument/require_tree_without_argument.js +0 -1
  111. data/vendor/sprockets/test/fixtures/asset/two.css +0 -1
  112. data/vendor/sprockets/test/fixtures/asset/unicode.js +0 -2
  113. data/vendor/sprockets/test/fixtures/asset/unknownexts.min.js +0 -2
  114. data/vendor/sprockets/test/fixtures/asset/users.js.erb.str +0 -4
  115. data/vendor/sprockets/test/fixtures/context/POW.png +0 -0
  116. data/vendor/sprockets/test/fixtures/context/application.js.yml +0 -3
  117. data/vendor/sprockets/test/fixtures/context/bar.js +0 -1
  118. data/vendor/sprockets/test/fixtures/context/foo.js +0 -2
  119. data/vendor/sprockets/test/fixtures/context/helpers.css.erb +0 -3
  120. data/vendor/sprockets/test/fixtures/context/properties.js.erb +0 -7
  121. data/vendor/sprockets/test/fixtures/context/require_glob.js +0 -1
  122. data/vendor/sprockets/test/fixtures/context/resolve_content_type.js.erb +0 -4
  123. data/vendor/sprockets/test/fixtures/context/sprite.css.embed +0 -3
  124. data/vendor/sprockets/test/fixtures/default/application.js.coffee +0 -4
  125. data/vendor/sprockets/test/fixtures/default/blank.gif +0 -0
  126. data/vendor/sprockets/test/fixtures/default/coffee/foo.coffee +0 -1
  127. data/vendor/sprockets/test/fixtures/default/coffee/index.js +0 -3
  128. data/vendor/sprockets/test/fixtures/default/empty +0 -0
  129. data/vendor/sprockets/test/fixtures/default/gallery.css.erb +0 -3
  130. data/vendor/sprockets/test/fixtures/default/gallery.js +0 -1
  131. data/vendor/sprockets/test/fixtures/default/goodbye.jst.eco +0 -1
  132. data/vendor/sprockets/test/fixtures/default/hello.jst.ejs +0 -1
  133. data/vendor/sprockets/test/fixtures/default/hello.txt +0 -1
  134. data/vendor/sprockets/test/fixtures/default/interpolation.js +0 -1
  135. data/vendor/sprockets/test/fixtures/default/missing_require.js +0 -1
  136. data/vendor/sprockets/test/fixtures/default/mobile/a.js +0 -1
  137. data/vendor/sprockets/test/fixtures/default/mobile/b.js +0 -1
  138. data/vendor/sprockets/test/fixtures/default/mobile/c.css +0 -1
  139. data/vendor/sprockets/test/fixtures/default/mobile/d.css +0 -1
  140. data/vendor/sprockets/test/fixtures/default/mobile/index.css +0 -3
  141. data/vendor/sprockets/test/fixtures/default/mobile/index.js +0 -1
  142. data/vendor/sprockets/test/fixtures/default/noreturn.js +0 -1
  143. data/vendor/sprockets/test/fixtures/default/project.js.coffee.erb +0 -2
  144. data/vendor/sprockets/test/fixtures/default/with_data_uri.css.erb +0 -3
  145. data/vendor/sprockets/test/fixtures/directives/code_before_comment +0 -3
  146. data/vendor/sprockets/test/fixtures/directives/comment_without_directives +0 -6
  147. data/vendor/sprockets/test/fixtures/directives/directive_word_splitting +0 -6
  148. data/vendor/sprockets/test/fixtures/directives/directives_after_header +0 -16
  149. data/vendor/sprockets/test/fixtures/directives/double_slash +0 -9
  150. data/vendor/sprockets/test/fixtures/directives/hash +0 -8
  151. data/vendor/sprockets/test/fixtures/directives/no_header +0 -2
  152. data/vendor/sprockets/test/fixtures/directives/slash_star +0 -10
  153. data/vendor/sprockets/test/fixtures/directives/slash_star_single +0 -4
  154. data/vendor/sprockets/test/fixtures/directives/space_between_directive_word +0 -2
  155. data/vendor/sprockets/test/fixtures/directives/triple_hash +0 -10
  156. data/vendor/sprockets/test/fixtures/encoding/ascii.js +0 -1
  157. data/vendor/sprockets/test/fixtures/encoding/ascii_utf8.js +0 -2
  158. data/vendor/sprockets/test/fixtures/encoding/utf16.js +0 -0
  159. data/vendor/sprockets/test/fixtures/encoding/utf8.js +0 -1
  160. data/vendor/sprockets/test/fixtures/encoding/utf8_bom.js +0 -1
  161. data/vendor/sprockets/test/fixtures/engines/hello.alert +0 -1
  162. data/vendor/sprockets/test/fixtures/engines/moo.js.str +0 -1
  163. data/vendor/sprockets/test/fixtures/public/compiled-digest-0aa2105d29558f3eb790d411d7d8fb66.js +0 -3
  164. data/vendor/sprockets/test/fixtures/public/compiled-digest-1c41eb0cf934a0c76babe875f982f9d1.js +0 -1
  165. data/vendor/sprockets/test/fixtures/server/app/javascripts/application.js +0 -5
  166. data/vendor/sprockets/test/fixtures/server/app/javascripts/bar.js +0 -1
  167. data/vendor/sprockets/test/fixtures/server/app/javascripts/foo.js +0 -1
  168. data/vendor/sprockets/test/fixtures/server/app/javascripts/hello.txt +0 -2
  169. data/vendor/sprockets/test/fixtures/server/app/javascripts/tree.js +0 -1
  170. data/vendor/sprockets/test/fixtures/server/vendor/javascripts/missing_require.js +0 -1
  171. data/vendor/sprockets/test/fixtures/server/vendor/stylesheets/missing_require.css +0 -1
  172. data/vendor/sprockets/test/sprockets_test.rb +0 -56
  173. data/vendor/sprockets/test/test_asset.rb +0 -699
  174. data/vendor/sprockets/test/test_asset_attributes.rb +0 -150
  175. data/vendor/sprockets/test/test_caching.rb +0 -62
  176. data/vendor/sprockets/test/test_context.rb +0 -115
  177. data/vendor/sprockets/test/test_directive_processor.rb +0 -124
  178. data/vendor/sprockets/test/test_encoding.rb +0 -65
  179. data/vendor/sprockets/test/test_engines.rb +0 -73
  180. data/vendor/sprockets/test/test_environment.rb +0 -587
  181. data/vendor/sprockets/test/test_server.rb +0 -227
data/.gitignore CHANGED
@@ -3,3 +3,4 @@ devbin
3
3
  .bundle
4
4
  Gemfile.lock
5
5
  *.gem
6
+ *.swp
data/CHANGELOG.md CHANGED
@@ -1,4 +1,13 @@
1
1
 
2
+ # 1.0.0.beta.9
3
+
4
+ * Fixed bug with init where it would generate broken apps at first.
5
+ * Fixed bug when exceptions are thrown in preview mode that would force you
6
+ to restart the server. Should recover more smoothly now.
7
+ * Other minor bug fixes.
8
+
9
+ # 1.0.0.beta.8
10
+
2
11
  * First cut at support for formats.
3
12
  * Also introduces new requirement for defining transport and format plugins
4
13
  in the package.json. Now you must use the "bpm:provides" keyword:
data/bpm.gemspec CHANGED
@@ -21,13 +21,8 @@ Gem::Specification.new do |s|
21
21
  s.add_dependency "highline", "~> 1.6.1"
22
22
  s.add_dependency "json_pure", "~> 1.4.6"
23
23
  s.add_dependency "thor", "~> 0.14.3"
24
- s.add_dependency "therubyracer", "~> 0.9.2"
25
-
26
- # Begin Sprockets Deps
27
- s.add_dependency "hike", "~> 1.1"
28
- s.add_dependency "rack", "~> 1.0"
29
- s.add_dependency "tilt", ["~> 1.1", "!= 1.3.0"]
30
- # End Sprockets Deps
24
+ s.add_dependency "therubyracer", "~> 0.9.3beta1"
25
+ s.add_dependency "sprockets", "~> 2.0.0.beta.12"
31
26
 
32
27
  s.add_development_dependency "rspec"
33
28
  s.add_development_dependency "rack", "~> 1.2.1"
@@ -1,34 +1,34 @@
1
1
  require 'sprockets'
2
2
 
3
3
  module BPM
4
-
4
+
5
5
  class GeneratedAsset < Sprockets::BundledAsset
6
6
 
7
7
  FORMAT_METHODS = {
8
8
  'text/css' => ['css', 'pipeline_css'],
9
9
  'application/javascript' => ['lib', 'pipeline_libs']
10
10
  }
11
-
11
+
12
12
  def self.generating_asset
13
13
  @generating_asset && @generating_asset.last
14
14
  end
15
-
15
+
16
16
  def self.push_generating_asset(asset)
17
17
  @generating_asset ||= []
18
18
  @generating_asset.push asset
19
19
  end
20
-
20
+
21
21
  def self.pop_generating_asset
22
22
  @generating_asset && @generating_asset.pop
23
23
  end
24
24
 
25
25
  def build_settings
26
- ret = environment.project.build_settings[asset_name]
26
+ ret = environment.project.build_settings[asset_name]
27
27
  (ret && ret['bpm:settings']) || {}
28
28
  end
29
-
29
+
30
30
  def minify_body(data)
31
-
31
+
32
32
  project = environment.project
33
33
  minifier_name = project.minifier_name asset_name
34
34
  minifier_name = minifier_name.keys.first if minifier_name
@@ -46,7 +46,7 @@ module BPM
46
46
 
47
47
  plugin_ctx = environment.plugin_context_for minifier_plugin_name
48
48
 
49
- # slice out the header at the top - we don't want the minifier to
49
+ # slice out the header at the top - we don't want the minifier to
50
50
  # touch it.
51
51
  header = data.match /^(\/\* ====.+====\*\/)$/m
52
52
  if header
@@ -54,11 +54,9 @@ module BPM
54
54
  data = data[header.size..-1]
55
55
  end
56
56
 
57
- V8::C::Locker() do
58
- plugin_ctx["CTX"] = BPM::PluginContext.new(pkg)
59
- plugin_ctx["DATA"] = data
60
- data = plugin_ctx.eval("BPM_PLUGIN.minify(DATA, CTX)")
61
- end
57
+ plugin_ctx["CTX"] = BPM::PluginContext.new(pkg)
58
+ plugin_ctx["DATA"] = data
59
+ data = plugin_ctx.eval("BPM_PLUGIN.minify(DATA, CTX)")
62
60
 
63
61
  data = header+data if header
64
62
  end
@@ -82,7 +80,7 @@ module BPM
82
80
 
83
81
  def minify(hash)
84
82
  return hash if environment.mode == :debug
85
-
83
+
86
84
  hash = environment.cache_hash("#{pathname}:minify", id) do
87
85
  data = minify_body hash['source']
88
86
  { 'length' => Rack::Utils.bytesize(data),
@@ -98,7 +96,7 @@ module BPM
98
96
 
99
97
  hash
100
98
  end
101
-
99
+
102
100
  def asset_name
103
101
  project = environment.project
104
102
  if pathname.to_s.include?(project.assets_root)
@@ -107,23 +105,23 @@ module BPM
107
105
  pathname.relative_path_from(Pathname.new(project.preview_root)).to_s
108
106
  end
109
107
  end
110
-
108
+
111
109
  def build_dependency_context_and_body
112
110
 
113
111
  project = environment.project
114
112
  settings = project.build_settings(environment.mode)[asset_name]
115
- pkgs = settings.keys.map do |pkg_name|
113
+ pkgs = settings.keys.map do |pkg_name|
116
114
  next if pkg_name == 'bpm:minifier'
117
115
  if pkg_name == project.name
118
116
  project
119
117
  else
120
- project.local_deps.find { |dep| dep.name == pkg_name }
118
+ project.local_deps.find { |dep| dep.name == pkg_name }
121
119
  end
122
120
  end.compact
123
121
 
124
122
  if pkgs.size > 0
125
- manifest = pkgs.sort { |a,b| a.name <=> b.name }
126
- manifest = manifest.map do |x|
123
+ manifest = pkgs.sort { |a,b| a.name <=> b.name }
124
+ manifest = manifest.map do |x|
127
125
  "#{x.name} (#{x.version})"
128
126
  end.join " "
129
127
  else
@@ -135,7 +133,7 @@ module BPM
135
133
  /* ===========================================================================
136
134
  BPM Combined Asset File
137
135
  MANIFEST: #{manifest}
138
- This file is generated automatically by the bpm (http://www.bpmjs.org)
136
+ This file is generated automatically by the bpm (http://www.bpmjs.org)
139
137
  =========================================================================*/
140
138
 
141
139
  EOF
@@ -1,16 +1,16 @@
1
1
  module BPM
2
-
3
- class PluginContext
4
-
2
+
3
+ class PluginContext
4
+
5
5
  attr_reader :moduleId
6
6
  attr_reader :package
7
-
7
+
8
8
  def initialize(pkg, module_id=nil)
9
9
  @generating_asset = BPM::GeneratedAsset.generating_asset
10
10
  @package = pkg.as_json
11
11
  @moduleId = module_id
12
12
  end
13
-
13
+
14
14
  def minify(body)
15
15
  @generating_asset ? @generating_asset.minify_body(body) : body
16
16
  end
@@ -18,7 +18,7 @@ module BPM
18
18
  def settings
19
19
  @generating_asset ? @generating_asset.build_settings : {}
20
20
  end
21
-
21
+
22
22
  end
23
-
23
+
24
24
  end
@@ -2,11 +2,11 @@ require 'sprockets'
2
2
 
3
3
  module BPM
4
4
 
5
- # A processor that will invoke a JavaScript-based plugin provided by a
6
- # package in the system. The passed method name will be invoked on the
5
+ # A processor that will invoke a JavaScript-based plugin provided by a
6
+ # package in the system. The passed method name will be invoked on the
7
7
  # plugin.
8
8
  class PluginProcessor < Tilt::Template
9
-
9
+
10
10
  def self.with_plugin(plugin_opts, method_name)
11
11
  ret = Class.new(self)
12
12
  ret.instance_eval do
@@ -19,34 +19,25 @@ module BPM
19
19
  def self.method_name
20
20
  @method_name
21
21
  end
22
-
22
+
23
23
  def self.plugin_name
24
24
  @plugin_opts["main"]
25
25
  end
26
-
26
+
27
27
  def prepare
28
28
  end
29
-
29
+
30
30
  def evaluate(context, locals, &block)
31
31
  ctx = context.environment.plugin_context_for self.class.plugin_name
32
32
  project = context.environment.project
33
33
  pkg, module_id = project.package_and_module_from_path file
34
-
35
- filepath = file.to_s
36
- out = ''
37
34
 
38
- V8::C::Locker() do
39
- ctx["DATA"] = data
40
- ctx["CTX"] = BPM::PluginContext.new(pkg, module_id)
41
- out = ctx.eval("BPM_PLUGIN.#{self.class.method_name}(DATA, CTX, '#{filepath}');")
42
- end
35
+ filepath = file.to_s
43
36
 
44
- out
37
+ ctx["DATA"] = data
38
+ ctx["CTX"] = BPM::PluginContext.new(pkg, module_id)
39
+ ctx.eval("BPM_PLUGIN.#{self.class.method_name}(DATA, CTX, '#{filepath}');")
45
40
  end
46
-
41
+
47
42
  end
48
43
  end
49
-
50
-
51
-
52
-
@@ -1,15 +1,15 @@
1
1
  require 'sprockets'
2
2
 
3
3
  module BPM
4
-
4
+
5
5
  class TransportProcessor < Sprockets::Processor
6
-
6
+
7
7
  def evaluate(context, locals)
8
8
  environment = context.environment
9
9
  project = environment.project
10
10
  pkg, module_id = project.package_and_module_from_path file
11
11
  transport_plugins = Array(pkg.bpm_use_transport || pkg.find_transport_plugins(project))
12
-
12
+
13
13
  transport_plugins = [] if transport_plugins.first == 'none'
14
14
 
15
15
  # No transport, just return the existing data
@@ -20,20 +20,15 @@ module BPM
20
20
  raise "#{pkg.name} depends on #{transport_plugins.size} packages that define transport plugins. " \
21
21
  "Select a plugin by adding a `bpm:use:transport` property to the package.json"
22
22
  end
23
-
23
+
24
24
  plugin_ctx = environment.plugin_context_for transport_plugins.first
25
25
  filepath = file.to_s
26
- out = ''
27
26
 
28
- V8::C::Locker() do
29
- plugin_ctx["DATA"] = data
30
- plugin_ctx["CTX"] = BPM::PluginContext.new(pkg, module_id)
31
- out = plugin_ctx.eval("BPM_PLUGIN.compileTransport(DATA, CTX, '#{filepath}');")
32
- end
33
-
34
- out + "\n\n"
27
+ plugin_ctx["DATA"] = data
28
+ plugin_ctx["CTX"] = BPM::PluginContext.new(pkg, module_id)
29
+ plugin_ctx.eval("BPM_PLUGIN.compileTransport(DATA, CTX, '#{filepath}');") + "\n\n"
35
30
  end
36
-
31
+
37
32
  end
38
33
 
39
34
  end
data/lib/bpm/pipeline.rb CHANGED
@@ -7,28 +7,28 @@ module BPM
7
7
  def log(str)
8
8
  shell.say str
9
9
  end
10
-
10
+
11
11
  private
12
-
12
+
13
13
  def shell
14
14
  @shell ||= Thor::Base.shell.new
15
15
  end
16
-
16
+
17
17
  end
18
-
18
+
19
19
  # A BPM package-aware asset pipeline. Asset lookup respects package.json
20
20
  # directory configurations as well as loading preprocessors, formats, and
21
21
  # postprocessors from the package config.
22
22
  #
23
23
  class Pipeline < Sprockets::Environment
24
-
24
+
25
25
  attr_reader :project
26
26
  attr_reader :mode
27
27
  attr_reader :package_pipelines
28
28
 
29
29
  # Pass in the project you want the pipeline to manage.
30
30
  def initialize(project, mode = :debug, include_preview = false)
31
-
31
+
32
32
  @project = project
33
33
  @mode = mode
34
34
  @plugin_contexts = {}
@@ -38,12 +38,12 @@ module BPM
38
38
  BPM::PackagePipeline.new self, pkg
39
39
  end
40
40
  @package_pipelines << BPM::PackagePipeline.new(self, project)
41
-
41
+
42
42
  project_path = project.root_path
43
43
 
44
44
  super project_path
45
45
 
46
- # Unregister built-in processors. We want most things served by the
46
+ # Unregister built-in processors. We want most things served by the
47
47
  # pipeline directly to just pass through. (package pipelines do the
48
48
  # processing)
49
49
  %w(text/css application/javascript).each do |kind|
@@ -54,19 +54,19 @@ module BPM
54
54
  # configure search paths
55
55
  append_path project.assets_root
56
56
  append_path project.preview_root if include_preview
57
- end
58
-
59
- # determines the proper pipeline for the path
57
+ end
58
+
59
+ # determines the proper pipeline for the path
60
60
  def pipeline_for(path)
61
61
  return nil if magic_paths.include?(path)
62
62
  package_pipelines.find do |cur_pipeline|
63
63
  path.to_s[cur_pipeline.package.root_path.to_s]
64
64
  end
65
65
  end
66
-
66
+
67
67
  def attributes_for(path)
68
68
  if path.to_s[File.join(project.root_path, '.bpm')] || !Pathname.new(path).absolute?
69
- return super(path)
69
+ return super(path)
70
70
  end
71
71
 
72
72
  pipeline = pipeline_for path
@@ -74,23 +74,23 @@ module BPM
74
74
  end
75
75
 
76
76
  def resolve(logical_path, options={}, &block)
77
-
77
+
78
78
  magic_path = magic_paths.find do |path|
79
79
  path =~ /#{Regexp.escape logical_path.to_s}(\..+)?$/
80
80
  end
81
-
81
+
82
82
  package_name = logical_path.to_s.sub(/#{Regexp.escape File::SEPARATOR}.+/,'')
83
- pipeline = package_pipelines.find do |cur_pipeline|
83
+ pipeline = package_pipelines.find do |cur_pipeline|
84
84
  cur_pipeline.package_name == package_name
85
85
  end
86
-
86
+
87
87
  if pipeline && magic_path.nil?
88
88
  logical_path = logical_path.to_s[package_name.size+1..-1]
89
89
  pipeline.resolve Pathname.new(logical_path), options, &block
90
90
  else
91
91
  super logical_path, options, &block
92
92
  end
93
-
93
+
94
94
  end
95
95
 
96
96
  # Detect whenever we are asked to build some of the magic files and swap
@@ -113,16 +113,16 @@ module BPM
113
113
  # Returns an array of all the buildable assets in the current directory.
114
114
  # These are the assets that will be built when you compile the project.
115
115
  def buildable_assets
116
-
117
- # make sure the logical_path can be used to simply build into the
116
+
117
+ # make sure the logical_path can be used to simply build into the
118
118
  # assets directory when we are done
119
119
  ret = project.buildable_asset_filenames mode
120
-
120
+
121
121
  # Add in the static assets that we just need to copy
122
122
  project.build_settings(mode).each do |target_name, opts|
123
123
  next unless opts.is_a? Array
124
- opts.each do |dir_name|
125
-
124
+ opts.each do |dir_name|
125
+
126
126
  dep = project.local_deps.find { |dep| dep.name == target_name }
127
127
  dep = project if project.name == target_name
128
128
 
@@ -147,46 +147,51 @@ module BPM
147
147
  def plugin_context_for(logical_path)
148
148
  @plugin_contexts[logical_path] ||= build_plugin_context(logical_path)
149
149
  end
150
-
150
+
151
151
  protected
152
152
 
153
153
  def build_magic_paths
154
154
  magic_paths = project.buildable_asset_filenames(mode).map do |filename|
155
155
  project.assets_root filename
156
156
  end
157
-
157
+
158
158
  magic_paths += project.buildable_asset_filenames(mode).map do |filename|
159
159
  project.preview_root filename
160
160
  end
161
161
  end
162
-
162
+
163
163
  # Pass along to package pipelines
164
164
  def expire_index!
165
165
  super
166
166
  @magic_paths = nil
167
167
  package_pipelines.each { |pipeline| pipeline.expire_index! }
168
168
  end
169
-
169
+
170
170
  private
171
-
171
+
172
+ def javascript_exception_response(exception)
173
+ expire_index!
174
+ super exception
175
+ end
176
+
177
+ def css_exception_response(exception)
178
+ expire_index!
179
+ super exception
180
+ end
181
+
172
182
  def build_plugin_context(logical_path)
173
183
  asset = BPM::PluginAsset.new(self, logical_path)
174
184
  plugin_text = asset.to_s
175
-
176
- ctx = nil
177
- V8::C::Locker() do
178
- ctx = V8::Context.new do |ctx|
179
- ctx['window'] = ctx # make browser-like environment
180
- ctx['console'] = BPM::Console.new
181
-
182
- ctx['BPM_PLUGIN'] = {}
183
- ctx.eval plugin_text
184
- end
185
+
186
+ V8::Context.new do |ctx|
187
+ ctx['window'] = ctx # make browser-like environment
188
+ ctx['console'] = BPM::Console.new
189
+
190
+ ctx['BPM_PLUGIN'] = {}
191
+ ctx.eval plugin_text
185
192
  end
186
-
187
- ctx
188
193
  end
189
-
194
+
190
195
  end
191
-
196
+
192
197
  end
@@ -7,7 +7,7 @@ module BPM
7
7
  return false if directory_exists?
8
8
 
9
9
  empty_directory '.', :verbose => false
10
- empty_directory 'app'
10
+ empty_directory 'lib'
11
11
 
12
12
  create_files
13
13
 
@@ -25,7 +25,7 @@ module BPM
25
25
  template "README.md"
26
26
  template "index.html"
27
27
 
28
- inside 'app' do
28
+ inside 'lib' do
29
29
  template 'main.js'
30
30
  end
31
31
 
data/lib/bpm/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module BPM
2
- VERSION = "1.0.0.beta.8"
2
+ VERSION = "1.0.0.beta.9"
3
3
  COMPAT_VERSION = '1.0.0'
4
4
  end
data/lib/bpm.rb CHANGED
@@ -1,6 +1,3 @@
1
- # Included vendored sprockets
2
- $:.unshift File.expand_path('../../vendor/sprockets/lib', __FILE__)
3
-
4
1
  module BPM
5
2
  BPM_DIR = ".bpm"
6
3
  TEMPLATES_DIR = File.expand_path("../../templates", __FILE__)