Add --fatal option

Close #8
This commit is contained in:
Daniele Rondina
2020-01-03 15:41:45 +01:00
parent c284d3e4bf
commit 7ec36da059
5 changed files with 12 additions and 4 deletions

View File

@@ -109,10 +109,12 @@ func init() {
pflags := RootCmd.PersistentFlags() pflags := RootCmd.PersistentFlags()
pflags.StringVar(&cfgFile, "config", "", "config file (default is $HOME/.luet.yaml)") pflags.StringVar(&cfgFile, "config", "", "config file (default is $HOME/.luet.yaml)")
pflags.BoolVarP(&Verbose, "verbose", "v", false, "verbose output") pflags.BoolVarP(&Verbose, "verbose", "v", false, "verbose output")
pflags.Bool("fatal", false, "Enables Warnings to exit")
pflags.Int("concurrency", runtime.NumCPU(), "Concurrency") pflags.Int("concurrency", runtime.NumCPU(), "Concurrency")
config.LuetCfg.Viper.BindPFlag("general.debug", pflags.Lookup("verbose")) config.LuetCfg.Viper.BindPFlag("general.debug", pflags.Lookup("verbose"))
config.LuetCfg.Viper.BindPFlag("general.concurrency", pflags.Lookup("concurrency")) config.LuetCfg.Viper.BindPFlag("general.concurrency", pflags.Lookup("concurrency"))
config.LuetCfg.Viper.BindPFlag("general.fatal_warnings", pflags.Lookup("fatal"))
} }
// initConfig reads in config file and ENV variables if set. // initConfig reads in config file and ENV variables if set.

View File

@@ -32,6 +32,9 @@
# Define spinner charset. See https://github.com/briandowns/spinner # Define spinner charset. See https://github.com/briandowns/spinner
# spinner_charset: 22 # spinner_charset: 22
# #
# Enable warnings to exit
# fatal_warnings: false
#
# --------------------------------------------- # ---------------------------------------------
# System configuration section: # System configuration section:
# --------------------------------------------- # ---------------------------------------------

View File

@@ -335,13 +335,11 @@ func (cs *LuetCompiler) compileWithImage(image, buildertaggedImage, packageImage
// TODO: Handle caching and optionally do not remove things // TODO: Handle caching and optionally do not remove things
err = cs.Backend.RemoveImage(builderOpts) err = cs.Backend.RemoveImage(builderOpts)
if err != nil { if err != nil {
// TODO: Have a --fatal flag which enables Warnings to exit.
Warning("Could not remove image ", builderOpts.ImageName) Warning("Could not remove image ", builderOpts.ImageName)
// return nil, errors.Wrap(err, "Could not remove image") // return nil, errors.Wrap(err, "Could not remove image")
} }
err = cs.Backend.RemoveImage(runnerOpts) err = cs.Backend.RemoveImage(runnerOpts)
if err != nil { if err != nil {
// TODO: Have a --fatal flag which enables Warnings to exit.
Warning("Could not remove image ", builderOpts.ImageName) Warning("Could not remove image ", builderOpts.ImageName)
// return nil, errors.Wrap(err, "Could not remove image") // return nil, errors.Wrap(err, "Could not remove image")
} }
@@ -433,7 +431,6 @@ func (cs *LuetCompiler) packageFromImage(p CompilationSpec, tag string, keepPerm
// TODO: Handle caching and optionally do not remove things // TODO: Handle caching and optionally do not remove things
err = cs.Backend.RemoveImage(builderOpts) err = cs.Backend.RemoveImage(builderOpts)
if err != nil { if err != nil {
// TODO: Have a --fatal flag which enables Warnings to exit.
Warning("Could not remove image ", builderOpts.ImageName) Warning("Could not remove image ", builderOpts.ImageName)
// return nil, errors.Wrap(err, "Could not remove image") // return nil, errors.Wrap(err, "Could not remove image")
} }

View File

@@ -38,6 +38,7 @@ type LuetGeneralConfig struct {
ShowBuildOutput bool `mapstructure:"show_build_output"` ShowBuildOutput bool `mapstructure:"show_build_output"`
SpinnerMs int `mapstructure:"spinner_ms"` SpinnerMs int `mapstructure:"spinner_ms"`
SpinnerCharset int `mapstructure:"spinner_charset"` SpinnerCharset int `mapstructure:"spinner_charset"`
FatalWarns bool `mapstructure:"fatal_warnings"`
} }
type LuetSystemConfig struct { type LuetSystemConfig struct {
@@ -109,6 +110,7 @@ func GenDefault(viper *v.Viper) {
viper.SetDefault("general.show_build_output", false) viper.SetDefault("general.show_build_output", false)
viper.SetDefault("general.spinner_ms", 100) viper.SetDefault("general.spinner_ms", 100)
viper.SetDefault("general.spinner_charset", 22) viper.SetDefault("general.spinner_charset", 22)
viper.SetDefault("general.fatal_warnings", false)
viper.SetDefault("system.database_engine", "boltdb") viper.SetDefault("system.database_engine", "boltdb")
viper.SetDefault("system.database_path", "/var/cache/luet") viper.SetDefault("system.database_path", "/var/cache/luet")
@@ -140,9 +142,10 @@ func (c *LuetGeneralConfig) String() string {
general: general:
concurrency: %d concurrency: %d
debug: %t debug: %t
fatal_warnings: %t
show_build_output: %t show_build_output: %t
spinner_ms: %d spinner_ms: %d
spinner_charset: %d`, c.Concurrency, c.Debug, c.ShowBuildOutput, spinner_charset: %d`, c.Concurrency, c.Debug, c.FatalWarns, c.ShowBuildOutput,
c.SpinnerMs, c.SpinnerCharset) c.SpinnerMs, c.SpinnerCharset)
return ans return ans

View File

@@ -164,6 +164,9 @@ func msg(level string, msg ...interface{}) {
func Warning(mess ...interface{}) { func Warning(mess ...interface{}) {
msg("warning", mess...) msg("warning", mess...)
if LuetCfg.GetGeneral().FatalWarns {
os.Exit(2)
}
} }
func Debug(mess ...interface{}) { func Debug(mess ...interface{}) {