Pipeline Planning

This commit is contained in:
2026-04-14 01:08:38 +02:00
parent 5bd4a58bff
commit b766ff1348
3 changed files with 161 additions and 29 deletions
+26 -13
View File
@@ -178,24 +178,35 @@ func runBuildModule(ctx context) error {
return nil
}
type buildHAKOptions struct {
filteredHAKs []string
planOnly bool
}
func runBuildHAKs(ctx context) error {
p, err := loadProject(ctx.cwd)
if err != nil {
return err
}
filteredHAKs, err := parseBuildHAKArgs(ctx.args[1:])
opts, err := parseBuildHAKArgs(ctx.args[1:])
if err != nil {
return err
}
p, err = p.CloneWithHAKNames(filteredHAKs)
p, err = p.CloneWithHAKNames(opts.filteredHAKs)
if err != nil {
return err
}
result, err := pipeline.BuildHAKsWithProgress(p, func(message string) {
progress := func(message string) {
fmt.Fprintf(ctx.stdout, "[build-haks] %s\n", message)
})
}
var result pipeline.BuildResult
if opts.planOnly {
result, err = pipeline.PlanHAKsWithProgress(p, progress)
} else {
result, err = pipeline.BuildHAKsWithProgress(p, progress)
}
if err != nil {
return err
}
@@ -209,32 +220,34 @@ func runBuildHAKs(ctx context) error {
return nil
}
func parseBuildHAKArgs(args []string) ([]string, error) {
func parseBuildHAKArgs(args []string) (buildHAKOptions, error) {
opts := buildHAKOptions{}
if len(args) == 0 {
return nil, nil
return opts, 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> ...]")
return opts, errors.New("usage: build-haks [--hak <hak-name> ...] [--plan-only]")
case "--hak":
index++
if index >= len(args) {
return nil, errors.New("--hak requires a value")
return opts, errors.New("--hak requires a value")
}
filtered = append(filtered, args[index])
opts.filteredHAKs = append(opts.filteredHAKs, args[index])
case "--plan-only":
opts.planOnly = true
default:
if value, ok := parseInlineFlagValue(arg, "--hak"); ok {
filtered = append(filtered, value)
opts.filteredHAKs = append(opts.filteredHAKs, value)
continue
}
return nil, fmt.Errorf("unknown build-haks argument %q", arg)
return opts, fmt.Errorf("unknown build-haks argument %q", arg)
}
}
return filtered, nil
return opts, nil
}
func parseInlineFlagValue(arg, name string) (string, bool) {