Filter By Hak Name

This commit is contained in:
2026-04-14 00:47:11 +02:00
parent 0c63dfc711
commit 5bd4a58bff
3 changed files with 146 additions and 0 deletions
+45
View File
@@ -184,6 +184,15 @@ func runBuildHAKs(ctx context) error {
return err
}
filteredHAKs, err := parseBuildHAKArgs(ctx.args[1:])
if err != nil {
return err
}
p, err = p.CloneWithHAKNames(filteredHAKs)
if err != nil {
return err
}
result, err := pipeline.BuildHAKsWithProgress(p, func(message string) {
fmt.Fprintf(ctx.stdout, "[build-haks] %s\n", message)
})
@@ -200,6 +209,42 @@ func runBuildHAKs(ctx context) error {
return nil
}
func parseBuildHAKArgs(args []string) ([]string, error) {
if len(args) == 0 {
return nil, nil
}
var filtered []string
for index := 0; index < len(args); index++ {
arg := args[index]
switch arg {
case "-h", "--help":
return nil, errors.New("usage: build-haks [--hak <hak-name> ...]")
case "--hak":
index++
if index >= len(args) {
return nil, errors.New("--hak requires a value")
}
filtered = append(filtered, args[index])
default:
if value, ok := parseInlineFlagValue(arg, "--hak"); ok {
filtered = append(filtered, value)
continue
}
return nil, fmt.Errorf("unknown build-haks argument %q", arg)
}
}
return filtered, nil
}
func parseInlineFlagValue(arg, name string) (string, bool) {
prefix := name + "="
if !strings.HasPrefix(arg, prefix) {
return "", false
}
return strings.TrimSpace(strings.TrimPrefix(arg, prefix)), true
}
func runExtract(ctx context) error {
p, err := loadProject(ctx.cwd)
if err != nil {