mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 01:53:42 +08:00 
			
		
		
		
	commands: add an alias for --check to be the same as --call=check
This adds an alias for `--check` that causes it to behave the same as `--call=check`. This is done using `BoolFunc` to call a function when the option is seen and to set it to the correct value. This should allow command line flags like `--check --call=targets` to work correctly (even though they conflict) by making it so the first invocation sets the print function to `check` and the second overwrites the first. This is the expected behavior for these types of boolean flags. `BoolFunc` itself is part of the standard library flags package, but never seems to have made it into pflag possibly because it was added in go 1.21. https://pkg.go.dev/flag#FlagSet.BoolFunc Signed-off-by: Jonathan A. Sternberg <jonathan.sternberg@docker.com>
This commit is contained in:
		@@ -629,6 +629,8 @@ func buildCmd(dockerCli command.Cli, rootOpts *rootOptions, debugConfig *debug.D
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	flags.StringVar(&options.printFunc, "call", "build", `Set method for evaluating build ("check", "outline", "targets")`)
 | 
			
		||||
	flags.VarPF(callAlias(options, "check"), "check", "", `Shorthand for "--call=check"`)
 | 
			
		||||
	flags.Lookup("check").NoOptDefVal = "true"
 | 
			
		||||
 | 
			
		||||
	// hidden flags
 | 
			
		||||
	var ignore string
 | 
			
		||||
@@ -1003,6 +1005,20 @@ func maybeJSONArray(v string) []string {
 | 
			
		||||
	return []string{v}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func callAlias(options *buildOptions, value string) cobrautil.BoolFuncValue {
 | 
			
		||||
	return func(s string) error {
 | 
			
		||||
		v, err := strconv.ParseBool(s)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if v {
 | 
			
		||||
			options.printFunc = value
 | 
			
		||||
		}
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// timeBuildCommand will start a timer for timing the build command. It records the time when the returned
 | 
			
		||||
// function is invoked into a metric.
 | 
			
		||||
func timeBuildCommand(mp metric.MeterProvider, attrs attribute.Set) func(err error) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user