#!/usr/bin/env python3 """Remove only this source version's inventory; never recurse directories.""" import argparse from pathlib import Path import stat from install_layout import arguments, inventory, layout, staged def main(): parser = argparse.ArgumentParser(description=__doc__) arguments(parser) parser.add_argument('--root', help='legacy alias for --prefix') args = parser.parse_args() if args.root: args.prefix = args.root files = [staged(path, args.destdir) for path, _ in inventory(Path(__file__).resolve().parent.parent, layout(args))] for path in files: try: mode = path.lstat().st_mode except FileNotFoundError: continue if not (stat.S_ISREG(mode) or stat.S_ISLNK(mode)): raise ValueError(f'Refusing non-file: {path}') for path in files: path.unlink(missing_ok=True) # Only try the immediate owned directories, never walk up to / or DESTDIR. parents = {p.parent for p in files} for parent in sorted(parents, key=lambda p: len(p.parts), reverse=True): try: parent.rmdir() except OSError: pass if __name__ == '__main__': main()