2018-04-09 13:36:10 -04:00
|
|
|
// Copyright 2018 The Hugo Authors. All rights reserved.
|
2015-02-08 10:11:04 -05:00
|
|
|
//
|
2015-11-23 22:16:36 -05:00
|
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
2014-05-02 01:06:01 -04:00
|
|
|
// you may not use this file except in compliance with the License.
|
|
|
|
// You may obtain a copy of the License at
|
2015-11-23 22:16:36 -05:00
|
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
2014-05-02 01:06:01 -04:00
|
|
|
//
|
|
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
// See the License for the specific language governing permissions and
|
|
|
|
// limitations under the License.
|
|
|
|
|
|
|
|
package commands
|
|
|
|
|
|
|
|
import (
|
2014-05-08 18:30:11 -04:00
|
|
|
"bytes"
|
|
|
|
"os"
|
|
|
|
"path/filepath"
|
2014-05-02 01:06:01 -04:00
|
|
|
"strings"
|
|
|
|
|
2017-06-13 12:42:45 -04:00
|
|
|
"github.com/gohugoio/hugo/create"
|
|
|
|
"github.com/gohugoio/hugo/helpers"
|
|
|
|
"github.com/gohugoio/hugo/hugolib"
|
2017-06-13 13:07:35 -04:00
|
|
|
"github.com/spf13/afero"
|
|
|
|
"github.com/spf13/cobra"
|
2014-05-02 01:06:01 -04:00
|
|
|
jww "github.com/spf13/jwalterweatherman"
|
|
|
|
)
|
|
|
|
|
2018-04-09 13:36:10 -04:00
|
|
|
var _ cmder = (*newCmd)(nil)
|
|
|
|
|
|
|
|
type newCmd struct {
|
2018-04-10 13:16:09 -04:00
|
|
|
hugoBuilderCommon
|
2016-03-14 10:24:42 -04:00
|
|
|
contentEditor string
|
|
|
|
contentType string
|
2016-02-05 12:41:40 -05:00
|
|
|
|
2018-04-10 03:19:26 -04:00
|
|
|
*baseCmd
|
2014-05-02 01:06:01 -04:00
|
|
|
}
|
|
|
|
|
2018-04-09 13:36:10 -04:00
|
|
|
func newNewCmd() *newCmd {
|
2018-04-10 13:16:09 -04:00
|
|
|
cc := &newCmd{}
|
|
|
|
cc.baseCmd = newBaseCmd(&cobra.Command{
|
2018-04-09 13:36:10 -04:00
|
|
|
Use: "new [path]",
|
|
|
|
Short: "Create new content for your site",
|
|
|
|
Long: `Create a new content file and automatically set the date and title.
|
2014-05-02 01:06:01 -04:00
|
|
|
It will guess which kind of file to create based on the path provided.
|
2015-08-04 05:15:12 -04:00
|
|
|
|
|
|
|
You can also specify the kind with ` + "`-k KIND`" + `.
|
|
|
|
|
|
|
|
If archetypes are provided in your theme or site, they will be used.`,
|
|
|
|
|
2018-04-10 13:16:09 -04:00
|
|
|
RunE: cc.newContent,
|
|
|
|
})
|
2014-05-02 01:06:01 -04:00
|
|
|
|
2018-04-10 13:16:09 -04:00
|
|
|
cc.cmd.Flags().StringVarP(&cc.contentType, "kind", "k", "", "content type to create")
|
|
|
|
cc.cmd.PersistentFlags().StringVarP(&cc.source, "source", "s", "", "filesystem path to read files relative from")
|
|
|
|
cc.cmd.PersistentFlags().SetAnnotation("source", cobra.BashCompSubdirsInDir, []string{})
|
|
|
|
cc.cmd.Flags().StringVar(&cc.contentEditor, "editor", "", "edit new content with this editor, if provided")
|
2018-04-09 13:36:10 -04:00
|
|
|
|
2018-04-10 13:16:09 -04:00
|
|
|
cc.cmd.AddCommand(newNewSiteCmd().getCommand())
|
|
|
|
cc.cmd.AddCommand(newNewThemeCmd().getCommand())
|
2014-05-08 18:30:11 -04:00
|
|
|
|
2018-04-10 13:16:09 -04:00
|
|
|
return cc
|
2014-05-08 18:30:11 -04:00
|
|
|
}
|
|
|
|
|
2018-04-09 13:36:10 -04:00
|
|
|
func (n *newCmd) newContent(cmd *cobra.Command, args []string) error {
|
: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
2017-07-24 03:00:23 -04:00
|
|
|
cfgInit := func(c *commandeer) error {
|
|
|
|
if cmd.Flags().Changed("editor") {
|
2018-04-09 13:36:10 -04:00
|
|
|
c.Set("newContentEditor", n.contentEditor)
|
: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
2017-07-24 03:00:23 -04:00
|
|
|
}
|
|
|
|
return nil
|
2015-12-02 05:42:53 -05:00
|
|
|
}
|
2014-05-02 01:06:01 -04:00
|
|
|
|
2018-04-10 13:16:09 -04:00
|
|
|
c, err := initializeConfig(false, &n.hugoBuilderCommon, n, cfgInit)
|
: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
2017-07-24 03:00:23 -04:00
|
|
|
|
2017-03-25 09:37:04 -04:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
2017-02-04 22:20:06 -05:00
|
|
|
|
2014-05-02 01:06:01 -04:00
|
|
|
if len(args) < 1 {
|
2015-12-02 05:42:53 -05:00
|
|
|
return newUserError("path needs to be provided")
|
2014-05-02 01:06:01 -04:00
|
|
|
}
|
|
|
|
|
2017-03-24 03:14:14 -04:00
|
|
|
createPath := args[0]
|
2014-05-02 01:06:01 -04:00
|
|
|
|
|
|
|
var kind string
|
|
|
|
|
2017-03-24 03:14:14 -04:00
|
|
|
createPath, kind = newContentPathSection(createPath)
|
2014-05-02 01:06:01 -04:00
|
|
|
|
2018-04-09 13:36:10 -04:00
|
|
|
if n.contentType != "" {
|
|
|
|
kind = n.contentType
|
2014-05-02 01:06:01 -04:00
|
|
|
}
|
|
|
|
|
: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
2017-07-24 03:00:23 -04:00
|
|
|
cfg := c.DepsCfg
|
|
|
|
|
2017-06-18 13:39:42 -04:00
|
|
|
ps, err := helpers.NewPathSpec(cfg.Fs, cfg.Cfg)
|
2017-01-10 04:55:03 -05:00
|
|
|
if err != nil {
|
2017-06-18 13:39:42 -04:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
// If a site isn't in use in the archetype template, we can skip the build.
|
|
|
|
siteFactory := func(filename string, siteUsed bool) (*hugolib.Site, error) {
|
|
|
|
if !siteUsed {
|
|
|
|
return hugolib.NewSite(*cfg)
|
|
|
|
}
|
|
|
|
var s *hugolib.Site
|
|
|
|
if err := c.initSites(); err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
2018-04-11 02:39:39 -04:00
|
|
|
if err := c.hugo.Build(hugolib.BuildCfg{SkipRender: true}); err != nil {
|
2017-06-18 13:39:42 -04:00
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
2018-04-11 02:39:39 -04:00
|
|
|
s = c.hugo.Sites[0]
|
2017-06-18 13:39:42 -04:00
|
|
|
|
2018-04-11 02:39:39 -04:00
|
|
|
if len(c.hugo.Sites) > 1 {
|
2017-06-18 13:39:42 -04:00
|
|
|
// Find the best match.
|
2018-04-11 02:39:39 -04:00
|
|
|
for _, ss := range c.hugo.Sites {
|
2017-06-18 13:39:42 -04:00
|
|
|
if strings.Contains(createPath, "."+ss.Language.Lang) {
|
|
|
|
s = ss
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return s, nil
|
2017-01-10 04:55:03 -05:00
|
|
|
}
|
|
|
|
|
2017-06-18 13:39:42 -04:00
|
|
|
return create.NewContent(ps, siteFactory, kind, createPath)
|
2014-05-02 01:06:01 -04:00
|
|
|
}
|
|
|
|
|
2016-10-09 04:59:07 -04:00
|
|
|
func nextStepsText() string {
|
|
|
|
var nextStepsText bytes.Buffer
|
|
|
|
|
|
|
|
nextStepsText.WriteString(`Just a few more steps and you're ready to go:
|
2016-04-02 19:24:56 -04:00
|
|
|
|
2016-09-26 16:23:57 -04:00
|
|
|
1. Download a theme into the same-named folder.
|
|
|
|
Choose a theme from https://themes.gohugo.io/, or
|
|
|
|
create your own with the "hugo new theme <THEMENAME>" command.
|
|
|
|
2. Perhaps you want to add some content. You can add single files
|
2016-10-09 04:59:07 -04:00
|
|
|
with "hugo new `)
|
|
|
|
|
|
|
|
nextStepsText.WriteString(filepath.Join("<SECTIONNAME>", "<FILENAME>.<FORMAT>"))
|
|
|
|
|
|
|
|
nextStepsText.WriteString(`".
|
2016-09-26 16:23:57 -04:00
|
|
|
3. Start the built-in live server via "hugo server".
|
|
|
|
|
|
|
|
Visit https://gohugo.io/ for quickstart guide and full documentation.`)
|
2015-12-16 22:41:33 -05:00
|
|
|
|
2016-10-09 04:59:07 -04:00
|
|
|
return nextStepsText.String()
|
2015-09-25 17:39:46 -04:00
|
|
|
}
|
|
|
|
|
2014-05-08 18:30:11 -04:00
|
|
|
func mkdir(x ...string) {
|
2014-11-06 11:56:14 -05:00
|
|
|
p := filepath.Join(x...)
|
2014-05-08 18:30:11 -04:00
|
|
|
|
2015-02-08 10:11:04 -05:00
|
|
|
err := os.MkdirAll(p, 0777) // before umask
|
2014-05-08 18:30:11 -04:00
|
|
|
if err != nil {
|
|
|
|
jww.FATAL.Fatalln(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-01-10 04:55:03 -05:00
|
|
|
func touchFile(fs afero.Fs, x ...string) {
|
2014-11-06 11:56:14 -05:00
|
|
|
inpath := filepath.Join(x...)
|
2014-05-08 18:30:11 -04:00
|
|
|
mkdir(filepath.Dir(inpath))
|
2017-01-10 04:55:03 -05:00
|
|
|
err := helpers.WriteToDisk(inpath, bytes.NewReader([]byte{}), fs)
|
2014-05-08 18:30:11 -04:00
|
|
|
if err != nil {
|
|
|
|
jww.FATAL.Fatalln(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-05-12 12:12:58 -04:00
|
|
|
func newContentPathSection(path string) (string, string) {
|
|
|
|
// Forward slashes is used in all examples. Convert if needed.
|
|
|
|
// Issue #1133
|
2017-01-10 04:55:03 -05:00
|
|
|
createpath := filepath.FromSlash(path)
|
2015-05-12 12:12:58 -04:00
|
|
|
var section string
|
|
|
|
// assume the first directory is the section (kind)
|
|
|
|
if strings.Contains(createpath[1:], helpers.FilePathSeparator) {
|
: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
2017-07-24 03:00:23 -04:00
|
|
|
parts := strings.Split(strings.TrimPrefix(createpath, helpers.FilePathSeparator), helpers.FilePathSeparator)
|
|
|
|
if len(parts) > 0 {
|
|
|
|
section = parts[0]
|
|
|
|
}
|
|
|
|
|
2015-05-12 12:12:58 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
return createpath, section
|
|
|
|
}
|