Native Workflow Support
This commit is contained in:
@@ -16,15 +16,19 @@ import (
|
||||
"gitea.westgate.pw/ShadowsOverWestgate/sow-tools/internal/erf"
|
||||
"gitea.westgate.pw/ShadowsOverWestgate/sow-tools/internal/gff"
|
||||
"gitea.westgate.pw/ShadowsOverWestgate/sow-tools/internal/project"
|
||||
"gitea.westgate.pw/ShadowsOverWestgate/sow-tools/internal/topdata"
|
||||
"gitea.westgate.pw/ShadowsOverWestgate/sow-tools/internal/validator"
|
||||
)
|
||||
|
||||
type BuildResult struct {
|
||||
ModulePath string
|
||||
HAKPaths []string
|
||||
Manifest string
|
||||
Resources int
|
||||
HAKAssets int
|
||||
ModulePath string
|
||||
HAKPaths []string
|
||||
Manifest string
|
||||
Resources int
|
||||
HAKAssets int
|
||||
TopPackageHAK string
|
||||
TopPackageTLK string
|
||||
TopPackageFiles int
|
||||
}
|
||||
|
||||
type BuildManifest struct {
|
||||
@@ -87,8 +91,26 @@ func buildModule(p *project.Project, progress ProgressFunc) (BuildResult, error)
|
||||
return BuildResult{}, err
|
||||
}
|
||||
|
||||
var topPackage topdata.PackageResult
|
||||
var err error
|
||||
if p.HasTopData() {
|
||||
progressf(progress, "Building native top package...")
|
||||
topPackage, err = topdata.BuildPackage(p, func(message string) {
|
||||
progressf(progress, "Top package: "+message)
|
||||
})
|
||||
if err != nil {
|
||||
return BuildResult{}, err
|
||||
}
|
||||
}
|
||||
|
||||
progressf(progress, "Resolving module HAK order...")
|
||||
moduleHakOrder, err := plannedModuleHAKOrder(p)
|
||||
if err != nil {
|
||||
return BuildResult{}, err
|
||||
}
|
||||
|
||||
progressf(progress, "Collecting module resources...")
|
||||
moduleResources, err := collectModuleResources(p, nil)
|
||||
moduleResources, err := collectModuleResources(p, moduleHakOrder)
|
||||
if err != nil {
|
||||
return BuildResult{}, err
|
||||
}
|
||||
@@ -106,8 +128,11 @@ func buildModule(p *project.Project, progress ProgressFunc) (BuildResult, error)
|
||||
}
|
||||
|
||||
return BuildResult{
|
||||
ModulePath: outputPath,
|
||||
Resources: len(moduleResources),
|
||||
ModulePath: outputPath,
|
||||
Resources: len(moduleResources),
|
||||
TopPackageHAK: topPackage.OutputHAKPath,
|
||||
TopPackageTLK: topPackage.OutputTLKPath,
|
||||
TopPackageFiles: topPackage.HAKResources,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@@ -841,6 +866,18 @@ func cleanupGeneratedHAKs(buildDir, moduleResRef string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func plannedModuleHAKOrder(p *project.Project) ([]string, error) {
|
||||
assetResources, err := collectAssetResources(p)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
chunks, err := planHAKChunks(p, assetResources)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resolveModuleHAKOrder(p, chunks)
|
||||
}
|
||||
|
||||
func resolveModuleHAKOrder(p *project.Project, chunks []hakChunk) ([]string, error) {
|
||||
if len(p.Config.Module.HAKOrder) == 0 {
|
||||
return nil, nil
|
||||
|
||||
Reference in New Issue
Block a user