summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--.travis.yml5
-rw-r--r--CONTRIBUTING.md6
-rwxr-xr-x[-rw-r--r--]Dockerfile0
-rw-r--r--Gopkg.lock66
-rw-r--r--Gopkg.toml20
-rw-r--r--appveyor.yml8
-rw-r--r--commands/commandeer.go84
-rw-r--r--commands/hugo.go92
-rw-r--r--common/errors/errors.go23
-rw-r--r--create/content_template_handler.go2
-rw-r--r--create/content_test.go3
-rw-r--r--deps/deps.go32
-rw-r--r--helpers/general.go6
-rw-r--r--helpers/path.go15
-rw-r--r--helpers/path_test.go9
-rw-r--r--helpers/testhelpers_test.go3
-rw-r--r--hugofs/basepath_real_filename_fs.go84
-rw-r--r--hugofs/hashing_fs.go96
-rw-r--r--hugofs/hashing_fs_test.go53
-rw-r--r--hugolib/alias.go7
-rw-r--r--hugolib/alias_test.go2
-rw-r--r--hugolib/config.go1
-rw-r--r--hugolib/filesystems/basefs.go231
-rw-r--r--hugolib/filesystems/basefs_test.go92
-rw-r--r--hugolib/hugo_sites.go15
-rw-r--r--hugolib/hugo_sites_build_test.go4
-rw-r--r--hugolib/page.go41
-rw-r--r--hugolib/page_bundler.go2
-rw-r--r--hugolib/page_bundler_capture_test.go6
-rw-r--r--hugolib/page_bundler_handlers.go13
-rw-r--r--hugolib/page_bundler_test.go2
-rw-r--r--hugolib/page_collections.go2
-rw-r--r--hugolib/page_output.go24
-rw-r--r--hugolib/page_paths.go6
-rw-r--r--hugolib/page_paths_test.go2
-rw-r--r--hugolib/pagination.go2
-rw-r--r--hugolib/pagination_test.go4
-rw-r--r--hugolib/paths/baseURL.go10
-rw-r--r--hugolib/paths/baseURL_test.go5
-rw-r--r--hugolib/paths/paths.go37
-rw-r--r--hugolib/paths/paths_test.go4
-rw-r--r--hugolib/prune_resources.go96
-rw-r--r--hugolib/resource_chain_test.go210
-rw-r--r--hugolib/shortcode.go10
-rw-r--r--hugolib/site.go36
-rw-r--r--hugolib/site_render.go8
-rw-r--r--hugolib/site_sections.go4
-rw-r--r--hugolib/site_sections_test.go2
-rw-r--r--hugolib/testhelpers_test.go12
-rw-r--r--i18n/i18n_test.go3
-rw-r--r--magefile.go21
-rw-r--r--media/mediaType.go28
-rw-r--r--media/mediaType_test.go14
-rw-r--r--parser/long_text_test.md526
-rw-r--r--resource/bundler/bundler.go121
-rw-r--r--resource/create/create.go77
-rw-r--r--resource/image.go70
-rw-r--r--resource/image_cache.go16
-rw-r--r--resource/image_test.go18
-rw-r--r--resource/integrity/integrity.go106
-rw-r--r--resource/integrity/integrity_test.go54
-rw-r--r--resource/minifiers/minify.go115
-rw-r--r--resource/postcss/postcss.go175
-rw-r--r--resource/resource.go691
-rw-r--r--resource/resource_cache.go241
-rw-r--r--resource/resource_metadata.go129
-rw-r--r--resource/resource_metadata_test.go230
-rw-r--r--resource/resource_test.go312
-rw-r--r--resource/templates/execute_as_template.go76
-rw-r--r--resource/testhelpers_test.go17
-rw-r--r--resource/tocss/scss/client.go101
-rw-r--r--resource/tocss/scss/tocss.go111
-rw-r--r--resource/tocss/scss/tocss_notavailable.go30
-rw-r--r--resource/transform.go487
-rw-r--r--resource/transform_test.go36
-rw-r--r--source/filesystem_test.go8
-rw-r--r--tpl/collections/apply_test.go4
-rw-r--r--tpl/os/init.go4
-rw-r--r--tpl/os/os.go2
-rw-r--r--tpl/partials/partials.go11
-rw-r--r--tpl/resources/init.go68
-rw-r--r--tpl/resources/resources.go255
-rw-r--r--tpl/template.go15
-rw-r--r--tpl/tplimpl/template.go97
-rw-r--r--tpl/tplimpl/templateFuncster.go10
-rw-r--r--tpl/tplimpl/templateProvider.go2
-rw-r--r--tpl/tplimpl/template_funcs.go12
-rw-r--r--tpl/tplimpl/template_funcs_test.go9
-rw-r--r--tpl/tplimpl/template_test.go11
90 files changed, 4686 insertions, 1126 deletions
diff --git a/.gitignore b/.gitignore
index 08e830c87..032a643c9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,5 +15,7 @@ vendor/*/
*.debug
coverage*.out
+dock.sh
+
GoBuilds
dist
diff --git a/.travis.yml b/.travis.yml
index b04528203..f398f2015 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,8 @@
language: go
sudo: false
dist: trusty
+env:
+ HUGO_BUILD_TAGS="extended"
git:
depth: false
go:
@@ -18,8 +20,9 @@ install:
- go get github.com/magefile/mage
- mage -v vendor
script:
- - mage -v hugoRace
+ - mage -v test
- mage -v check
+ - mage -v hugo
- ./hugo -s docs/
- ./hugo --renderToMemory -s docs/
before_install:
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index ad33414b5..87199a411 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -192,6 +192,12 @@ To list all available commands along with descriptions:
mage -l
```
+**Note:** From Hugo 0.43 we have added a build tag, `extended` that adds **SCSS support**. This needs a C compiler installed to build. You can enable this when building by:
+
+```bash
+HUGO_BUILD_TAGS=extended mage install
+````
+
### Updating the Hugo Sources
If you want to stay in sync with the Hugo repository, you can easily pull down
diff --git a/Dockerfile b/Dockerfile
index 919b02237..919b02237 100644..100755
--- a/Dockerfile
+++ b/Dockerfile
diff --git a/Gopkg.lock b/Gopkg.lock
index 51fb96c52..8d07f2390 100644
--- a/Gopkg.lock
+++ b/Gopkg.lock
@@ -3,6 +3,12 @@
[[projects]]
branch = "master"
+ name = "github.com/BurntSushi/locker"
+ packages = ["."]
+ revision = "a6e239ea1c69bff1cfdb20c4b73dadf52f784b6a"
+
+[[projects]]
+ branch = "master"
name = "github.com/BurntSushi/toml"
packages = ["."]
revision = "a368813c5e648fee92e5f6c30e3944ff9d5e8895"
@@ -69,6 +75,16 @@
revision = "012701e8669671499fc43e9792335a1dcbfe2afb"
[[projects]]
+ branch = "master"
+ name = "github.com/bep/go-tocss"
+ packages = [
+ "scss",
+ "scss/libsass",
+ "tocss"
+ ]
+ revision = "2abb118dc8688b6c7df44e12f4152c2bded9b19c"
+
+[[projects]]
name = "github.com/chaseadamsio/goorgeous"
packages = ["."]
revision = "dcf1ef873b8987bf12596fe6951c48347986eb2f"
@@ -109,6 +125,12 @@
[[projects]]
branch = "master"
+ name = "github.com/dsnet/golib"
+ packages = ["memfile"]
+ revision = "1ea1667757804fdcccc5a1810e09aba618885ac2"
+
+[[projects]]
+ branch = "master"
name = "github.com/eknkc/amber"
packages = [
".",
@@ -233,6 +255,12 @@
[[projects]]
branch = "master"
+ name = "github.com/mitchellh/hashstructure"
+ packages = ["."]
+ revision = "2bca23e0e452137f789efbc8610126fd8b94f73b"
+
+[[projects]]
+ branch = "master"
name = "github.com/mitchellh/mapstructure"
packages = ["."]
revision = "00c29f56e2386353d58c599509e8dc3801b0d716"
@@ -356,6 +384,42 @@
version = "v1.2.1"
[[projects]]
+ name = "github.com/tdewolff/minify"
+ packages = [
+ ".",
+ "css",
+ "html",
+ "js",
+ "json",
+ "svg",
+ "xml"
+ ]
+ revision = "8d72a4127ae33b755e95bffede9b92e396267ce2"
+ version = "v2.3.5"
+
+[[projects]]
+ name = "github.com/tdewolff/parse"
+ packages = [
+ ".",
+ "buffer",
+ "css",
+ "html",
+ "js",
+ "json",
+ "strconv",
+ "svg",
+ "xml"
+ ]
+ revision = "d739d6fccb0971177e06352fea02d3552625efb1"
+ version = "v2.3.3"
+
+[[projects]]
+ branch = "master"
+ name = "github.com/wellington/go-libsass"
+ packages = ["libs"]
+ revision = "615eaa47ef794d037c1906a0eb7bf85375a5decf"
+
+[[projects]]
name = "github.com/yosssi/ace"
packages = ["."]
revision = "ea038f4770b6746c3f8f84f14fa60d9fe1205b56"
@@ -431,6 +495,6 @@
[solve-meta]
analyzer-name = "dep"
analyzer-version = 1
- inputs-digest = "78b19539f7321429f217fc482de9e7cb4e2edd9b054ba8ec36b1e62bc4281b4f"
+ inputs-digest = "aaf909f54ae33c5a70f692e19e59834106bcbbe5d16724ff3998907734e32c0b"
solver-name = "gps-cdcl"
solver-version = 1
diff --git a/Gopkg.toml b/Gopkg.toml
index c87b82823..8e6a614f2 100644
--- a/Gopkg.toml
+++ b/Gopkg.toml
@@ -17,6 +17,14 @@
name = "github.com/bep/gitmap"
[[constraint]]
+ branch = "master"
+ name = "github.com/bep/go-tocss"
+
+[[override]]
+ branch = "master"
+ name = "github.com/wellington/go-libsass"
+
+[[constraint]]
name = "github.com/chaseadamsio/goorgeous"
version = "^1.1.0"
@@ -149,3 +157,15 @@
[[constraint]]
name = "github.com/bep/debounce"
version = "^1.1.0"
+
+[[constraint]]
+ name = "github.com/tdewolff/minify"
+ version = "^2.3.5"
+
+[[constraint]]
+ branch = "master"
+ name = "github.com/BurntSushi/locker"
+
+[[constraint]]
+ branch = "master"
+ name = "github.com/mitchellh/hashstructure"
diff --git a/appveyor.yml b/appveyor.yml
index d6fbaba1a..3feb4819f 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,8 +1,14 @@
+image: Visual Studio 2015
+
init:
- - set PATH=%PATH%;C:\MinGW\bin;%GOPATH%\bin
+ - set PATH=%PATH%;C:\mingw-w64\x86_64-7.3.0-posix-seh-rt_v5-rev0\mingw64\bin;%GOPATH%\bin
- go version
- go env
+environment:
+ GOPATH: C:\GOPATH\
+ HUGO_BUILD_TAGS: extended
+
# clones and cd's to path
clone_folder: C:\GOPATH\src\github.com\gohugoio\hugo
diff --git a/commands/commandeer.go b/commands/commandeer.go
index 4ca0c4be9..051787f6e 100644
--- a/commands/commandeer.go
+++ b/commands/commandeer.go
@@ -16,6 +16,7 @@ package commands
import (
"os"
"path/filepath"
+ "regexp"
"sync"
"time"
@@ -46,6 +47,10 @@ type commandeerHugoState struct {
type commandeer struct {
*commandeerHugoState
+ // Currently only set when in "fast render mode". But it seems to
+ // be fast enough that we could maybe just add it for all server modes.
+ changeDetector *fileChangeDetector
+
// We need to reuse this on server rebuilds.
destinationFs afero.Fs
@@ -105,6 +110,68 @@ func newCommandeer(mustHaveConfigFile, running bool, h *hugoBuilderCommon, f fla
return c, c.loadConfig(mustHaveConfigFile, running)
}
+type fileChangeDetector struct {
+ sync.Mutex
+ current map[string]string
+ prev map[string]string
+
+ irrelevantRe *regexp.Regexp
+}
+
+func (f *fileChangeDetector) OnFileClose(name, md5sum string) {
+ f.Lock()
+ defer f.Unlock()
+ f.current[name] = md5sum
+}
+
+func (f *fileChangeDetector) changed() []string {
+ if f == nil {
+ return nil
+ }
+ f.Lock()
+ defer f.Unlock()
+ var c []string
+ for k, v := range f.current {
+ vv, found := f.prev[k]
+ if !found || v != vv {
+ c = append(c, k)
+ }
+ }
+
+ return f.filterIrrelevant(c)
+}
+
+func (f *fileChangeDetector) filterIrrelevant(in []string) []string {
+ var filtered []string
+ for _, v := range in {
+ if !f.irrelevantRe.MatchString(v) {
+ filtered = append(filtered, v)
+ }
+ }