You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qubes-installer-qubes-os/scripts/ksparser

63 lines
1.4 KiB

#!/usr/bin/env python3
import argparse
import sys
import pungi.ks
from jinja2 import Environment
REPO_TEMPLATE = """
[{{ks_repo.name}}]
name={{ks_repo.name}}
enabled=1
{%- if ks_repo.baseurl %}
baseurl={{ks_repo.baseurl}}
{% endif -%}
{%- if ks_repo.metalink %}
metalink={{ks_repo.metalink}}
{%- endif -%}
{%- if ks_repo.gpgkey %}
gpgcheck=1
gpgkey={{ks_repo.gpgkey}}
{% endif -%}
"""
def get_args():
parser = argparse.ArgumentParser()
parser.add_argument(
"--ks",
metavar='PATH',
required=True
)
parser.add_argument(
"--extract-repo-conf-to",
metavar='PATH',
required=False
)
return parser.parse_args()
def main():
args = get_args()
if args.ks:
if args.extract_repo_conf_to:
ksparser = pungi.ks.get_ksparser(args.ks)
repo_content = ''
for ks_repo in ksparser.handler.repo.repoList:
repo_content += Environment().from_string(REPO_TEMPLATE).render(
ks_repo=ks_repo.__dict__)
try:
with open(args.extract_repo_conf_to, 'w') as repo_fd:
repo_fd.write(repo_content)
except EnvironmentError:
print(
"Cannot write repo file to %s" % args.extract_repo_conf_to)
return 1
if __name__ == '__main__':
sys.exit(main())