Massive UX rewrite

- Ditch multiple libraries for progressbar, spinner, colors and replace
  with pterm
- Detect when running on terminal and disable automatically spinner
- Add support for multiple progress bars
- Huge rewrite of the configuration part. No more crazy stuff with viper
  CLI commands now correctly overrides default config file as expected
- Limit banner to be displayed on relevant parts

Fixes #211
Fixes #105
Fixes #247
Fixes #233
This commit is contained in:
Ettore Di Giacinto
2021-10-19 22:26:23 +02:00
parent d4edaa9de8
commit fe14d56afe
45 changed files with 730 additions and 463 deletions

View File

@@ -36,6 +36,7 @@ import (
tree "github.com/mudler/luet/pkg/tree"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
var buildCmd = &cobra.Command{
@@ -65,54 +66,54 @@ Build packages specifying multiple definition trees:
$ luet build --tree overlay/path --tree overlay/path2 utils/yq ...
`, PreRun: func(cmd *cobra.Command, args []string) {
LuetCfg.Viper.BindPFlag("tree", cmd.Flags().Lookup("tree"))
LuetCfg.Viper.BindPFlag("destination", cmd.Flags().Lookup("destination"))
LuetCfg.Viper.BindPFlag("backend", cmd.Flags().Lookup("backend"))
LuetCfg.Viper.BindPFlag("privileged", cmd.Flags().Lookup("privileged"))
LuetCfg.Viper.BindPFlag("revdeps", cmd.Flags().Lookup("revdeps"))
LuetCfg.Viper.BindPFlag("all", cmd.Flags().Lookup("all"))
LuetCfg.Viper.BindPFlag("compression", cmd.Flags().Lookup("compression"))
LuetCfg.Viper.BindPFlag("nodeps", cmd.Flags().Lookup("nodeps"))
LuetCfg.Viper.BindPFlag("onlydeps", cmd.Flags().Lookup("onlydeps"))
viper.BindPFlag("tree", cmd.Flags().Lookup("tree"))
viper.BindPFlag("destination", cmd.Flags().Lookup("destination"))
viper.BindPFlag("backend", cmd.Flags().Lookup("backend"))
viper.BindPFlag("privileged", cmd.Flags().Lookup("privileged"))
viper.BindPFlag("revdeps", cmd.Flags().Lookup("revdeps"))
viper.BindPFlag("all", cmd.Flags().Lookup("all"))
viper.BindPFlag("compression", cmd.Flags().Lookup("compression"))
viper.BindPFlag("nodeps", cmd.Flags().Lookup("nodeps"))
viper.BindPFlag("onlydeps", cmd.Flags().Lookup("onlydeps"))
util.BindValuesFlags(cmd)
LuetCfg.Viper.BindPFlag("backend-args", cmd.Flags().Lookup("backend-args"))
viper.BindPFlag("backend-args", cmd.Flags().Lookup("backend-args"))
LuetCfg.Viper.BindPFlag("image-repository", cmd.Flags().Lookup("image-repository"))
LuetCfg.Viper.BindPFlag("push", cmd.Flags().Lookup("push"))
LuetCfg.Viper.BindPFlag("pull", cmd.Flags().Lookup("pull"))
LuetCfg.Viper.BindPFlag("wait", cmd.Flags().Lookup("wait"))
LuetCfg.Viper.BindPFlag("keep-images", cmd.Flags().Lookup("keep-images"))
viper.BindPFlag("image-repository", cmd.Flags().Lookup("image-repository"))
viper.BindPFlag("push", cmd.Flags().Lookup("push"))
viper.BindPFlag("pull", cmd.Flags().Lookup("pull"))
viper.BindPFlag("wait", cmd.Flags().Lookup("wait"))
viper.BindPFlag("keep-images", cmd.Flags().Lookup("keep-images"))
util.BindSolverFlags(cmd)
LuetCfg.Viper.BindPFlag("general.show_build_output", cmd.Flags().Lookup("live-output"))
LuetCfg.Viper.BindPFlag("backend-args", cmd.Flags().Lookup("backend-args"))
viper.BindPFlag("general.show_build_output", cmd.Flags().Lookup("live-output"))
viper.BindPFlag("backend-args", cmd.Flags().Lookup("backend-args"))
},
Run: func(cmd *cobra.Command, args []string) {
treePaths := LuetCfg.Viper.GetStringSlice("tree")
dst := LuetCfg.Viper.GetString("destination")
treePaths := viper.GetStringSlice("tree")
dst := viper.GetString("destination")
concurrency := LuetCfg.GetGeneral().Concurrency
backendType := LuetCfg.Viper.GetString("backend")
privileged := LuetCfg.Viper.GetBool("privileged")
revdeps := LuetCfg.Viper.GetBool("revdeps")
all := LuetCfg.Viper.GetBool("all")
compressionType := LuetCfg.Viper.GetString("compression")
imageRepository := LuetCfg.Viper.GetString("image-repository")
backendType := viper.GetString("backend")
privileged := viper.GetBool("privileged")
revdeps := viper.GetBool("revdeps")
all := viper.GetBool("all")
compressionType := viper.GetString("compression")
imageRepository := viper.GetString("image-repository")
values := util.ValuesFlags()
wait := LuetCfg.Viper.GetBool("wait")
push := LuetCfg.Viper.GetBool("push")
pull := LuetCfg.Viper.GetBool("pull")
keepImages := LuetCfg.Viper.GetBool("keep-images")
nodeps := LuetCfg.Viper.GetBool("nodeps")
onlydeps := LuetCfg.Viper.GetBool("onlydeps")
wait := viper.GetBool("wait")
push := viper.GetBool("push")
pull := viper.GetBool("pull")
keepImages := viper.GetBool("keep-images")
nodeps := viper.GetBool("nodeps")
onlydeps := viper.GetBool("onlydeps")
onlyTarget, _ := cmd.Flags().GetBool("only-target-package")
full, _ := cmd.Flags().GetBool("full")
rebuild, _ := cmd.Flags().GetBool("rebuild")
var results Results
backendArgs := LuetCfg.Viper.GetStringSlice("backend-args")
backendArgs := viper.GetStringSlice("backend-args")
out, _ := cmd.Flags().GetString("output")
if out != "terminal" {
@@ -148,7 +149,7 @@ Build packages specifying multiple definition trees:
opts := util.SetSolverConfig()
pullRepo, _ := cmd.Flags().GetStringArray("pull-repository")
LuetCfg.GetGeneral().ShowBuildOutput = LuetCfg.Viper.GetBool("general.show_build_output")
LuetCfg.GetGeneral().ShowBuildOutput = viper.GetBool("general.show_build_output")
Debug("Solver", opts.CompactString())