User-Friendliness
This commit is contained in:
@@ -52,6 +52,8 @@ type hakChunk struct {
|
||||
Size int64
|
||||
}
|
||||
|
||||
type ProgressFunc func(string)
|
||||
|
||||
func Build(p *project.Project) (BuildResult, error) {
|
||||
moduleResult, err := BuildModule(p)
|
||||
if err != nil {
|
||||
@@ -68,15 +70,26 @@ func Build(p *project.Project) (BuildResult, error) {
|
||||
}
|
||||
|
||||
func BuildModule(p *project.Project) (BuildResult, error) {
|
||||
return buildModule(p, nil)
|
||||
}
|
||||
|
||||
func BuildModuleWithProgress(p *project.Project, progress ProgressFunc) (BuildResult, error) {
|
||||
return buildModule(p, progress)
|
||||
}
|
||||
|
||||
func buildModule(p *project.Project, progress ProgressFunc) (BuildResult, error) {
|
||||
progressf(progress, "Validating project...")
|
||||
if err := validateForBuild(p); err != nil {
|
||||
return BuildResult{}, err
|
||||
}
|
||||
|
||||
progressf(progress, "Collecting module resources...")
|
||||
moduleResources, err := collectModuleResources(p, nil)
|
||||
if err != nil {
|
||||
return BuildResult{}, err
|
||||
}
|
||||
|
||||
progressf(progress, "Writing module archive...")
|
||||
outputPath := filepath.Join(p.BuildDir(), p.Config.Module.ResRef+".mod")
|
||||
output, err := os.Create(outputPath)
|
||||
if err != nil {
|
||||
@@ -95,14 +108,25 @@ func BuildModule(p *project.Project) (BuildResult, error) {
|
||||
}
|
||||
|
||||
func BuildHAKs(p *project.Project) (BuildResult, error) {
|
||||
return buildHAKs(p, nil)
|
||||
}
|
||||
|
||||
func BuildHAKsWithProgress(p *project.Project, progress ProgressFunc) (BuildResult, error) {
|
||||
return buildHAKs(p, progress)
|
||||
}
|
||||
|
||||
func buildHAKs(p *project.Project, progress ProgressFunc) (BuildResult, error) {
|
||||
progressf(progress, "Validating project...")
|
||||
if err := validateForBuild(p); err != nil {
|
||||
return BuildResult{}, err
|
||||
}
|
||||
|
||||
progressf(progress, "Collecting asset resources...")
|
||||
assetResources, err := collectAssetResources(p)
|
||||
if err != nil {
|
||||
return BuildResult{}, err
|
||||
}
|
||||
progressf(progress, "Cleaning previous generated HAKs...")
|
||||
if err := cleanupGeneratedHAKs(p.BuildDir(), p.Config.Module.ResRef); err != nil {
|
||||
return BuildResult{}, err
|
||||
}
|
||||
@@ -112,10 +136,12 @@ func BuildHAKs(p *project.Project) (BuildResult, error) {
|
||||
return result, nil
|
||||
}
|
||||
|
||||
progressf(progress, "Planning HAK chunks...")
|
||||
chunks, err := planHAKChunks(p, assetResources)
|
||||
if err != nil {
|
||||
return BuildResult{}, err
|
||||
}
|
||||
progressf(progress, "Resolving module HAK order...")
|
||||
moduleHakOrder, err := resolveModuleHAKOrder(p, chunks)
|
||||
if err != nil {
|
||||
return BuildResult{}, err
|
||||
@@ -125,7 +151,8 @@ func BuildHAKs(p *project.Project) (BuildResult, error) {
|
||||
ModuleHAKs: moduleHakOrder,
|
||||
HAKs: make([]BuildManifestHAK, 0, len(chunks)),
|
||||
}
|
||||
for _, chunk := range chunks {
|
||||
for index, chunk := range chunks {
|
||||
progressf(progress, fmt.Sprintf("Writing HAK %d/%d: %s (%d assets)", index+1, len(chunks), chunk.Name, len(chunk.Assets)))
|
||||
hakPath := filepath.Join(p.BuildDir(), chunk.Name+".hak")
|
||||
hakOutput, err := os.Create(hakPath)
|
||||
if err != nil {
|
||||
@@ -154,6 +181,7 @@ func BuildHAKs(p *project.Project) (BuildResult, error) {
|
||||
})
|
||||
}
|
||||
|
||||
progressf(progress, "Writing HAK manifest...")
|
||||
manifestPath := filepath.Join(p.BuildDir(), "haks.json")
|
||||
manifestBytes, err := json.MarshalIndent(manifest, "", " ")
|
||||
if err != nil {
|
||||
@@ -167,6 +195,12 @@ func BuildHAKs(p *project.Project) (BuildResult, error) {
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func progressf(progress ProgressFunc, message string) {
|
||||
if progress != nil {
|
||||
progress(message)
|
||||
}
|
||||
}
|
||||
|
||||
func collectModuleResources(p *project.Project, moduleHakOrder []string) ([]erf.Resource, error) {
|
||||
var moduleResources []erf.Resource
|
||||
|
||||
|
||||
Reference in New Issue
Block a user