config: fix configure() method to validate configuration only if -V/--validate parameter is provided
This commit is contained in:
parent
371d194728
commit
5a108739af
1 changed files with 29 additions and 21 deletions
|
@ -798,7 +798,7 @@ class Config: # pylint: disable=too-many-instance-attributes
|
||||||
self._loaded_callbacks_executed.append(callback)
|
self._loaded_callbacks_executed.append(callback)
|
||||||
return not error
|
return not error
|
||||||
|
|
||||||
def save(self, filepath=None):
|
def save(self, filepath=None, reload=True):
|
||||||
"""Save configuration file"""
|
"""Save configuration file"""
|
||||||
filepath = filepath if filepath else self._filepath
|
filepath = filepath if filepath else self._filepath
|
||||||
assert filepath, "Configuration filepath is not set or provided"
|
assert filepath, "Configuration filepath is not set or provided"
|
||||||
|
@ -828,7 +828,8 @@ class Config: # pylint: disable=too-many-instance-attributes
|
||||||
except Exception: # pylint: disable=broad-except
|
except Exception: # pylint: disable=broad-except
|
||||||
log.exception("Failed to write generated configuration file %s", filepath)
|
log.exception("Failed to write generated configuration file %s", filepath)
|
||||||
return False
|
return False
|
||||||
self.load_file(filepath)
|
if reload:
|
||||||
|
return self.load_file(filepath)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -1158,32 +1159,39 @@ class Config: # pylint: disable=too-many-instance-attributes
|
||||||
|
|
||||||
options = self.parse_arguments_options(argv, create=False, execute_callback=False)
|
options = self.parse_arguments_options(argv, create=False, execute_callback=False)
|
||||||
|
|
||||||
|
def validate():
|
||||||
|
"""Validate configuration file"""
|
||||||
|
print("Validate your configuration...")
|
||||||
|
try:
|
||||||
|
if self.load_file(options.config):
|
||||||
|
print("Your configuration seem valid.")
|
||||||
|
else:
|
||||||
|
print("Error(s) occurred validating your configuration. See logs for details.")
|
||||||
|
sys.exit(1)
|
||||||
|
except Exception: # pylint: disable=broad-except
|
||||||
|
print(
|
||||||
|
"Exception occurred validating your configuration:\n"
|
||||||
|
f"{traceback.format_exc()}"
|
||||||
|
"\n\nSee logs for details."
|
||||||
|
)
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
if os.path.exists(options.config) and not options.overwrite:
|
if os.path.exists(options.config) and not options.overwrite:
|
||||||
print(f"Configuration file {options.config} already exists")
|
print(
|
||||||
sys.exit(1)
|
f"Configuration file {options.config} already exists. "
|
||||||
|
"Use -O/--overwrite parameter to overwrite it."
|
||||||
|
)
|
||||||
|
if options.validate:
|
||||||
|
validate()
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
if options.interactive:
|
if options.interactive:
|
||||||
self.ask_values(set_it=True)
|
self.ask_values(set_it=True)
|
||||||
|
|
||||||
if self.save(options.config):
|
if self.save(options.config, reload=False):
|
||||||
print(f"Configuration file {options.config} created.")
|
print(f"Configuration file {options.config} created.")
|
||||||
if options.validate:
|
if options.validate:
|
||||||
print("Validate your configuration...")
|
validate()
|
||||||
try:
|
|
||||||
if self._loaded():
|
|
||||||
print("Your configuration seem valid.")
|
|
||||||
else:
|
|
||||||
print(
|
|
||||||
"Error(s) occurred validating your configuration. See logs for details."
|
|
||||||
)
|
|
||||||
sys.exit(1)
|
|
||||||
except Exception: # pylint: disable=broad-except
|
|
||||||
print(
|
|
||||||
"Exception occurred validating your configuration:\n"
|
|
||||||
f"{traceback.format_exc()}"
|
|
||||||
"\n\nSee logs for details."
|
|
||||||
)
|
|
||||||
sys.exit(2)
|
|
||||||
else:
|
else:
|
||||||
print(f"Error occured creating configuration file {options.config}")
|
print(f"Error occured creating configuration file {options.config}")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
Loading…
Reference in a new issue