summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-07-24 09:00:23 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-12-27 18:44:47 +0100
commit3cdf19e9b7e46c57a9bb43ff02199177feb55768 (patch)
treed05e3dc15824c8eeef3e5455193d2d6328621f47
parent02f2735f68e1bb2e2c412698755d52c4d396f237 (diff)
:sparkles: Implement Page bundling and image handling
This commit is not the smallest in Hugo's history. Some hightlights include: * Page bundles (for complete articles, keeping images and content together etc.). * Bundled images can be processed in as many versions/sizes as you need with the three methods `Resize`, `Fill` and `Fit`. * Processed images are cached inside `resources/_gen/images` (default) in your project. * Symbolic links (both files and dirs) are now allowed anywhere inside /content * A new table based build summary * The "Total in nn ms" now reports the total including the handling of the files inside /static. So if it now reports more than you're used to, it is just **more real** and probably faster than before (see below). A site building benchmark run compared to `v0.31.1` shows that this should be slightly faster and use less memory: ```bash ▶ ./benchSite.sh "TOML,num_langs=.*,num_root_sections=5,num_pages=(500|1000),tags_per_page=5,shortcodes,render" benchmark old ns/op new ns/op delta BenchmarkSiteBuilding/TOML,num_langs=1,num_root_sections=5,num_pages=500,tags_per_page=5,shortcodes,render-4 101785785 78067944 -23.30% BenchmarkSiteBuilding/TOML,num_langs=1,num_root_sections=5,num_pages=1000,tags_per_page=5,shortcodes,render-4 185481057 149159919 -19.58% BenchmarkSiteBuilding/TOML,num_langs=3,num_root_sections=5,num_pages=500,tags_per_page=5,shortcodes,render-4 103149918 85679409 -16.94% BenchmarkSiteBuilding/TOML,num_langs=3,num_root_sections=5,num_pages=1000,tags_per_page=5,shortcodes,render-4 203515478 169208775 -16.86% benchmark old allocs new allocs delta BenchmarkSiteBuilding/TOML,num_langs=1,num_root_sections=5,num_pages=500,tags_per_page=5,shortcodes,render-4 532464 391539 -26.47% BenchmarkSiteBuilding/TOML,num_langs=1,num_root_sections=5,num_pages=1000,tags_per_page=5,shortcodes,render-4 1056549 772702 -26.87% BenchmarkSiteBuilding/TOML,num_langs=3,num_root_sections=5,num_pages=500,tags_per_page=5,shortcodes,render-4 555974 406630 -26.86% BenchmarkSiteBuilding/TOML,num_langs=3,num_root_sections=5,num_pages=1000,tags_per_page=5,shortcodes,render-4 1086545 789922 -27.30% benchmark old bytes new bytes delta BenchmarkSiteBuilding/TOML,num_langs=1,num_root_sections=5,num_pages=500,tags_per_page=5,shortcodes,render-4 53243246 43598155 -18.12% BenchmarkSiteBuilding/TOML,num_langs=1,num_root_sections=5,num_pages=1000,tags_per_page=5,shortcodes,render-4 105811617 86087116 -18.64% BenchmarkSiteBuilding/TOML,num_langs=3,num_root_sections=5,num_pages=500,tags_per_page=5,shortcodes,render-4 54558852 44545097 -18.35% BenchmarkSiteBuilding/TOML,num_langs=3,num_root_sections=5,num_pages=1000,tags_per_page=5,shortcodes,render-4 106903858 86978413 -18.64% ``` Fixes #3651 Closes #3158 Fixes #1014 Closes #2021 Fixes #1240 Updates #3757
-rw-r--r--Gopkg.lock119
-rw-r--r--Gopkg.toml8
-rw-r--r--commands/benchmark.go9
-rw-r--r--commands/commandeer.go34
-rw-r--r--commands/convert.go135
-rw-r--r--commands/hugo.go462
-rw-r--r--commands/import_jekyll.go1
-rw-r--r--commands/list.go42
-rw-r--r--commands/list_config.go2
-rw-r--r--commands/new.go35
-rw-r--r--commands/server.go151
-rw-r--r--commands/static_syncer.go16
-rw-r--r--commands/undraft.go4
-rw-r--r--create/content_template_handler.go4
-rw-r--r--deps/deps.go10
-rw-r--r--helpers/content.go7
-rw-r--r--helpers/content_test.go22
-rw-r--r--helpers/general.go4
-rw-r--r--helpers/language.go22
-rw-r--r--helpers/path.go46
-rw-r--r--helpers/path_test.go34
-rw-r--r--helpers/pathspec.go36
-rw-r--r--helpers/processing_stats.go116
-rw-r--r--hugolib/alias.go2
-rw-r--r--hugolib/alias_test.go4
-rw-r--r--hugolib/config.go12
-rw-r--r--hugolib/datafiles_test.go31
-rw-r--r--hugolib/fileInfo.go109
-rw-r--r--hugolib/fileInfo_test.go61
-rw-r--r--hugolib/handler_base.go65
-rw-r--r--hugolib/handler_file.go59
-rw-r--r--hugolib/handler_meta.go128
-rw-r--r--hugolib/handler_page.go157
-rw-r--r--hugolib/handler_test.go77
-rw-r--r--hugolib/hugo_sites.go337
-rw-r--r--hugolib/hugo_sites_build.go34
-rw-r--r--hugolib/hugo_sites_build_test.go100
-rw-r--r--hugolib/hugo_sites_multihost_test.go5
-rw-r--r--hugolib/hugolib.debugbin0 -> 2464730 bytes
-rw-r--r--hugolib/menu_old_test.go654
-rw-r--r--hugolib/page.go156
-rw-r--r--hugolib/page_bundler.go188
-rw-r--r--hugolib/page_bundler_capture.go683
-rw-r--r--hugolib/page_bundler_capture_test.go255
-rw-r--r--hugolib/page_bundler_handlers.go346
-rw-r--r--hugolib/page_bundler_test.go379
-rw-r--r--hugolib/page_collections.go13
-rw-r--r--hugolib/page_collections_test.go2
-rw-r--r--hugolib/page_output.go74
-rw-r--r--hugolib/page_paths.go41
-rw-r--r--hugolib/page_paths_test.go1
-rw-r--r--hugolib/page_resource.go23
-rw-r--r--hugolib/page_test.go4
-rw-r--r--hugolib/pagination.go6
-rw-r--r--hugolib/permalinks.go11
-rw-r--r--hugolib/prune_resources.go84
-rw-r--r--hugolib/rss_test.go2
-rw-r--r--hugolib/shortcode_test.go5
-rw-r--r--hugolib/site.go729
-rw-r--r--hugolib/siteJSONEncode_test.go10
-rw-r--r--hugolib/site_render.go31
-rw-r--r--hugolib/site_sections_test.go5
-rw-r--r--hugolib/site_stats_test.go101
-rw-r--r--hugolib/site_test.go203
-rw-r--r--hugolib/site_url_test.go7
-rw-r--r--hugolib/testhelpers_test.go18
-rw-r--r--i18n/translationProvider.go20
-rw-r--r--resource/image.go551
-rw-r--r--resource/image_cache.go112
-rw-r--r--resource/image_test.go134
-rw-r--r--resource/resource.go275
-rw-r--r--resource/resource_test.go108
-rw-r--r--resource/testdata/sunset.jpgbin0 -> 90587 bytes
-rw-r--r--resource/testhelpers_test.go78
-rw-r--r--source/content_directory_test.go11
-rw-r--r--source/dirs.go11
-rw-r--r--source/file.go172
-rw-r--r--source/fileInfo.go213
-rw-r--r--source/fileInfo_test.go (renamed from source/inmemory.go)15
-rw-r--r--source/file_test.go62
-rw-r--r--source/filesystem.go108
-rw-r--r--source/filesystem_test.go66
-rw-r--r--source/lazy_file_reader.go170
-rw-r--r--source/lazy_file_reader_test.go236
-rw-r--r--source/sourceSpec.go117
85 files changed, 5747 insertions, 3243 deletions
diff --git a/Gopkg.lock b/Gopkg.lock
index 4233d9278..44f957d18 100644
--- a/Gopkg.lock
+++ b/Gopkg.lock
@@ -21,7 +21,13 @@
[[projects]]
name = "github.com/alecthomas/chroma"
- packages = [".","formatters","formatters/html","lexers","styles"]
+ packages = [
+ ".",
+ "formatters",
+ "formatters/html",
+ "lexers",
+ "styles"
+ ]
revision = "v0.2.0"
[[projects]]
@@ -54,21 +60,26 @@
version = "v1.1.0"
[[projects]]
- branch = "master"
- name = "github.com/dchest/cssmin"
+ name = "github.com/disintegration/imaging"
packages = ["."]
- revision = "fb8d9b44afdc258bfff6052d3667521babcb2239"
+ revision = "v1.2.4"
[[projects]]
name = "github.com/dlclark/regexp2"
- packages = [".","syntax"]
+ packages = [
+ ".",
+ "syntax"
+ ]
revision = "487489b64fb796de2e55f4e8a4ad1e145f80e957"
version = "v1.1.6"
[[projects]]
branch = "master"
name = "github.com/eknkc/amber"
- packages = [".","parser"]
+ packages = [
+ ".",
+ "parser"
+ ]
revision = "cdade1c073850f4ffc70a829e31235ea6892853b"
[[projects]]
@@ -104,7 +115,17 @@
[[projects]]
branch = "master"
name = "github.com/hashicorp/hcl"
- packages = [".","hcl/ast","hcl/parser","hcl/scanner","hcl/strconv","hcl/token","json/parser","json/scanner","json/token"]
+ packages = [
+ ".",
+ "hcl/ast",
+ "hcl/parser",
+ "hcl/scanner",
+ "hcl/strconv",
+ "hcl/token",
+ "json/parser",
+ "json/scanner",
+ "json/token"
+ ]
revision = "23c074d0eceb2b8a5bfdbb271ab780cde70f05a8"
[[projects]]
@@ -115,7 +136,10 @@
[[projects]]
name = "github.com/jdkato/prose"
- packages = ["internal/util","transform"]
+ packages = [
+ "internal/util",
+ "transform"
+ ]
revision = "20d3663d4bc9dd10d75abcde9d92e04b4861c674"
version = "v1.1.0"
@@ -133,7 +157,10 @@
[[projects]]
name = "github.com/magefile/mage"
- packages = ["mg","sh"]
+ packages = [
+ "mg",
+ "sh"
+ ]
revision = "2f974307b636f59c13b88704cf350a4772fef271"
version = "v1.0.2"
@@ -150,6 +177,12 @@
revision = "54ffb37507cd7d2ccd4768855e84f9ff6c4352b6"
[[projects]]
+ name = "github.com/mattn/go-runewidth"
+ packages = ["."]
+ revision = "9e777a8366cce605130a531d2cd6363d07ad7317"
+ version = "v0.0.2"
+
+[[projects]]
name = "github.com/miekg/mmark"
packages = ["."]
revision = "fd2f6c1403b37925bd7fe13af05853b8ae58ee5f"
@@ -163,11 +196,21 @@
[[projects]]
name = "github.com/nicksnyder/go-i18n"
- packages = ["i18n/bundle","i18n/language","i18n/translation"]
+ packages = [
+ "i18n/bundle",
+ "i18n/language",
+ "i18n/translation"
+ ]
revision = "0dc1626d56435e9d605a29875701721c54bc9bbd"
version = "v1.10.0"
[[projects]]
+ branch = "master"
+ name = "github.com/olekukonko/tablewriter"
+ packages = ["."]
+ revision = "65fec0d89a572b4367094e2058d3ebe667de3b60"
+
+[[projects]]
name = "github.com/pelletier/go-toml"
packages = ["."]
revision = "16398bac157da96aa88f98a2df640c7f32af1da2"
@@ -193,7 +236,10 @@
[[projects]]
name = "github.com/spf13/afero"
- packages = [".","mem"]
+ packages = [
+ ".",
+ "mem"
+ ]
revision = "8d919cbe7e2627e417f3e45c3c0e489a5b7e2536"
version = "v1.0.0"
@@ -206,7 +252,10 @@
[[projects]]
branch = "master"
name = "github.com/spf13/cobra"
- packages = [".","doc"]
+ packages = [
+ ".",
+ "doc"
+ ]
revision = "7b2c5ac9fc04fc5efafb60700713d4fa609b777b"
[[projects]]
@@ -241,7 +290,10 @@
[[projects]]
name = "github.com/stretchr/testify"
- packages = ["assert","require"]
+ packages = [
+ "assert",
+ "require"
+ ]
revision = "69483b4bd14f5845b5a1e55bca19e954e827f1d0"
version = "v1.1.4"
@@ -254,17 +306,34 @@
[[projects]]
branch = "master"
name = "golang.org/x/image"
- packages = ["riff","vp8","vp8l","webp"]
+ packages = [
+ "bmp",
+ "riff",
+ "tiff",
+ "tiff/lzw",
+ "vp8",
+ "vp8l",
+ "webp"
+ ]
revision = "f7e31b4ea2e3413ab91b4e7d2dc83e5f8d19a44c"
[[projects]]
branch = "master"
name = "golang.org/x/net"
- packages = ["idna"]
+ packages = [
+ "context",
+ "idna"
+ ]
revision = "cd69bc3fc700721b709c3a59e16e24c67b58f6ff"
[[projects]]
branch = "master"
+ name = "golang.org/x/sync"
+ packages = ["errgroup"]
+ revision = "fd80eb99c8f653c847d294a001bdf2a3a6f768f5"
+
+[[projects]]
+ branch = "master"
name = "golang.org/x/sys"
packages = ["unix"]
revision = "8dbc5d05d6edcc104950cc299a1ce6641235bc86"
@@ -272,7 +341,23 @@
[[projects]]
branch = "master"
name = "golang.org/x/text"
- packages = ["collate","collate/build","internal/colltab","internal/gen","internal/tag","internal/triegen","internal/ucd","language","secure/bidirule","transform","unicode/bidi","unicode/cldr","unicode/norm","unicode/rangetable","width"]
+ packages = [
+ "collate",
+ "collate/build",
+ "internal/colltab",
+ "internal/gen",
+ "internal/tag",
+ "internal/triegen",
+ "internal/ucd",
+ "language",
+ "secure/bidirule",
+ "transform",
+ "unicode/bidi",
+ "unicode/cldr",
+ "unicode/norm",
+ "unicode/rangetable",
+ "width"
+ ]
revision = "c01e4764d870b77f8abe5096ee19ad20d80e8075"
[[projects]]
@@ -284,6 +369,6 @@
[solve-meta]
analyzer-name = "dep"
analyzer-version = 1
- inputs-digest = "d75b02c8a7c7d724120447dd438e7bef140d0f4d4986adda52eabbfe3db8271a"
+ inputs-digest = "2d9c34c260bc26814a0635c93009daeb9d8ffa56c29c0cff6827ae2d3e9ef96d"
solver-name = "gps-cdcl"
solver-version = 1
diff --git a/Gopkg.toml b/Gopkg.toml
index c8f192974..cef7427ce 100644
--- a/Gopkg.toml
+++ b/Gopkg.toml
@@ -21,8 +21,8 @@
revision = "v1.1.0"
[[constraint]]
- branch = "master"
- name = "github.com/dchest/cssmin"
+ name = "github.com/disintegration/imaging"
+ revision = "v1.2.4"