Parts-Based Manifest Publishing
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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"))
|
||||
|
||||
Reference in New Issue
Block a user