Parts-Based Manifest Publishing

This commit is contained in:
2026-04-09 21:22:26 +02:00
parent 94ffcc5868
commit 8f0b8a5d66
8 changed files with 596 additions and 89 deletions
-16
View File
@@ -252,8 +252,6 @@ func (p *Project) TopDataReferenceBuilderDir() string {
return filepath.Join(p.Root, ref)
}
var knownAssetRepoNames = []string{"sow-assets", "nwn-assets", "assets"}
func (p *Project) TopDataAssetsDir() string {
assets := strings.TrimSpace(p.Config.TopData.Assets)
if assets == "" {
@@ -266,20 +264,6 @@ func (p *Project) TopDataAssetsDir() string {
if _, err := os.Stat(absPath); err == nil {
return absPath
}
relFromParent := filepath.Join(filepath.Dir(p.Root), assets)
if _, err := os.Stat(relFromParent); err == nil {
return relFromParent
}
absRoot := filepath.Clean(p.Root)
parentDir := filepath.Dir(absRoot)
if parentDir != absRoot {
for _, repoName := range knownAssetRepoNames {
siblingPath := filepath.Join(parentDir, repoName)
if _, err := os.Stat(siblingPath); err == nil {
return siblingPath
}
}
}
return absPath
}
+29 -28
View File
@@ -6,34 +6,6 @@ import (
"testing"
)
func TestTopDataAssetsDirDiscoversSiblingRepo(t *testing.T) {
root := t.TempDir()
mkdirAll(t, filepath.Join(root, "src"))
mkdirAll(t, filepath.Join(root, "assets"))
mkdirAll(t, filepath.Join(root, "build"))
parentDir := filepath.Dir(root)
siblingPath := filepath.Join(parentDir, "sow-assets")
mkdirAll(t, siblingPath)
mkdirAll(t, filepath.Join(siblingPath, "assets", "part", "belt"))
proj := &Project{
Root: root,
Config: Config{
Module: ModuleConfig{Name: "Test", ResRef: "test"},
Paths: PathConfig{Source: "src", Assets: "assets", Build: "build"},
TopData: TopDataConfig{
Assets: "sow-assets",
},
},
}
result := proj.TopDataAssetsDir()
if result != siblingPath {
t.Errorf("expected %s, got %s", siblingPath, result)
}
}
func TestTopDataAssetsDirPrefersExplicitConfig(t *testing.T) {
root := t.TempDir()
mkdirAll(t, filepath.Join(root, "src"))
@@ -59,6 +31,35 @@ func TestTopDataAssetsDirPrefersExplicitConfig(t *testing.T) {
}
}
func TestTopDataAssetsDirDoesNotAssumeSiblingRepo(t *testing.T) {
root := t.TempDir()
mkdirAll(t, filepath.Join(root, "src"))
mkdirAll(t, filepath.Join(root, "assets"))
mkdirAll(t, filepath.Join(root, "build"))
parentDir := filepath.Dir(root)
siblingPath := filepath.Join(parentDir, "sow-assets")
mkdirAll(t, siblingPath)
mkdirAll(t, filepath.Join(siblingPath, "assets", "part", "belt"))
proj := &Project{
Root: root,
Config: Config{
Module: ModuleConfig{Name: "Test", ResRef: "test"},
Paths: PathConfig{Source: "src", Assets: "assets", Build: "build"},
TopData: TopDataConfig{
Assets: "sow-assets",
},
},
}
result := proj.TopDataAssetsDir()
expected := filepath.Join(root, "sow-assets")
if result != expected {
t.Errorf("expected unresolved local path %s, got %s", expected, result)
}
}
func TestTopDataAssetsDirReturnsEmptyForNoConfig(t *testing.T) {
root := t.TempDir()
mkdirAll(t, filepath.Join(root, "src"))