cmd: rework argument handling
This commit tweaks the argument handling based on the suggestion by Achilleas and Ondrej (thanks!). Now it takes ```console $ image-builder manifest qcow2 ./path/to/blueprint ... $ image-builder manifest --arch s390x --distro centos-9 qcow2 ... ``` If no arch is specified the hostname arch is used. If no distro is specified in either the blueprint or the commandline it is auto-detected based on the host. Note that if the distro from the comandline and the blueprint diverge an error is raised. We can relax this rule and just add precedence, e.g. commandline always overrides the blueprint but ideally we would have a clear use-case here so we start conservative and can always relax this rule later (the inverse is much harder). This means it is no longer copy/paste friendly from `list-images` by default but instead we can provide a new `list-images --output=shell` option that outputs in exactly the format that `image-builder [manifest|build]` need.
This commit is contained in:
parent
0d06eedd26
commit
4b8bff8404
5 changed files with 150 additions and 19 deletions
|
|
@ -11,6 +11,7 @@ import (
|
|||
var (
|
||||
GetOneImage = getOneImage
|
||||
Run = run
|
||||
FindDistro = findDistro
|
||||
)
|
||||
|
||||
func MockOsArgs(new []string) (restore func()) {
|
||||
|
|
@ -49,3 +50,11 @@ func MockNewRepoRegistry(f func() (*reporegistry.RepoRegistry, error)) (restore
|
|||
newRepoRegistry = saved
|
||||
}
|
||||
}
|
||||
|
||||
func MockDistroGetHostDistroName(f func() (string, error)) (restore func()) {
|
||||
saved := distroGetHostDistroName
|
||||
distroGetHostDistroName = f
|
||||
return func() {
|
||||
distroGetHostDistroName = saved
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue