mirror of
https://github.com/gohugoio/hugo.git
synced 2026-08-24 15:28:54 +00:00
commands: Fix import from Jekyll
- Look for _config.yml, _config.yaml, or _config.toml - Fix theme submodule URL - Fix config filename in the instructions - Add tests Closes #14795 Closes #14906
This commit is contained in:
committed by
Bjørn Erik Pedersen
parent
5559263326
commit
81d77620c6
+32
-25
@@ -466,41 +466,48 @@ func (c *importCommand) importFromJekyll(args []string) error {
|
||||
c.r.Println("Now, start Hugo by yourself:")
|
||||
c.r.Println("cd " + args[1])
|
||||
c.r.Println("git init")
|
||||
c.r.Println("git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke themes/ananke")
|
||||
c.r.Println("echo \"theme = 'ananke'\" > hugo.toml")
|
||||
c.r.Println("git submodule add https://github.com/gohugo-ananke/ananke themes/ananke")
|
||||
c.r.Println("echo \"theme: ananke\" >> hugo.yaml")
|
||||
c.r.Println("hugo server")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *importCommand) loadJekyllConfig(fs afero.Fs, jekyllRoot string) map[string]any {
|
||||
path := filepath.Join(jekyllRoot, "_config.yml")
|
||||
for _, candidate := range []struct {
|
||||
filename string
|
||||
format metadecoders.Format
|
||||
}{
|
||||
{"_config.yml", metadecoders.YAML},
|
||||
{"_config.yaml", metadecoders.YAML},
|
||||
{"_config.toml", metadecoders.TOML},
|
||||
} {
|
||||
path := filepath.Join(jekyllRoot, candidate.filename)
|
||||
exists, err := helpers.Exists(path, fs)
|
||||
if err != nil || !exists {
|
||||
continue
|
||||
}
|
||||
|
||||
exists, err := helpers.Exists(path, fs)
|
||||
f, err := fs.Open(path)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
b, err := io.ReadAll(f)
|
||||
f.Close()
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
if err != nil || !exists {
|
||||
c.r.Println("_config.yaml not found: Is the specified Jekyll root correct?")
|
||||
return nil
|
||||
m, err := metadecoders.Default.UnmarshalToMap(b, candidate.format)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
f, err := fs.Open(path)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
defer f.Close()
|
||||
|
||||
b, err := io.ReadAll(f)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
m, err := metadecoders.Default.UnmarshalToMap(b, metadecoders.YAML)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return m
|
||||
c.r.Println("no config file (_config.yml, _config.yaml, or _config.toml) found: is the specified Jekyll root correct?")
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *importCommand) parseJekyllFilename(filename string) (time.Time, string, error) {
|
||||
|
||||
@@ -6,12 +6,55 @@ stdout 'Import a project from another system'
|
||||
hugo import jekyll -h
|
||||
stdout 'hugo import from Jekyll\.'
|
||||
|
||||
hugo import jekyll my-jekyll-project my-hugo-project
|
||||
checkfilecount 1 my-hugo-project/content/post
|
||||
grep 'example\.org' my-hugo-project/hugo.yaml
|
||||
# No config file
|
||||
hugo import jekyll jekyll-no-config hugo-no-config
|
||||
checkfilecount 1 hugo-no-config/content/post
|
||||
grep 'example\.org' hugo-no-config/hugo.yaml
|
||||
|
||||
# A simple Jekyll project.
|
||||
-- my-jekyll-project/_posts/2012-01-18-hello-world.markdown --
|
||||
# Has _config.yml file
|
||||
hugo import jekyll jekyll-yml hugo-yml
|
||||
checkfilecount 1 hugo-yml/content/post
|
||||
grep 'https://yml\.example\.org/' hugo-yml/hugo.yaml
|
||||
|
||||
# Has _config.yaml file
|
||||
hugo import jekyll jekyll-yaml hugo-yaml
|
||||
checkfilecount 1 hugo-yaml/content/post
|
||||
grep 'https://yaml\.example\.org/' hugo-yaml/hugo.yaml
|
||||
|
||||
# Has _config.toml file
|
||||
hugo import jekyll jekyll-toml hugo-toml
|
||||
checkfilecount 1 hugo-toml/content/post
|
||||
grep 'https://toml\.example\.org/' hugo-toml/hugo.yaml
|
||||
|
||||
# Jekyll projects used by the tests above.
|
||||
-- jekyll-no-config/_posts/2012-01-18-hello-world.markdown --
|
||||
---
|
||||
layout: post
|
||||
title: "Hello World"
|
||||
---
|
||||
Hello world!
|
||||
-- jekyll-yml/_config.yml --
|
||||
title: "Jekyll YML Site"
|
||||
url: "https://yml.example.org/"
|
||||
-- jekyll-yml/_posts/2012-01-18-hello-world.markdown --
|
||||
---
|
||||
layout: post
|
||||
title: "Hello World"
|
||||
---
|
||||
Hello world!
|
||||
-- jekyll-yaml/_config.yaml --
|
||||
title: "Jekyll YAML Site"
|
||||
url: "https://yaml.example.org/"
|
||||
-- jekyll-yaml/_posts/2012-01-18-hello-world.markdown --
|
||||
---
|
||||
layout: post
|
||||
title: "Hello World"
|
||||
---
|
||||
Hello world!
|
||||
-- jekyll-toml/_config.toml --
|
||||
title = "Jekyll TOML Site"
|
||||
url = "https://toml.example.org/"
|
||||
-- jekyll-toml/_posts/2012-01-18-hello-world.markdown --
|
||||
---
|
||||
layout: post
|
||||
title: "Hello World"
|
||||
|
||||
Reference in New Issue
Block a user