URI: 
       resource: Avoid processing and storing same image for each language - hugo - [fork] hugo port for 9front
  HTML git clone git@git.drkhsh.at/hugo.git
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
   DIR README
   DIR LICENSE
       ---
   DIR commit 4b04db0f0855a1f54895d6c93c52dcea4b1ce3ca
   DIR parent 97c1866e322284dec46db6f3d235807507f5b69f
  HTML Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
       Date:   Sun,  7 Jan 2018 11:29:02 +0100
       
       resource: Avoid processing and storing same image for each language
       
       Fixes #4231
       
       Diffstat:
         M resource/image.go                   |       2 +-
         M resource/image_cache.go             |      11 ++++++++++-
       
       2 files changed, 11 insertions(+), 2 deletions(-)
       ---
   DIR diff --git a/resource/image.go b/resource/image.go
       @@ -219,7 +219,7 @@ func (i *Image) doWithImageConfig(action, spec string, f func(src image.Image, c
                        }
        
                        if conf.Rotate != 0 {
       -                        // Rotate it befor any scaling to get the dimensions correct.
       +                        // Rotate it before any scaling to get the dimensions correct.
                                src = imaging.Rotate(src, float64(conf.Rotate), color.Transparent)
                        }
        
   DIR diff --git a/resource/image_cache.go b/resource/image_cache.go
       @@ -51,6 +51,15 @@ func (c *imageCache) deleteByPrefix(prefix string) {
        
        func (c *imageCache) getOrCreate(
                spec *Spec, key string, create func(resourceCacheFilename string) (*Image, error)) (*Image, error) {
       +
       +        relTargetFilename := key
       +
       +        if c.pathSpec.Language != nil {
       +                // Avoid do and store more work than needed. The language versions will in
       +                // most cases be duplicates of the same image files.
       +                key = strings.TrimPrefix(key, "/"+c.pathSpec.Language.Lang)
       +        }
       +
                // First check the in-memory store, then the disk.
                c.mu.RLock()
                img, found := c.store[key]
       @@ -68,7 +77,7 @@ func (c *imageCache) getOrCreate(
                //  but the count of processed image variations for this site.
                c.pathSpec.ProcessingStats.Incr(&c.pathSpec.ProcessingStats.ProcessedImages)
        
       -        r, err := spec.NewResourceFromFilename(nil, c.absPublishDir, cacheFilename, key)
       +        r, err := spec.NewResourceFromFilename(nil, c.absPublishDir, cacheFilename, relTargetFilename)
                notFound := err != nil && os.IsNotExist(err)
                if err != nil && !os.IsNotExist(err) {
                        return nil, err