63 lines
1.4 KiB
Python
Executable File
63 lines
1.4 KiB
Python
Executable File
#!/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())
|