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
|
||||
} else {
|
||||
ext = filepath.Ext(inPath)
|
||||
outPath = util.ReplaceRoot(inPath, outRoot)
|
||||
// NOTE: This could be an if statement, but keeping
|
||||
// the switch makes it easy to extend the logic here later
|
||||
switch ext {
|
||||
case ".md":
|
||||
toProcess = true
|
||||
outPath = util.ReplaceRoot(inPath, outRoot)
|
||||
outPath = util.ChangeExtension(outPath, ".html")
|
||||
outPath = util.Indexify(outPath)
|
||||
default:
|
||||
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
|
||||
}
|
||||
|
||||
// TODO: look for .zona.yml instead?
|
||||
func getRoot(path string) string {
|
||||
for {
|
||||
parent := filepath.Dir(path)
|
||||
|
@ -40,6 +41,19 @@ func ReplaceRoot(inPath, outRoot string) string {
|
|||
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
|
||||
// inside targDir.
|
||||
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