de231064b7
All use cases that are actually used by pungi-koji are tested. There is missing coverage for * keeping only items with matching arch * not reindenting the file These aren't currently used and should be removed in the future, but there may be other tools depending on the comps_filter executable. Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
66 lines
2.6 KiB
Python
Executable File
66 lines
2.6 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
import sys
|
|
import argparse
|
|
|
|
from pungi.wrappers.comps import CompsFilter
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--output", help="redirect output to a file")
|
|
parser.add_argument("--arch", required=True,
|
|
help="filter groups and packages according to an arch")
|
|
parser.add_argument("--arch-only-groups", default=False, action="store_true",
|
|
help="keep only arch groups, remove the rest")
|
|
parser.add_argument("--arch-only-packages", default=False, action="store_true",
|
|
help="keep only arch packages, remove the rest")
|
|
parser.add_argument("--arch-only-environments", default=False, action="store_true",
|
|
help="keep only arch environments, remove the rest")
|
|
parser.add_argument("--remove-categories", default=False, action="store_true",
|
|
help="remove all categories")
|
|
parser.add_argument("--remove-langpacks", default=False, action="store_true",
|
|
help="remove the langpacks section")
|
|
parser.add_argument("--remove-translations", default=False, action="store_true",
|
|
help="remove all translations")
|
|
parser.add_argument("--remove-environments", default=False, action="store_true",
|
|
help="remove all environment sections")
|
|
parser.add_argument("--keep-empty-group", default=[], action="append", metavar="GROUPID",
|
|
help="keep groups even if they are empty")
|
|
parser.add_argument("--no-cleanup", default=False, action="store_true",
|
|
help="don't remove empty groups and categories")
|
|
parser.add_argument("--no-reindent", default=False, action="store_true",
|
|
help="don't re-indent the output")
|
|
parser.add_argument("comps_file", metavar='COMPS_FILE')
|
|
|
|
opts = parser.parse_args()
|
|
|
|
with open(opts.comps_file, "rb") as file_obj:
|
|
f = CompsFilter(file_obj, reindent=not opts.no_reindent)
|
|
f.filter_packages(opts.arch, opts.arch_only_packages)
|
|
f.filter_groups(opts.arch, opts.arch_only_groups)
|
|
f.filter_environments(opts.arch, opts.arch_only_environments)
|
|
|
|
if not opts.no_cleanup:
|
|
f.cleanup(opts.keep_empty_group)
|
|
|
|
if opts.remove_categories:
|
|
f.remove_categories()
|
|
|
|
if opts.remove_langpacks:
|
|
f.remove_langpacks()
|
|
|
|
if opts.remove_translations:
|
|
f.remove_translations()
|
|
|
|
if opts.remove_environments:
|
|
f.remove_environments()
|
|
|
|
f.write(open(opts.output, 'wb') if opts.output else sys.stdout)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|