added proper output directory structure
This commit is contained in:
parent
fdb8753538
commit
988d4ba42e
3 changed files with 52 additions and 1 deletions
|
@ -57,15 +57,17 @@ func processFile(inPath string, entry fs.DirEntry, err error, outRoot string, se
|
||||||
return nil
|
return nil
|
||||||
} else {
|
} else {
|
||||||
ext = filepath.Ext(inPath)
|
ext = filepath.Ext(inPath)
|
||||||
outPath = util.ReplaceRoot(inPath, outRoot)
|
|
||||||
// NOTE: This could be an if statement, but keeping
|
// NOTE: This could be an if statement, but keeping
|
||||||
// the switch makes it easy to extend the logic here later
|
// the switch makes it easy to extend the logic here later
|
||||||
switch ext {
|
switch ext {
|
||||||
case ".md":
|
case ".md":
|
||||||
toProcess = true
|
toProcess = true
|
||||||
|
outPath = util.ReplaceRoot(inPath, outRoot)
|
||||||
outPath = util.ChangeExtension(outPath, ".html")
|
outPath = util.ChangeExtension(outPath, ".html")
|
||||||
|
outPath = util.Indexify(outPath)
|
||||||
default:
|
default:
|
||||||
toProcess = false
|
toProcess = false
|
||||||
|
outPath = util.ReplaceRoot(inPath, outRoot)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@ func ChangeExtension(in string, outExt string) string {
|
||||||
return strings.TrimSuffix(in, filepath.Ext(in)) + outExt
|
return strings.TrimSuffix(in, filepath.Ext(in)) + outExt
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: look for .zona.yml instead?
|
||||||
func getRoot(path string) string {
|
func getRoot(path string) string {
|
||||||
for {
|
for {
|
||||||
parent := filepath.Dir(path)
|
parent := filepath.Dir(path)
|
||||||
|
@ -40,6 +41,19 @@ func ReplaceRoot(inPath, outRoot string) string {
|
||||||
return outPath
|
return outPath
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Indexify converts format path/file.ext
|
||||||
|
// into path/file/index.ext
|
||||||
|
func Indexify(in string) string {
|
||||||
|
ext := filepath.Ext(in)
|
||||||
|
trimmed := strings.TrimSuffix(in, ext)
|
||||||
|
filename := filepath.Base(trimmed)
|
||||||
|
if filename == "index" {
|
||||||
|
return in
|
||||||
|
}
|
||||||
|
prefix := strings.TrimSuffix(trimmed, filename)
|
||||||
|
return filepath.Join(prefix, filename, "index"+ext)
|
||||||
|
}
|
||||||
|
|
||||||
// InDir checks whether checkPath is
|
// InDir checks whether checkPath is
|
||||||
// inside targDir.
|
// inside targDir.
|
||||||
func InDir(checkPath string, targDir string) bool {
|
func InDir(checkPath string, targDir string) bool {
|
||||||
|
|
35
internal/util/path_test.go
Normal file
35
internal/util/path_test.go
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
package util_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/ficcdaf/zona/internal/util"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestIndexify(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string // description of this test case
|
||||||
|
// Named input parameters for target function.
|
||||||
|
in string
|
||||||
|
want string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
"Simple Path",
|
||||||
|
"foo/bar/name.html",
|
||||||
|
"foo/bar/name/index.html",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Index Name",
|
||||||
|
"foo/bar/index.md",
|
||||||
|
"foo/bar/index.md",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
got := util.Indexify(tt.in)
|
||||||
|
if got != tt.want {
|
||||||
|
t.Errorf("Indexify() = %v, want %v", got, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue