diff options
author | Antti Kokko <antti.kokko@qt.io> | 2021-08-30 11:30:48 +0300 |
---|---|---|
committer | Antti Kokko <antti.kokko@qt.io> | 2021-08-31 05:13:40 +0000 |
commit | d2a4d109aa3b495202691bd7d177a5b174fb0f54 (patch) | |
tree | 9628ee6c97eb86abd077621ff0d509cf6e3be54b | |
parent | 8eab6dc897c99d66b53572e96f9517ff5e6983de (diff) |
content_cleaner.py: add option for content removalv6.1.3-packaging
Change-Id: I837b9f3de65f85a18ab6e99d5ca9738be7d770ee
Reviewed-by: Tarja Sundqvist <tarja.sundqvist@qt.io>
-rwxr-xr-x | packaging-tools/content_cleaner.py | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/packaging-tools/content_cleaner.py b/packaging-tools/content_cleaner.py index e70ca17be..8438daaf7 100755 --- a/packaging-tools/content_cleaner.py +++ b/packaging-tools/content_cleaner.py @@ -3,7 +3,7 @@ ############################################################################# ## -## Copyright (C) 2020 The Qt Company Ltd. +## Copyright (C) 2021 The Qt Company Ltd. ## Contact: https://www.qt.io/licensing/ ## ## This file is part of the release tools of the Qt Toolkit. @@ -62,7 +62,7 @@ def remove_empty_directories(root_path: str): os.removedirs(dirPath) -def clean_content(input_dir: str, preserve_rules: List[str]) -> None: +def preserve_content(input_dir: str, preserve_rules: List[str]) -> None: log.info(f"Cleaning content from: '{input_dir}' - preserve_rules: {preserve_rules}") if not os.path.isdir(input_dir): raise CleanerError(f"Not a valid input directory: {input_dir}") @@ -81,10 +81,36 @@ def clean_content(input_dir: str, preserve_rules: List[str]) -> None: remove_empty_directories(input_dir) +def remove_content(input_dir: str, remove_rules: List[str]) -> None: + log.info(f"Removing files from: '{input_dir}' - remove_rules: {remove_rules}") + if not os.path.isdir(input_dir): + raise CleanerError(f"Not a valid input directory: {input_dir}") + split_remove_rules = [word for line in remove_rules for word in line.split()] + with cd(input_dir): + files_to_remove = [] + for mask in split_remove_rules: + files_to_remove.extend(glob(mask, recursive=True)) + for p in Path(".").rglob("*"): + if os.path.isdir(p): + continue + if str(p) in files_to_remove: + log.info(f"Removing: {p}") + os.remove(p) + remove_empty_directories(input_dir) + + if __name__ == "__main__": parser = argparse.ArgumentParser(prog="Clean all files from the --input-dir directory except those defined by --glob-rule") parser.add_argument("--input-dir", dest="input_dir", required=True, help="Directory to scan") - parser.add_argument("--preserve", dest="preserve_rules", required=True, action='append', + group = parser.add_mutually_exclusive_group(required=True) + group.add_argument("--preserve", dest="preserve_rules", action='append', help="One or multiple glob based rules which files to keep") + group.add_argument("--remove", dest="remove_rules", action='append', + help="One or multiple glob based rules which files to remove") args = parser.parse_args(sys.argv[1:]) - clean_content(args.input_dir, args.preserve_rules) + if args.preserve_rules: + preserve_content(args.input_dir, args.preserve_rules) + elif args.remove_rules: + remove_content(args.input_dir, args.remove_rules) + else: + sys.exit(1) |