Pipeline Planning
This commit is contained in:
+26
-13
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user