Optimize the multilanguage build process

Work In Progress!

This commit makes a rework of the build and rebuild process to better suit a multi-site setup.

This also includes a complete overhaul of the site tests. Previous these were a messy mix that
were testing just small parts of the build chain, some of it testing code-paths not even used in
"real life". Now all tests that depends on a built site follows the same and real production code path.

See #2309
Closes #2211
Closes #477
Closes #1744
This commit is contained in:
Bjørn Erik Pedersen
2016-07-28 09:30:58 +02:00
parent f023dfd763
commit 708bc78770
35 changed files with 1264 additions and 991 deletions

View File

@@ -108,10 +108,11 @@ func (f *File) Path() string {
}
// NewFileWithContents creates a new File pointer with the given relative path and
// content.
// content. The language defaults to "en".
func NewFileWithContents(relpath string, content io.Reader) *File {
file := NewFile(relpath)
file.Contents = content
file.lang = "en"
return file
}
@@ -124,15 +125,16 @@ func NewFile(relpath string) *File {
f.dir, f.logicalName = filepath.Split(f.relpath)
f.ext = strings.TrimPrefix(filepath.Ext(f.LogicalName()), ".")
f.baseName = helpers.Filename(f.LogicalName())
if viper.GetBool("Multilingual") {
f.lang = strings.TrimPrefix(filepath.Ext(f.baseName), ".")
f.lang = strings.TrimPrefix(filepath.Ext(f.baseName), ".")
if f.lang == "" {
f.lang = viper.GetString("DefaultContentLanguage")
if f.lang == "" {
f.lang = viper.GetString("DefaultContentLanguage")
// TODO(bep) ml
f.lang = "en"
}
f.translationBaseName = helpers.Filename(f.baseName)
} else {
f.translationBaseName = f.baseName
}
f.translationBaseName = helpers.Filename(f.baseName)
f.section = helpers.GuessSection(f.Dir())
f.uniqueID = helpers.Md5String(f.LogicalName())

View File

@@ -105,6 +105,9 @@ func (f *Filesystem) captureFiles() {
if err != nil {
jww.ERROR.Println(err)
if err == helpers.WalkRootTooShortError {
panic("The root path is too short. If this is a test, make sure to init the content paths.")
}
}
}

View File

@@ -22,7 +22,7 @@ import (
)
func TestEmptySourceFilesystem(t *testing.T) {
src := new(Filesystem)
src := &Filesystem{Base: "Empty"}
if len(src.Files()) != 0 {
t.Errorf("new filesystem should contain 0 files.")
}