Allow Optional Args With Extract
This commit is contained in:
@@ -24,29 +24,37 @@ type ExtractResult struct {
|
||||
Skipped int
|
||||
}
|
||||
|
||||
func Extract(p *project.Project) (ExtractResult, error) {
|
||||
modulePath := filepath.Join(p.BuildDir(), p.Config.Module.ResRef+".mod")
|
||||
input, err := os.Open(modulePath)
|
||||
if err != nil {
|
||||
return ExtractResult{}, fmt.Errorf("open module archive: %w", err)
|
||||
}
|
||||
defer input.Close()
|
||||
|
||||
archive, err := erf.Read(input)
|
||||
if err != nil {
|
||||
return ExtractResult{}, fmt.Errorf("read module archive: %w", err)
|
||||
}
|
||||
|
||||
func Extract(p *project.Project, files ...string) (ExtractResult, error) {
|
||||
var result ExtractResult
|
||||
result.ModulePath = modulePath
|
||||
var failures []error
|
||||
desired := map[string]struct{}{}
|
||||
|
||||
written, overwritten, skipped, errs := extractArchiveResources(p, archive, desired)
|
||||
result.Written += written
|
||||
result.Overwritten += overwritten
|
||||
result.Skipped += skipped
|
||||
failures = append(failures, errs...)
|
||||
allowed := make(map[string]bool)
|
||||
for _, f := range files {
|
||||
allowed[f] = true
|
||||
}
|
||||
|
||||
shouldExtractMod := len(allowed) == 0 || allowed[p.Config.Module.ResRef+".mod"]
|
||||
if shouldExtractMod {
|
||||
modulePath := filepath.Join(p.BuildDir(), p.Config.Module.ResRef+".mod")
|
||||
input, err := os.Open(modulePath)
|
||||
if err != nil {
|
||||
return ExtractResult{}, fmt.Errorf("open module archive: %w", err)
|
||||
}
|
||||
defer input.Close()
|
||||
|
||||
archive, err := erf.Read(input)
|
||||
if err != nil {
|
||||
return ExtractResult{}, fmt.Errorf("read module archive: %w", err)
|
||||
}
|
||||
|
||||
result.ModulePath = modulePath
|
||||
written, overwritten, skipped, errs := extractArchiveResources(p, archive, desired)
|
||||
result.Written += written
|
||||
result.Overwritten += overwritten
|
||||
result.Skipped += skipped
|
||||
failures = append(failures, errs...)
|
||||
}
|
||||
|
||||
hakPaths, err := filepath.Glob(filepath.Join(p.BuildDir(), "*.hak"))
|
||||
if err != nil {
|
||||
@@ -54,6 +62,11 @@ func Extract(p *project.Project) (ExtractResult, error) {
|
||||
}
|
||||
slices.Sort(hakPaths)
|
||||
for _, hakPath := range hakPaths {
|
||||
filename := filepath.Base(hakPath)
|
||||
if len(allowed) > 0 && !allowed[filename] {
|
||||
continue
|
||||
}
|
||||
|
||||
input, err := os.Open(hakPath)
|
||||
if err != nil {
|
||||
failures = append(failures, fmt.Errorf("open hak archive %s: %w", hakPath, err))
|
||||
|
||||
Reference in New Issue
Block a user