jekyll-assets 2.2.2 → 2.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +15 -2
- data/lib/jekyll/assets/cached.rb +9 -6
- data/lib/jekyll/assets/config.rb +9 -8
- data/lib/jekyll/assets/env.rb +137 -65
- data/lib/jekyll/assets/helpers.rb +1 -1
- data/lib/jekyll/assets/hooks/cache.rb +16 -8
- data/lib/jekyll/assets/liquid/tag.rb +1 -1
- data/lib/jekyll/assets/logger.rb +28 -15
- data/lib/jekyll/assets/manifest.rb +29 -7
- data/lib/jekyll/assets/version.rb +1 -3
- metadata +1 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: c1beb6828d5534b96a31042623acb912c13b3e38
         | 
| 4 | 
            +
              data.tar.gz: 688fabb88be88681c40954736b663d216f7ad93d
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: c085055cc33ff864f394b22d0f98530f8d3d71a871baf01f7dd00d8cc59151c9907e9ce1f65b46d828fb93086fd70d80df1dd80b2115cd6961aebf05e8565f29
         | 
| 7 | 
            +
              data.tar.gz: 5b0f8f7cc6bb1010c23be8a2ffb15f744283c2ada9b56ed9010dd5fa7c9407ded47742117e2d8017fd6d415f8e9bd28d6e6937643563cd4ed2c388a7f9947d81
         | 
    
        data/README.md
    CHANGED
    
    | @@ -36,16 +36,26 @@ assets: | |
| 36 36 | 
             
              compress:
         | 
| 37 37 | 
             
                css: false | true | default - development: false, production: true
         | 
| 38 38 | 
             
                js: false | true | default - development: false, production: true
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              #
         | 
| 41 | 
            +
             | 
| 42 | 
            +
              autowrite: true
         | 
| 39 43 | 
             
              cache: false | directory | default: .asset-cache
         | 
| 44 | 
            +
              cache_type: memory | filesystem | default: filesystem
         | 
| 40 45 | 
             
              cdn: https://cdn.example.com
         | 
| 41 46 | 
             
              skip_baseurl_with_cdn: false
         | 
| 42 47 | 
             
              skip_prefix_with_cdn: false
         | 
| 43 48 | 
             
              prefix: "/assets"
         | 
| 44 | 
            -
               | 
| 49 | 
            +
              digest: true
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              #
         | 
| 52 | 
            +
             | 
| 45 53 | 
             
              assets:
         | 
| 46 54 | 
             
                - "*.png"
         | 
| 47 55 | 
             
                - "bundle.css"
         | 
| 48 | 
            -
             | 
| 56 | 
            +
             | 
| 57 | 
            +
              #
         | 
| 58 | 
            +
             | 
| 49 59 | 
             
              sources:
         | 
| 50 60 | 
             
                - _assets/css
         | 
| 51 61 | 
             
                - _assets/images
         | 
| @@ -54,6 +64,9 @@ assets: | |
| 54 64 | 
             
                - _assets/fonts
         | 
| 55 65 | 
             
                - _assets/img
         | 
| 56 66 | 
             
                - _assets/js
         | 
| 67 | 
            +
             | 
| 68 | 
            +
              #
         | 
| 69 | 
            +
             | 
| 57 70 | 
             
              features:
         | 
| 58 71 | 
             
                liquid: true | false | default: false
         | 
| 59 72 | 
             
                automatic_img_size: true | false | n(fixnum): 2,4,6,8 | default: true
         | 
    
        data/lib/jekyll/assets/cached.rb
    CHANGED
    
    | @@ -1,17 +1,16 @@ | |
| 1 | 
            -
            # ----------------------------------------------------------------------------
         | 
| 2 1 | 
             
            # Frozen-string-literal: true
         | 
| 3 2 | 
             
            # Copyright: 2012 - 2016 - MIT License
         | 
| 4 3 | 
             
            # Encoding: utf-8
         | 
| 5 | 
            -
            # ----------------------------------------------------------------------------
         | 
| 6 4 |  | 
| 7 5 | 
             
            module Jekyll
         | 
| 8 6 | 
             
              module Assets
         | 
| 9 7 | 
             
                class Cached < Sprockets::CachedEnvironment
         | 
| 10 | 
            -
                  attr_reader :jekyll
         | 
| 11 | 
            -
                  attr_reader :parent
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                  # ----------------------------------------------------------------------
         | 
| 8 | 
            +
                  attr_reader :jekyll, :parent
         | 
| 14 9 |  | 
| 10 | 
            +
                  # --
         | 
| 11 | 
            +
                  # @param [Env] env the environment
         | 
| 12 | 
            +
                  # Initialize a new instance
         | 
| 13 | 
            +
                  # --
         | 
| 15 14 | 
             
                  def initialize(env)
         | 
| 16 15 | 
             
                    @parent = env
         | 
| 17 16 | 
             
                    @jekyll = env.jekyll
         | 
| @@ -19,6 +18,10 @@ module Jekyll | |
| 19 18 | 
             
                    super env
         | 
| 20 19 | 
             
                  end
         | 
| 21 20 |  | 
| 21 | 
            +
             | 
| 22 | 
            +
                  # --
         | 
| 23 | 
            +
                  # Resolve an asset.
         | 
| 24 | 
            +
                  # --
         | 
| 22 25 | 
             
                  def resolve(*args)
         | 
| 23 26 | 
             
                    @resolve_cache[args] ||= super
         | 
| 24 27 | 
             
                  end
         | 
    
        data/lib/jekyll/assets/config.rb
    CHANGED
    
    | @@ -1,8 +1,6 @@ | |
| 1 | 
            -
            # ----------------------------------------------------------------------------
         | 
| 2 1 | 
             
            # Frozen-string-literal: true
         | 
| 3 2 | 
             
            # Copyright: 2012 - 2016 - MIT License
         | 
| 4 3 | 
             
            # Encoding: utf-8
         | 
| 5 | 
            -
            # ----------------------------------------------------------------------------
         | 
| 6 4 |  | 
| 7 5 | 
             
            module Jekyll
         | 
| 8 6 | 
             
              module Assets
         | 
| @@ -13,9 +11,10 @@ module Jekyll | |
| 13 11 | 
             
                    _assets/javascripts _assets/js
         | 
| 14 12 | 
             
                  ).freeze
         | 
| 15 13 |  | 
| 16 | 
            -
                  #  | 
| 14 | 
            +
                  # --
         | 
| 17 15 |  | 
| 18 16 | 
             
                  Development = {
         | 
| 17 | 
            +
                    "cache_type" => "filesystem",
         | 
| 19 18 | 
             
                    "skip_baseurl_with_cdn" => false,
         | 
| 20 19 | 
             
                    "skip_prefix_with_cdn"  => false,
         | 
| 21 20 | 
             
                    "prefix"    => "/assets",
         | 
| @@ -35,7 +34,7 @@ module Jekyll | |
| 35 34 | 
             
                    }
         | 
| 36 35 | 
             
                  }.freeze
         | 
| 37 36 |  | 
| 38 | 
            -
                  #  | 
| 37 | 
            +
                  # --
         | 
| 39 38 |  | 
| 40 39 | 
             
                  Production = Development.merge({
         | 
| 41 40 | 
             
                    "digest"    => true,
         | 
| @@ -45,8 +44,10 @@ module Jekyll | |
| 45 44 | 
             
                    }
         | 
| 46 45 | 
             
                  }).freeze
         | 
| 47 46 |  | 
| 48 | 
            -
                  #  | 
| 49 | 
            -
             | 
| 47 | 
            +
                  # --
         | 
| 48 | 
            +
                  # @param [Jekyll::Site] jekyll The jekyll instance.
         | 
| 49 | 
            +
                  # Merge our sources with Jekyll's sources.
         | 
| 50 | 
            +
                  # --
         | 
| 50 51 | 
             
                  def self.merge_sources(jekyll, config) config["sources"] ||= []
         | 
| 51 52 | 
             
                    if !config["sources"].grep(/\A\s*_assets\/?\s*\Z/).empty?
         | 
| 52 53 | 
             
                      return
         | 
| @@ -59,7 +60,7 @@ module Jekyll | |
| 59 60 | 
             
                    end
         | 
| 60 61 | 
             
                  end
         | 
| 61 62 |  | 
| 62 | 
            -
                  #  | 
| 63 | 
            +
                  # --
         | 
| 63 64 |  | 
| 64 65 | 
             
                  def self.defaults
         | 
| 65 66 | 
             
                    if %W(development test).include?(Jekyll.env)
         | 
| @@ -67,7 +68,7 @@ module Jekyll | |
| 67 68 | 
             
                    end
         | 
| 68 69 | 
             
                  end
         | 
| 69 70 |  | 
| 70 | 
            -
                  #  | 
| 71 | 
            +
                  # --
         | 
| 71 72 |  | 
| 72 73 | 
             
                  def self.merge(new_hash, old_hash = defaults)
         | 
| 73 74 | 
             
                    old_hash.merge(new_hash) do |_, old_val, new_val|
         | 
    
        data/lib/jekyll/assets/env.rb
    CHANGED
    
    | @@ -1,58 +1,96 @@ | |
| 1 | 
            -
            # ----------------------------------------------------------------------------
         | 
| 2 1 | 
             
            # Frozen-string-literal: true
         | 
| 3 2 | 
             
            # Copyright: 2012 - 2016 - MIT License
         | 
| 4 3 | 
             
            # Encoding: utf-8
         | 
| 5 | 
            -
            # ----------------------------------------------------------------------------
         | 
| 6 4 |  | 
| 7 5 | 
             
            module Jekyll
         | 
| 8 6 | 
             
              module Assets
         | 
| 9 7 | 
             
                class Env < Sprockets::Environment
         | 
| 10 | 
            -
                   | 
| 8 | 
            +
                  attr_accessor :jekyll
         | 
| 11 9 |  | 
| 12 10 | 
             
                  class << self
         | 
| 13 | 
            -
             | 
| 11 | 
            +
             | 
| 12 | 
            +
                    # --
         | 
| 13 | 
            +
                    # A list of instances for Jekyll and their paths.
         | 
| 14 | 
            +
                    # This works around Jekyll watch and build booting twice.
         | 
| 15 | 
            +
                    # @return [Hash]
         | 
| 16 | 
            +
                    # --
         | 
| 17 | 
            +
                    def instances
         | 
| 18 | 
            +
                      return @instances ||= {
         | 
| 19 | 
            +
                        #
         | 
| 20 | 
            +
                      }
         | 
| 21 | 
            +
                    end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                    # --
         | 
| 24 | 
            +
                    # A list of Liquid Proxies.
         | 
| 25 | 
            +
                    # @return [Set]
         | 
| 26 | 
            +
                    # --
         | 
| 14 27 | 
             
                    def liquid_proxies
         | 
| 15 28 | 
             
                      Liquid::Tag::Proxies
         | 
| 16 29 | 
             
                    end
         | 
| 17 30 |  | 
| 18 | 
            -
                    #  | 
| 31 | 
            +
                    # --
         | 
| 32 | 
            +
                    # XXX: Remove this in 3.0, it's unecessary.
         | 
| 33 | 
            +
                    # Initialize a new instance of ourselves onto Jekyll if not exist.
         | 
| 34 | 
            +
                    # @param [Jekyll::Site] jekyll the site instance.
         | 
| 35 | 
            +
                    # --
         | 
| 36 | 
            +
                    def init(jekyll, key = jekyll.in_source_dir)
         | 
| 37 | 
            +
                      Jekyll.logger.debug "Creating a new instance of: ", self
         | 
| 38 | 
            +
                      Jekyll.logger.debug "The old value of Sprockets: ",
         | 
| 39 | 
            +
                        jekyll.sprockets
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                      instances[key] = new(
         | 
| 42 | 
            +
                        jekyll
         | 
| 43 | 
            +
                      )
         | 
| 19 44 |  | 
| 20 | 
            -
                    def init(jekyll)
         | 
| 21 | 
            -
                      new(jekyll)
         | 
| 22 45 | 
             
                      jekyll.sprockets.excludes.map(&jekyll.config["exclude"].method(:<<))
         | 
| 23 46 | 
             
                      jekyll.config["keep_files"] |= jekyll.sprockets.asset_config["prefix"].gsub(/\A\//, "").to_a
         | 
| 24 47 | 
             
                      jekyll.config["exclude"].uniq!
         | 
| 25 48 | 
             
                    end
         | 
| 26 49 | 
             
                  end
         | 
| 27 50 |  | 
| 28 | 
            -
                  #  | 
| 51 | 
            +
                  # --
         | 
| 52 | 
            +
                  # XXX: Remove in 3.0
         | 
| 53 | 
            +
                  # Used is deprecated, use Manifest#add.
         | 
| 54 | 
            +
                  # @return [Manifest]
         | 
| 55 | 
            +
                  # --
         | 
| 56 | 
            +
                  def used
         | 
| 57 | 
            +
                    Logger.deprecate "Env#used is deprecated use Manifest#add", jekyll do
         | 
| 58 | 
            +
                      manifest
         | 
| 59 | 
            +
                    end
         | 
| 60 | 
            +
                  end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                  # --
         | 
| 29 63 | 
             
                  # Disables GZIP.  You should be using your server to do this and even
         | 
| 30 64 | 
             
                  # if you don't, there are far better and more efficient algorithms out
         | 
| 31 65 | 
             
                  # right now that are in beta.  Try Googling Googles new compression.
         | 
| 32 | 
            -
                  #  | 
| 33 | 
            -
             | 
| 66 | 
            +
                  # --
         | 
| 34 67 | 
             
                  def skip_gzip?
         | 
| 35 68 | 
             
                    true
         | 
| 36 69 | 
             
                  end
         | 
| 37 70 |  | 
| 38 | 
            -
                  #  | 
| 39 | 
            -
             | 
| 71 | 
            +
                  # --
         | 
| 72 | 
            +
                  # Builds a list of excludes for Jekyll.
         | 
| 73 | 
            +
                  # @return [Set]
         | 
| 74 | 
            +
                  # --
         | 
| 40 75 | 
             
                  def excludes
         | 
| 41 76 | 
             
                    excludes = Set.new
         | 
| 42 77 | 
             
                    excludes << strip_path(in_cache_dir)
         | 
| 43 78 | 
             
                    excludes
         | 
| 44 79 | 
             
                  end
         | 
| 45 80 |  | 
| 46 | 
            -
                  #  | 
| 47 | 
            -
             | 
| 81 | 
            +
                  # --
         | 
| 82 | 
            +
                  # Returns all the assets.
         | 
| 83 | 
            +
                  # --
         | 
| 48 84 | 
             
                  def all_unparsed_assets
         | 
| 49 85 | 
             
                    @unparsed_assets ||= logical_paths.select do |(_, val)|
         | 
| 50 86 | 
             
                      val.start_with?(jekyll.in_source_dir)
         | 
| 51 87 | 
             
                    end
         | 
| 52 88 | 
             
                  end
         | 
| 53 89 |  | 
| 54 | 
            -
                  #  | 
| 55 | 
            -
             | 
| 90 | 
            +
                  # --
         | 
| 91 | 
            +
                  # Converts this class into a set of Drops.
         | 
| 92 | 
            +
                  # @return [Hash]
         | 
| 93 | 
            +
                  # --
         | 
| 56 94 | 
             
                  def to_liquid_payload
         | 
| 57 95 | 
             
                    jekyll.sprockets.all_unparsed_assets.each_with_object({}) do |(key, val), hash|
         | 
| 58 96 | 
             
                      hash[key] = Jekyll::Assets::Liquid::Drop.new(
         | 
| @@ -61,70 +99,88 @@ module Jekyll | |
| 61 99 | 
             
                    end
         | 
| 62 100 | 
             
                  end
         | 
| 63 101 |  | 
| 64 | 
            -
                  #  | 
| 65 | 
            -
             | 
| 102 | 
            +
                  # --
         | 
| 103 | 
            +
                  # Initialize a new instance of this class.
         | 
| 104 | 
            +
                  # @param [<Anything>] path This is passed upstream, we don't care.
         | 
| 105 | 
            +
                  # @param [Jekyll::Site] jekyll the Jekyll instances.
         | 
| 106 | 
            +
                  # XXX: Merge with .init in 3.0
         | 
| 107 | 
            +
                  # --
         | 
| 66 108 | 
             
                  def initialize(path, jekyll = nil)
         | 
| 67 109 | 
             
                    (jekyll = path; path = nil) if path.is_a?(Jekyll::Site)
         | 
| 68 110 |  | 
| 69 111 | 
             
                    @used = Set.new
         | 
| 70 | 
            -
                    @jekyll = jekyll
         | 
| 71 112 | 
             
                    path ? super(path) : super()
         | 
| 113 | 
            +
                    @jekyll = jekyll
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                    # XXX: In 3.0, we need to drop anything to do with instance eval,
         | 
| 116 | 
            +
                    #   and imply pass the instance, this will make our code cleaner.
         | 
| 117 | 
            +
             | 
| 72 118 | 
             
                    Hook.trigger :env, :init do |hook|
         | 
| 73 119 | 
             
                      hook.arity > 0 || 0 > hook.arity ? hook.call(self) : instance_eval(
         | 
| 74 120 | 
             
                        &hook
         | 
| 75 121 | 
             
                      )
         | 
| 76 122 | 
             
                    end
         | 
| 77 | 
            -
                  end
         | 
| 78 123 |  | 
| 79 | 
            -
             | 
| 124 | 
            +
                    # Make sure that we add extras.
         | 
| 125 | 
            +
                    extra_assets.each do |asset|
         | 
| 126 | 
            +
                      manifest.add(
         | 
| 127 | 
            +
                        asset
         | 
| 128 | 
            +
                      )
         | 
| 129 | 
            +
                    end
         | 
| 130 | 
            +
                  end
         | 
| 80 131 |  | 
| 132 | 
            +
                  # --
         | 
| 133 | 
            +
                  # A list of Liquid Proxies.
         | 
| 134 | 
            +
                  # @return [Set]
         | 
| 135 | 
            +
                  # --
         | 
| 81 136 | 
             
                  def liquid_proxies
         | 
| 82 137 | 
             
                    self.class.liquid_proxies
         | 
| 83 138 | 
             
                  end
         | 
| 84 139 |  | 
| 85 | 
            -
                  #  | 
| 86 | 
            -
                  # Make  | 
| 87 | 
            -
                  #  | 
| 88 | 
            -
             | 
| 140 | 
            +
                  # --
         | 
| 141 | 
            +
                  # Make a path land inside of our cache directory.
         | 
| 142 | 
            +
                  # @param [<Anything>] *paths the paths you wish to land.
         | 
| 143 | 
            +
                  # @return [Pathname/Pathutil]
         | 
| 144 | 
            +
                  # --
         | 
| 89 145 | 
             
                  def in_cache_dir(*paths)
         | 
| 90 146 | 
             
                    jekyll.in_source_dir(asset_config["cache"] || ".asset-cache",
         | 
| 91 147 | 
             
                      *paths
         | 
| 92 148 | 
             
                    )
         | 
| 93 149 | 
             
                  end
         | 
| 94 150 |  | 
| 95 | 
            -
                  #  | 
| 96 | 
            -
                  #  | 
| 97 | 
            -
                  #  | 
| 98 | 
            -
             | 
| 151 | 
            +
                  # --
         | 
| 152 | 
            +
                  # Deprecated: Use Manifest#to_compile
         | 
| 153 | 
            +
                  # XXX: Remove in 3.0
         | 
| 154 | 
            +
                  # --
         | 
| 99 155 | 
             
                  def all_assets
         | 
| 100 | 
            -
                     | 
| 101 | 
            -
                       | 
| 102 | 
            -
                     | 
| 156 | 
            +
                    Logger.deprecate "Env#all_assets is deprecated, use Manifest#all", jekyll do
         | 
| 157 | 
            +
                      manifest.all
         | 
| 158 | 
            +
                    end
         | 
| 103 159 | 
             
                  end
         | 
| 104 160 |  | 
| 105 | 
            -
                  #  | 
| 161 | 
            +
                  # --
         | 
| 106 162 | 
             
                  # Assets you tell us you want to always compile, even if you do not
         | 
| 107 163 | 
             
                  # use them.  Just like Rails this is probably normally used.
         | 
| 108 | 
            -
                  #  | 
| 109 | 
            -
             | 
| 164 | 
            +
                  # --
         | 
| 110 165 | 
             
                  def extra_assets
         | 
| 111 166 | 
             
                    assets = asset_config["assets"] ||= []
         | 
| 112 167 | 
             
                    each_logical_path(*assets).map do |v|
         | 
| 113 | 
            -
                       | 
| 168 | 
            +
                      manifest.find(v).first
         | 
| 114 169 | 
             
                    end
         | 
| 115 170 | 
             
                  end
         | 
| 116 171 |  | 
| 117 | 
            -
                  #  | 
| 118 | 
            -
             | 
| 172 | 
            +
                  # --
         | 
| 173 | 
            +
                  # Whether or not we need a CDN.
         | 
| 174 | 
            +
                  # --
         | 
| 119 175 | 
             
                  def cdn?
         | 
| 120 176 | 
             
                    !dev? && asset_config.key?("cdn") && \
         | 
| 121 177 | 
             
                      asset_config["cdn"]
         | 
| 122 178 | 
             
                  end
         | 
| 123 179 |  | 
| 124 | 
            -
                  #  | 
| 180 | 
            +
                  # --
         | 
| 181 | 
            +
                  # The BaseURL mixed with Jekyll's own BaseURL.
         | 
| 125 182 | 
             
                  # rubocop:disable Style/ExtraSpacing
         | 
| 126 | 
            -
                  #  | 
| 127 | 
            -
             | 
| 183 | 
            +
                  # --
         | 
| 128 184 | 
             
                  def baseurl
         | 
| 129 185 | 
             
                    ary = []
         | 
| 130 186 |  | 
| @@ -136,42 +192,47 @@ module Jekyll | |
| 136 192 | 
             
                    end)
         | 
| 137 193 | 
             
                  end
         | 
| 138 194 |  | 
| 139 | 
            -
                  #  | 
| 195 | 
            +
                  # --
         | 
| 196 | 
            +
                  # Whether or not we are in development mode.
         | 
| 140 197 | 
             
                  # rubocop:enable Style/ExtraSpacing
         | 
| 141 | 
            -
                  #  | 
| 142 | 
            -
             | 
| 198 | 
            +
                  # --
         | 
| 143 199 | 
             
                  def dev?
         | 
| 144 200 | 
             
                    %W(development test).include?(Jekyll.env)
         | 
| 145 201 | 
             
                  end
         | 
| 146 202 |  | 
| 147 | 
            -
                  #  | 
| 148 | 
            -
             | 
| 203 | 
            +
                  # --
         | 
| 204 | 
            +
                  # Whether or not we should compress assets.
         | 
| 205 | 
            +
                  # --
         | 
| 149 206 | 
             
                  def compress?(what)
         | 
| 150 207 | 
             
                    !!asset_config["compress"].fetch(
         | 
| 151 208 | 
             
                      what, false
         | 
| 152 209 | 
             
                    )
         | 
| 153 210 | 
             
                  end
         | 
| 154 211 |  | 
| 155 | 
            -
                  #  | 
| 156 | 
            -
             | 
| 212 | 
            +
                  # --
         | 
| 213 | 
            +
                  # The asset configuration.
         | 
| 214 | 
            +
                  # --
         | 
| 157 215 | 
             
                  def asset_config
         | 
| 158 216 | 
             
                    jekyll.config["assets"] ||= {}
         | 
| 159 217 | 
             
                  end
         | 
| 160 218 |  | 
| 161 | 
            -
                  #  | 
| 162 | 
            -
             | 
| 219 | 
            +
                  # --
         | 
| 220 | 
            +
                  # Whether or not we are digesting.
         | 
| 221 | 
            +
                  # @return [true,false]
         | 
| 222 | 
            +
                  # --
         | 
| 163 223 | 
             
                  def digest?
         | 
| 164 224 | 
             
                    !!asset_config[
         | 
| 165 225 | 
             
                      "digest"
         | 
| 166 226 | 
             
                    ]
         | 
| 167 227 | 
             
                  end
         | 
| 168 228 |  | 
| 169 | 
            -
                  #  | 
| 229 | 
            +
                  # --
         | 
| 170 230 | 
             
                  # Prefix path prefixes the path with the baseurl and the cdn if it
         | 
| 171 231 | 
             
                  # exists and is in the right mode to use it.  Otherwise it will only use
         | 
| 172 | 
            -
                  # the baseurl and asset prefix.  All of these can be adjusted | 
| 173 | 
            -
                  #  | 
| 174 | 
            -
             | 
| 232 | 
            +
                  # the baseurl and asset prefix.  All of these can be adjusted...
         | 
| 233 | 
            +
                  # @param [String,Pathname,Pathutil] path the path to prefix.
         | 
| 234 | 
            +
                  # @return [Pathname,Pathutil,String]
         | 
| 235 | 
            +
                  # --
         | 
| 175 236 | 
             
                  def prefix_path(path = nil)
         | 
| 176 237 | 
             
                    cdn = asset_config["cdn"]
         | 
| 177 238 | 
             
                    base_url = baseurl
         | 
| @@ -184,32 +245,42 @@ module Jekyll | |
| 184 245 | 
             
                    url.chomp("/")
         | 
| 185 246 | 
             
                  end
         | 
| 186 247 |  | 
| 187 | 
            -
                  # ----------------------------------------------------------------------
         | 
| 188 248 |  | 
| 249 | 
            +
                  # --
         | 
| 250 | 
            +
                  # Sprockets cached instance.
         | 
| 251 | 
            +
                  # @return [Cached]
         | 
| 252 | 
            +
                  # --
         | 
| 189 253 | 
             
                  def cached
         | 
| 190 254 | 
             
                    return @cached ||= Cached.new(
         | 
| 191 255 | 
             
                      self
         | 
| 192 256 | 
             
                    )
         | 
| 193 257 | 
             
                  end
         | 
| 194 258 |  | 
| 195 | 
            -
                  #  | 
| 196 | 
            -
             | 
| 259 | 
            +
                  # --
         | 
| 260 | 
            +
                  # The manifest we use to pull assets.
         | 
| 261 | 
            +
                  # @return [Manifest]
         | 
| 262 | 
            +
                  # --
         | 
| 197 263 | 
             
                  def manifest
         | 
| 198 264 | 
             
                    return @manifest ||= Manifest.new(self, jekyll.in_dest_dir(
         | 
| 199 265 | 
             
                      asset_config["prefix"]
         | 
| 200 266 | 
             
                    ))
         | 
| 201 267 | 
             
                  end
         | 
| 202 268 |  | 
| 203 | 
            -
                  #  | 
| 269 | 
            +
                  # --
         | 
| 204 270 | 
             
                  # Write assets with the manifest if they aren't proxied assets.  If
         | 
| 205 271 | 
             
                  # they are then we go on to write them ourselves.  We don't necessarily
         | 
| 206 272 | 
             
                  # integrate with the manifest that deeply because it's hard.
         | 
| 207 | 
            -
                  #  | 
| 208 | 
            -
             | 
| 273 | 
            +
                  # --
         | 
| 209 274 | 
             
                  def write_all
         | 
| 210 | 
            -
                    assets =  | 
| 211 | 
            -
                     | 
| 212 | 
            -
             | 
| 275 | 
            +
                    assets = manifest.all.partition { |v| v.is_a?(Liquid::Tag::ProxiedAsset) }
         | 
| 276 | 
            +
                    manifest.compile(assets.last.map(
         | 
| 277 | 
            +
                      &:logical_path
         | 
| 278 | 
            +
                    ))
         | 
| 279 | 
            +
             | 
| 280 | 
            +
                    # Proxied assets will not compile the normal way since they are
         | 
| 281 | 
            +
                    # always considered uniq when used, and they supply their own inline
         | 
| 282 | 
            +
                    # caching, so we always write them individually since they will
         | 
| 283 | 
            +
                    # never actually show up inside of the manifest.
         | 
| 213 284 |  | 
| 214 285 | 
             
                    assets.first.map do |asset|
         | 
| 215 286 | 
             
                      asset.write_to(jekyll.in_dest_dir(File.join(asset_config["prefix"],
         | 
| @@ -218,8 +289,9 @@ module Jekyll | |
| 218 289 | 
             
                    end
         | 
| 219 290 | 
             
                  end
         | 
| 220 291 |  | 
| 221 | 
            -
                  #  | 
| 222 | 
            -
             | 
| 292 | 
            +
                  # --
         | 
| 293 | 
            +
                  # Undocumented
         | 
| 294 | 
            +
                  # --
         | 
| 223 295 | 
             
                  private
         | 
| 224 296 | 
             
                  def strip_path(path)
         | 
| 225 297 | 
             
                    path.sub(jekyll.in_source_dir("/"), "")
         | 
| @@ -1,17 +1,25 @@ | |
| 1 | 
            -
            # ----------------------------------------------------------------------------
         | 
| 2 1 | 
             
            # Frozen-string-literal: true
         | 
| 3 2 | 
             
            # Copyright: 2012 - 2016 - MIT License
         | 
| 4 3 | 
             
            # Encoding: utf-8
         | 
| 5 | 
            -
            # ----------------------------------------------------------------------------
         | 
| 6 4 |  | 
| 7 5 | 
             
            Jekyll::Assets::Hook.register :env, :init do
         | 
| 8 | 
            -
               | 
| 9 | 
            -
             | 
| 6 | 
            +
              cache = asset_config.fetch("cache", ".asset-cache")
         | 
| 7 | 
            +
              type  = asset_config.fetch("cache_type",
         | 
| 8 | 
            +
                "filesystem"
         | 
| 10 9 | 
             
              )
         | 
| 11 10 |  | 
| 12 | 
            -
              if  | 
| 13 | 
            -
                self.cache =  | 
| 14 | 
            -
                   | 
| 15 | 
            -
             | 
| 11 | 
            +
              if cache != false && type != "memory"
         | 
| 12 | 
            +
                self.cache = begin
         | 
| 13 | 
            +
                  Sprockets::Cache::FileStore.new(
         | 
| 14 | 
            +
                    jekyll.in_source_dir(
         | 
| 15 | 
            +
                      cache
         | 
| 16 | 
            +
                    )
         | 
| 17 | 
            +
                  )
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              elsif cache && type == "memory"
         | 
| 21 | 
            +
                self.cache = begin
         | 
| 22 | 
            +
                  Sprockets::Cache::MemoryStore.new
         | 
| 23 | 
            +
                end
         | 
| 16 24 | 
             
              end
         | 
| 17 25 | 
             
            end
         | 
| @@ -115,7 +115,7 @@ module Jekyll | |
| 115 115 |  | 
| 116 116 | 
             
                    private
         | 
| 117 117 | 
             
                    def process_tag(args, sprockets, asset)
         | 
| 118 | 
            -
                      sprockets. | 
| 118 | 
            +
                      sprockets.manifest.add(asset) unless @tag == "asset_source"
         | 
| 119 119 | 
             
                      Defaults.set_defaults_for!(@tag, args ||= {}, asset, sprockets)
         | 
| 120 120 | 
             
                      build_html(args, sprockets, asset)
         | 
| 121 121 | 
             
                    end
         | 
    
        data/lib/jekyll/assets/logger.rb
    CHANGED
    
    | @@ -9,52 +9,65 @@ module Jekyll | |
| 9 9 | 
             
                class Logger
         | 
| 10 10 | 
             
                  PREFIX = "Jekyll Assets:"
         | 
| 11 11 |  | 
| 12 | 
            +
                  class << self
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                    # --
         | 
| 15 | 
            +
                    # @param [String] msg the message you wish to send out.
         | 
| 16 | 
            +
                    # Deprecate a method and warn the user about it.
         | 
| 17 | 
            +
                    # --
         | 
| 18 | 
            +
                    def deprecate(msg, instance)
         | 
| 19 | 
            +
                      filepath = caller[1].split(/\.rb:/).first + ".rb"
         | 
| 20 | 
            +
                      filepath = Pathutil.new(filepath).relative_path_from(instance.in_source_dir)
         | 
| 21 | 
            +
                      Jekyll.logger.error("", format("%s: %s", msg.red, filepath))
         | 
| 22 | 
            +
                      yield if block_given?
         | 
| 23 | 
            +
                    end
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  # --
         | 
| 27 | 
            +
                  # @return [Jekyll:Logger]
         | 
| 28 | 
            +
                  # The logger.
         | 
| 29 | 
            +
                  # --
         | 
| 12 30 | 
             
                  def log
         | 
| 13 | 
            -
                    @ | 
| 31 | 
            +
                    return @log ||= Jekyll.logger
         | 
| 14 32 | 
             
                  end
         | 
| 15 33 |  | 
| 16 | 
            -
                  #  | 
| 34 | 
            +
                  # --
         | 
| 17 35 | 
             
                  # Log Level: 1
         | 
| 18 | 
            -
                  #  | 
| 19 | 
            -
             | 
| 36 | 
            +
                  # --
         | 
| 20 37 | 
             
                  def warn(msg = nil)
         | 
| 21 38 | 
             
                    log.warn(PREFIX,
         | 
| 22 39 | 
             
                      block_given?? yield : msg
         | 
| 23 40 | 
             
                    )
         | 
| 24 41 | 
             
                  end
         | 
| 25 42 |  | 
| 26 | 
            -
                  #  | 
| 43 | 
            +
                  # --
         | 
| 27 44 | 
             
                  # Log Level: 1
         | 
| 28 | 
            -
                  #  | 
| 29 | 
            -
             | 
| 45 | 
            +
                  # --
         | 
| 30 46 | 
             
                  def error(msg = nil)
         | 
| 31 47 | 
             
                    log.error(PREFIX,
         | 
| 32 48 | 
             
                      block_given?? yield : msg
         | 
| 33 49 | 
             
                    )
         | 
| 34 50 | 
             
                  end
         | 
| 35 51 |  | 
| 36 | 
            -
                  #  | 
| 52 | 
            +
                  # --
         | 
| 37 53 | 
             
                  # Log Level: 2
         | 
| 38 | 
            -
                  #  | 
| 39 | 
            -
             | 
| 54 | 
            +
                  # --
         | 
| 40 55 | 
             
                  def info(msg = nil)
         | 
| 41 56 | 
             
                    log.info(PREFIX,
         | 
| 42 57 | 
             
                      block_given?? yield : msg
         | 
| 43 58 | 
             
                    )
         | 
| 44 59 | 
             
                  end
         | 
| 45 60 |  | 
| 46 | 
            -
                  #  | 
| 61 | 
            +
                  # --
         | 
| 47 62 | 
             
                  # Log Level: 3
         | 
| 48 | 
            -
                  #  | 
| 49 | 
            -
             | 
| 63 | 
            +
                  # --
         | 
| 50 64 | 
             
                  def debug(msg = nil)
         | 
| 51 65 | 
             
                    log.debug(PREFIX,
         | 
| 52 66 | 
             
                      block_given?? yield : msg
         | 
| 53 67 | 
             
                    )
         | 
| 54 68 | 
             
                  end
         | 
| 55 69 |  | 
| 56 | 
            -
                  #  | 
| 57 | 
            -
             | 
| 70 | 
            +
                  # --
         | 
| 58 71 | 
             
                  def log_level=(*)
         | 
| 59 72 | 
             
                    raise "Please set log levels on Jekyll.logger"
         | 
| 60 73 | 
             
                  end
         | 
| @@ -1,18 +1,40 @@ | |
| 1 | 
            -
            # ----------------------------------------------------------------------------
         | 
| 2 1 | 
             
            # Frozen-string-literal: true
         | 
| 3 2 | 
             
            # Copyright: 2012 - 2016 - MIT License
         | 
| 4 3 | 
             
            # Encoding: utf-8
         | 
| 5 | 
            -
            # ----------------------------------------------------------------------------
         | 
| 6 4 |  | 
| 7 5 | 
             
            module Jekyll
         | 
| 8 6 | 
             
              module Assets
         | 
| 7 | 
            +
                class Manifest < Sprockets::Manifest
         | 
| 8 | 
            +
                  extend Forwardable::Extended
         | 
| 9 | 
            +
                  rb_delegate :add, {
         | 
| 10 | 
            +
                    :to => :used
         | 
| 11 | 
            +
                  }
         | 
| 9 12 |  | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 13 | 
            +
                  # --
         | 
| 14 | 
            +
                  # The assets to be compiled.
         | 
| 15 | 
            +
                  # @return [Set]
         | 
| 16 | 
            +
                  # --
         | 
| 17 | 
            +
                  def used
         | 
| 18 | 
            +
                    @assets ||= Set.new
         | 
| 19 | 
            +
                  end
         | 
| 14 20 |  | 
| 15 | 
            -
             | 
| 21 | 
            +
                  # --
         | 
| 22 | 
            +
                  # All the assets, plus the used.
         | 
| 23 | 
            +
                  # @return [Set]
         | 
| 24 | 
            +
                  # --
         | 
| 25 | 
            +
                  def all
         | 
| 26 | 
            +
                    @assets | (files.map do |_, v|
         | 
| 27 | 
            +
                      find(v[
         | 
| 28 | 
            +
                        "logical_path"
         | 
| 29 | 
            +
                      ]).first
         | 
| 30 | 
            +
                    end)
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  # --
         | 
| 34 | 
            +
                  # This is a wholesale rip of Sprockets::Manifest#compkle, we only
         | 
| 35 | 
            +
                  # adjust it to care about whether or not we want to digest, we don't
         | 
| 36 | 
            +
                  # always digest in development.
         | 
| 37 | 
            +
                  # --
         | 
| 16 38 | 
             
                  def compile(*args)
         | 
| 17 39 | 
             
                    unless environment
         | 
| 18 40 | 
             
                      raise(
         | 
| @@ -1,11 +1,9 @@ | |
| 1 | 
            -
            # ----------------------------------------------------------------------------
         | 
| 2 1 | 
             
            # Frozen-string-literal: true
         | 
| 3 2 | 
             
            # Copyright: 2012 - 2016 - MIT License
         | 
| 4 3 | 
             
            # Encoding: utf-8
         | 
| 5 | 
            -
            # ----------------------------------------------------------------------------
         | 
| 6 4 |  | 
| 7 5 | 
             
            module Jekyll
         | 
| 8 6 | 
             
              module Assets
         | 
| 9 | 
            -
                VERSION="2.2. | 
| 7 | 
            +
                VERSION="2.2.3"
         | 
| 10 8 | 
             
              end
         | 
| 11 9 | 
             
            end
         |