Filter By Hak Name
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user