edannenberg / kubler

A generic, extendable build orchestrator.
BSD 2-Clause "Simplified" License
157 stars 40 forks source link

Verbose option changing behavior when building #156

Open r7l opened 5 years ago

r7l commented 5 years ago

When trying to rebuild an image with options like -Fn it behaves differently as if you would use -vFn. expected result should be the same and only the amount of shown output should change.

Example:

kubler build -vF r7l/nginx

»»»»»[init]» generate build graph
»»» required engines:    docker
»»» required stage3:     stage3-amd64-musl-hardened stage3-amd64-hardened+nomultilib
»»» required builders:   kubler/bob kubler/bob-musl
»»» build sequence:      kubler/busybox kubler/glibc kubler/s6 kubler/openssl kubler/bash r7l/nginx
»[✔]»[init]» done.
»[✔]»[kubler/bob]» skipped, already built.
»[✔]»[kubler/bob-musl]» skipped, already built.
»[✔]»[kubler/busybox]» skipped, already built.
»[✔]»[kubler/glibc]» skipped, already built.
»[✔]»[kubler/s6]» skipped, already built.
»[✔]»[kubler/openssl]» skipped, already built.
»[✔]»[kubler/bash]» skipped, already built.
»[✔]»[r7l/nginx]» skipped, already built.

kubler build -F r7l/nginx

»»»»»[init]» generate build graph
»»» required engines:    docker
»»» required stage3:     stage3-amd64-musl-hardened stage3-amd64-hardened+nomultilib
»»» required builders:   kubler/bob kubler/bob-musl
»»» build sequence:      kubler/busybox kubler/glibc kubler/s6 kubler/openssl kubler/bash r7l/nginx
»[✔]»[init]» done.
»[✔]»[kubler/bob]» skipped, already built.
»[✔]»[kubler/bob-musl]» skipped, already built.
»»»»»[kubler/busybox]» build root-fs using kubler/bob-musl:20190128

.......
edannenberg commented 5 years ago

Looks like mixing global args like -v and command specific args with a single dash is not supported:

 $ kubler build -vnF

--verbose is set but -nF is ignored.

$ kubler build -nFv

-nF works as expected but --verbose is not set

Strictly speaking passing -nFv should not be supported and throw an error, it should be:

$ kubler -v build -nF

Not quite as correct but still works as expected:

$ kubler build -nF -v foo/bar
$ kubler build -nF foo/bar -v

I seem to remember that this issue got already resolved in argbash itself though, however as it still does lack a few features for Kubler's use case updating is not gonna be straight forward at the moment.