|
@@ -2,6 +2,7 @@ import logging
|
|
import sys
|
|
import sys
|
|
from argparse import ArgumentParser
|
|
from argparse import ArgumentParser
|
|
|
|
|
|
|
|
+import borgmatic.config.generate
|
|
from borgmatic.config import collect, validate
|
|
from borgmatic.config import collect, validate
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
logger = logging.getLogger(__name__)
|
|
@@ -23,16 +24,22 @@ def parse_arguments(*arguments):
|
|
default=config_paths,
|
|
default=config_paths,
|
|
help=f'Configuration filenames or directories, defaults to: {config_paths}',
|
|
help=f'Configuration filenames or directories, defaults to: {config_paths}',
|
|
)
|
|
)
|
|
|
|
+ parser.add_argument(
|
|
|
|
+ '-s',
|
|
|
|
+ '--show',
|
|
|
|
+ action='store_true',
|
|
|
|
+ help='Show the validated configuration after all include merging has occurred',
|
|
|
|
+ )
|
|
|
|
|
|
return parser.parse_args(arguments)
|
|
return parser.parse_args(arguments)
|
|
|
|
|
|
|
|
|
|
def main(): # pragma: no cover
|
|
def main(): # pragma: no cover
|
|
- args = parse_arguments(*sys.argv[1:])
|
|
|
|
|
|
+ arguments = parse_arguments(*sys.argv[1:])
|
|
|
|
|
|
logging.basicConfig(level=logging.INFO, format='%(message)s')
|
|
logging.basicConfig(level=logging.INFO, format='%(message)s')
|
|
|
|
|
|
- config_filenames = tuple(collect.collect_config_filenames(args.config_paths))
|
|
|
|
|
|
+ config_filenames = tuple(collect.collect_config_filenames(arguments.config_paths))
|
|
if len(config_filenames) == 0:
|
|
if len(config_filenames) == 0:
|
|
logger.critical('No files to validate found')
|
|
logger.critical('No files to validate found')
|
|
sys.exit(1)
|
|
sys.exit(1)
|
|
@@ -40,13 +47,22 @@ def main(): # pragma: no cover
|
|
found_issues = False
|
|
found_issues = False
|
|
for config_filename in config_filenames:
|
|
for config_filename in config_filenames:
|
|
try:
|
|
try:
|
|
- validate.parse_configuration(config_filename, validate.schema_filename())
|
|
|
|
|
|
+ config, parse_logs = validate.parse_configuration(
|
|
|
|
+ config_filename, validate.schema_filename()
|
|
|
|
+ )
|
|
except (ValueError, OSError, validate.Validation_error) as error:
|
|
except (ValueError, OSError, validate.Validation_error) as error:
|
|
logging.critical(f'{config_filename}: Error parsing configuration file')
|
|
logging.critical(f'{config_filename}: Error parsing configuration file')
|
|
logging.critical(error)
|
|
logging.critical(error)
|
|
found_issues = True
|
|
found_issues = True
|
|
|
|
+ else:
|
|
|
|
+ for log in parse_logs:
|
|
|
|
+ logger.handle(log)
|
|
|
|
+
|
|
|
|
+ if arguments.show:
|
|
|
|
+ print('---')
|
|
|
|
+ print(borgmatic.config.generate.render_configuration(config))
|
|
|
|
|
|
if found_issues:
|
|
if found_issues:
|
|
sys.exit(1)
|
|
sys.exit(1)
|
|
- else:
|
|
|
|
- logger.info(f"All given configuration files are valid: {', '.join(config_filenames)}")
|
|
|
|
|
|
+
|
|
|
|
+ logger.info(f"All given configuration files are valid: {', '.join(config_filenames)}")
|