blade 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4664fb3b7a95cfb7a7304e07f5fdeaad424d28eb
4
- data.tar.gz: 5679655dcf32d9c8e8d7cd2201507d3c076b063c
3
+ metadata.gz: 4a205b84cda0e15047ee832ddd16ec0def59e788
4
+ data.tar.gz: 4544bf65ab82d61421825efcd7249e59c3ee454f
5
5
  SHA512:
6
- metadata.gz: ef5d6c21584a879f5d7a90dfc9ab735ed1208dc3eae1288077601450e8fdd75392b031b9dfa813c83469756fe09dfddfc2d770833796fbdf928e58416265e1ed
7
- data.tar.gz: 5d4ee9d0239f18c05658a2031afd32190276a3c583b5dd1a27d37b3612fbf116d65e89d042c85accd8d31ba61ddf7b53f24c089e22da811036ea1204bb698d82
6
+ metadata.gz: efaa9386cb6042ad8720956badc98a551b837fdffe56df3bd0d547e7640f87124df9cab5560e1b2b3f8e710a12b5062ded7cf1764b96a00150b7804b2a84d660
7
+ data.tar.gz: afbac6fb74d822b8c866e0d3fd0c8d57c8bd2fb8b3a7b10e42c99630db05b03dd9416326011da5e7cb5bfa80f1bbf204774fb85cb766326caf0143210dca1937
data/lib/blade.rb CHANGED
@@ -120,6 +120,12 @@ module Blade
120
120
  options[:load_paths] = Array(options[:load_paths])
121
121
  options[:logical_paths] = Array(options[:logical_paths])
122
122
 
123
+ if build_options = options.delete(:build)
124
+ build_options[:logical_paths] = Array(build_options[:logical_paths])
125
+ build_options[:path] ||= "."
126
+ options[:build] = OpenStruct.new(build_options)
127
+ end
128
+
123
129
  @config = OpenStruct.new(options)
124
130
 
125
131
  setup_plugin_config!
data/lib/blade/assets.rb CHANGED
@@ -1,36 +1,48 @@
1
1
  require "sprockets"
2
2
 
3
3
  module Blade::Assets
4
+ autoload :Builder, "blade/assets/builder"
5
+
4
6
  extend self
5
7
 
6
8
  @environments = {}
7
9
 
8
- def environment(name = :blade)
9
- @environments[name] ||= Sprockets::Environment.new do |env|
10
- env.cache = Sprockets::Cache::FileStore.new(Blade.tmp_path.join(name.to_s))
10
+ def environment(name = :blade, context_name = nil)
11
+ cache_name = [name, context_name].compact.map(&:to_s).uniq.join("-")
12
+
13
+ @environments[cache_name] ||= Sprockets::Environment.new do |env|
14
+ env.cache = Sprockets::Cache::FileStore.new(Blade.tmp_path.join(cache_name))
11
15
 
12
16
  send("#{name}_load_paths").each do |path|
13
17
  env.append_path(path)
14
18
  end
15
19
 
16
20
  env.context_class.class_eval do
17
- extend Forwardable
18
- def_delegators "Blade::Assets", :environment, :logical_paths
21
+ delegate :logical_paths, to: Blade::Assets
22
+
23
+ define_method(:environment) { env }
24
+ define_method(:context_name) { name }
19
25
 
20
26
  def with_asset(path, env_name)
21
- if asset = environment(env_name)[path]
27
+ if asset = Blade::Assets.environment(env_name, context_name)[path]
22
28
  depend_on(asset.pathname)
23
29
  yield(asset)
24
30
  end
25
31
  end
26
32
 
27
- def render_asset(path, env_name)
33
+ def render_asset(path, env_name = context_name)
28
34
  with_asset(path, env_name) { |asset| asset.to_s }
29
35
  end
30
36
  end
31
37
  end
32
38
  end
33
39
 
40
+ def build(name = :user)
41
+ if Blade.config.build
42
+ Builder.new(environment(name)).build
43
+ end
44
+ end
45
+
34
46
  def logical_paths(type = nil)
35
47
  paths = Blade.config.logical_paths
36
48
  paths.select! { |path| File.extname(path) == ".#{type}" } if type
@@ -0,0 +1,48 @@
1
+ class Blade::Assets::Builder
2
+ attr_accessor :environment
3
+
4
+ def initialize(environment)
5
+ @environment = environment
6
+ end
7
+
8
+ def build
9
+ clean
10
+ compile
11
+ install
12
+ end
13
+
14
+ private
15
+ def compile
16
+ environment.js_compressor = Blade.config.build.js_compressor.try(:to_sym)
17
+ environment.css_compressor = Blade.config.build.css_compressor.try(:to_sym)
18
+ manifest.compile(logical_paths)
19
+ end
20
+
21
+ def install
22
+ logical_paths.each do |logical_path|
23
+ fingerprint_path = manifest.assets[logical_path]
24
+ FileUtils.cp(compile_path.join(fingerprint_path), dist_path.join(logical_path))
25
+ end
26
+ end
27
+
28
+ def manifest
29
+ @manifest ||= Sprockets::Manifest.new(environment.index, compile_path)
30
+ end
31
+
32
+ def clean
33
+ compile_path.rmtree if compile_path.exist?
34
+ compile_path.mkpath
35
+ end
36
+
37
+ def logical_paths
38
+ Blade.config.build.logical_paths
39
+ end
40
+
41
+ def dist_path
42
+ Pathname.new(Blade.config.build.path)
43
+ end
44
+
45
+ def compile_path
46
+ Blade.tmp_path.join("compile")
47
+ end
48
+ end
data/lib/blade/cli.rb CHANGED
@@ -10,4 +10,10 @@ class Blade::CLI < Thor
10
10
  def ci
11
11
  Blade.start(interface: :ci)
12
12
  end
13
+
14
+ desc "build", "Build assets"
15
+ def build
16
+ Blade.initialize!
17
+ Blade::Assets.build
18
+ end
13
19
  end
data/lib/blade/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Blade
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blade
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Javan Makhmali
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-10-11 00:00:00.000000000 Z
11
+ date: 2015-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -213,6 +213,7 @@ files:
213
213
  - exe/blade
214
214
  - lib/blade.rb
215
215
  - lib/blade/assets.rb
216
+ - lib/blade/assets/builder.rb
216
217
  - lib/blade/cli.rb
217
218
  - lib/blade/combined_test_results.rb
218
219
  - lib/blade/component.rb