Allow Optional Args With Extract
This commit is contained in:
+2
-1
@@ -300,7 +300,8 @@ func runExtract(ctx context) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
result, err := pipeline.Extract(p)
|
files := ctx.args[1:]
|
||||||
|
result, err := pipeline.Extract(p, files...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,18 @@ type ExtractResult struct {
|
|||||||
Skipped int
|
Skipped int
|
||||||
}
|
}
|
||||||
|
|
||||||
func Extract(p *project.Project) (ExtractResult, error) {
|
func Extract(p *project.Project, files ...string) (ExtractResult, error) {
|
||||||
|
var result ExtractResult
|
||||||
|
var failures []error
|
||||||
|
desired := map[string]struct{}{}
|
||||||
|
|
||||||
|
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")
|
modulePath := filepath.Join(p.BuildDir(), p.Config.Module.ResRef+".mod")
|
||||||
input, err := os.Open(modulePath)
|
input, err := os.Open(modulePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -37,16 +48,13 @@ func Extract(p *project.Project) (ExtractResult, error) {
|
|||||||
return ExtractResult{}, fmt.Errorf("read module archive: %w", err)
|
return ExtractResult{}, fmt.Errorf("read module archive: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var result ExtractResult
|
|
||||||
result.ModulePath = modulePath
|
result.ModulePath = modulePath
|
||||||
var failures []error
|
|
||||||
desired := map[string]struct{}{}
|
|
||||||
|
|
||||||
written, overwritten, skipped, errs := extractArchiveResources(p, archive, desired)
|
written, overwritten, skipped, errs := extractArchiveResources(p, archive, desired)
|
||||||
result.Written += written
|
result.Written += written
|
||||||
result.Overwritten += overwritten
|
result.Overwritten += overwritten
|
||||||
result.Skipped += skipped
|
result.Skipped += skipped
|
||||||
failures = append(failures, errs...)
|
failures = append(failures, errs...)
|
||||||
|
}
|
||||||
|
|
||||||
hakPaths, err := filepath.Glob(filepath.Join(p.BuildDir(), "*.hak"))
|
hakPaths, err := filepath.Glob(filepath.Join(p.BuildDir(), "*.hak"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -54,6 +62,11 @@ func Extract(p *project.Project) (ExtractResult, error) {
|
|||||||
}
|
}
|
||||||
slices.Sort(hakPaths)
|
slices.Sort(hakPaths)
|
||||||
for _, hakPath := range hakPaths {
|
for _, hakPath := range hakPaths {
|
||||||
|
filename := filepath.Base(hakPath)
|
||||||
|
if len(allowed) > 0 && !allowed[filename] {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
input, err := os.Open(hakPath)
|
input, err := os.Open(hakPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
failures = append(failures, fmt.Errorf("open hak archive %s: %w", hakPath, err))
|
failures = append(failures, fmt.Errorf("open hak archive %s: %w", hakPath, err))
|
||||||
|
|||||||
Reference in New Issue
Block a user