Music Pipeline Implementation

This commit is contained in:
2026-05-07 08:51:42 +02:00
parent 601e89bece
commit f6bb4fe3d7
7 changed files with 1028 additions and 6 deletions
+28 -3
View File
@@ -27,6 +27,7 @@ type BuildResult struct {
HAKPaths []string
Manifest string
AutogenManifestPaths []string
CreditsArtifactPaths []string
Resources int
HAKAssets int
TopPackageHAK string
@@ -192,7 +193,11 @@ func planOrBuildHAKs(p *project.Project, progress ProgressFunc, writeArchives bo
if err != nil {
return BuildResult{}, err
}
assetResources, err := collectAssetResources(p, false, allowedAssets)
musicAssets, err := prepareMusicAssets(p)
if err != nil {
return BuildResult{}, err
}
assetResources, err := collectAssetResources(p, false, allowedAssets, musicAssets)
if err != nil {
return BuildResult{}, err
}
@@ -209,6 +214,7 @@ func planOrBuildHAKs(p *project.Project, progress ProgressFunc, writeArchives bo
}
result := BuildResult{HAKAssets: len(assetResources)}
result.CreditsArtifactPaths = append(result.CreditsArtifactPaths, musicAssets.Artifacts...)
if err := writeAutogenManifestOutputs(progress, autogenManifests); err != nil {
return BuildResult{}, err
}
@@ -657,7 +663,7 @@ func fieldStringValueForScripts(value gff.Value) (string, bool) {
}
}
func collectAssetResources(p *project.Project, requireContent bool, allowed map[string]struct{}) ([]assetResource, error) {
func collectAssetResources(p *project.Project, requireContent bool, allowed map[string]struct{}, musicAssets *preparedMusicAssets) ([]assetResource, error) {
var hakResources []assetResource
assetCreatedAt, err := collectGitAssetCreationTimes(p)
if err != nil {
@@ -674,6 +680,11 @@ func collectAssetResources(p *project.Project, requireContent bool, allowed map[
assetsRelPath = filepath.ToSlash(assetsRelPath)
for _, rel := range p.Inventory.AssetFiles {
if musicAssets != nil {
if _, skip := musicAssets.SkipSourceRel[filepath.ToSlash(rel)]; skip {
continue
}
}
if len(allowed) > 0 {
if _, ok := allowed[filepath.ToSlash(rel)]; !ok {
continue
@@ -701,6 +712,16 @@ func collectAssetResources(p *project.Project, requireContent bool, allowed map[
ContentID: resourceInfo.ContentID,
})
}
if musicAssets != nil {
for _, asset := range musicAssets.Generated {
if len(allowed) > 0 {
if _, ok := allowed[filepath.ToSlash(asset.Rel)]; !ok {
continue
}
}
hakResources = append(hakResources, asset)
}
}
slices.SortFunc(hakResources, func(a, b assetResource) int {
return compareResourceKeys(a.Resource, b.Resource)
@@ -1572,7 +1593,11 @@ func plannedModuleHAKOrder(p *project.Project) ([]string, error) {
return append([]string(nil), manifest.ModuleHAKs...), nil
}
assetResources, err := collectAssetResources(p, false, nil)
musicAssets, err := prepareMusicAssets(p)
if err != nil {
return nil, err
}
assetResources, err := collectAssetResources(p, false, nil, musicAssets)
if err != nil {
return nil, err
}