df35f26910
The script can either take config from an existing compose, or load files by path. By default it will perform full validation (and add default values and resolved git references). This can be turned off. The final JSON is printed to stdout. JIRA: COMPOSE-3066 Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
75 lines
1.7 KiB
Python
Executable File
75 lines
1.7 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import print_function
|
|
|
|
import argparse
|
|
import json
|
|
import os
|
|
import sys
|
|
|
|
import kobo.conf
|
|
import pungi.checks
|
|
|
|
|
|
def load_file(source, conf):
|
|
try:
|
|
with open(source) as f:
|
|
conf.load_from_dict(json.load(f))
|
|
except ValueError:
|
|
conf.load_from_file(source)
|
|
|
|
|
|
def load_source(source, conf):
|
|
if os.path.isfile(source):
|
|
load_file(source, conf)
|
|
else:
|
|
load_file(os.path.join(source, "logs/global/config-dump.global.log"), conf)
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
"sources",
|
|
metavar="SOURCE",
|
|
nargs="+",
|
|
help=(
|
|
"Source for the configuration; either a compose "
|
|
"or arbitrary number of config files."
|
|
),
|
|
)
|
|
group = parser.add_mutually_exclusive_group()
|
|
group.add_argument(
|
|
"--just-dump",
|
|
action="store_true",
|
|
help=(
|
|
"Do not transform the config in any way. Default values are not "
|
|
"added, git references are not resolved."
|
|
),
|
|
)
|
|
group.add_argument(
|
|
"--offline", action="store_true", help="Do not resolve git references."
|
|
)
|
|
|
|
args = parser.parse_args()
|
|
|
|
conf = kobo.conf.PyConfigParser()
|
|
|
|
for source in args.sources:
|
|
load_source(source, conf)
|
|
|
|
if not args.just_dump:
|
|
errors, _ = pungi.checks.validate(conf, offline=args.offline)
|
|
if errors:
|
|
for error in errors:
|
|
print(error, file=sys.stderr)
|
|
return False
|
|
|
|
json.dump(conf, sys.stdout, sort_keys=True, indent=4)
|
|
return True
|
|
|
|
|
|
if __name__ == "__main__":
|
|
if not main():
|
|
sys.exit(1)
|