Fix symlink pruning not checking for directory links.
This commit is contained in:
parent
1511852e94
commit
0d918efe4c
1 changed files with 20 additions and 16 deletions
|
@ -253,22 +253,26 @@ def export_symlinks_argparse(args):
|
|||
)
|
||||
total_paths.update(export)
|
||||
|
||||
if args.prune and not args.dry_run:
|
||||
symlinks = set(file for file in spinal.walk_generator(destination) if file.is_link)
|
||||
symlinks = symlinks.difference(total_paths)
|
||||
for old_symlink in symlinks:
|
||||
print(f'Pruning {old_symlink}.')
|
||||
os.remove(old_symlink.absolute_path)
|
||||
if not old_symlink.parent.listdir():
|
||||
os.rmdir(old_symlink.parent.absolute_path)
|
||||
checkdirs = set(spinal.walk_generator(destination, yield_directories=True, yield_files=False))
|
||||
while checkdirs:
|
||||
check = checkdirs.pop()
|
||||
if check not in destination:
|
||||
continue
|
||||
if len(check.listdir()) == 0:
|
||||
os.rmdir(check.absolute_path)
|
||||
checkdirs.add(check.parent)
|
||||
if not args.prune or args.dry_run:
|
||||
return
|
||||
|
||||
symlinks = spinal.walk_generator(destination, yield_directories=True, yield_files=True)
|
||||
symlinks = set(path for path in symlinks if path.is_link)
|
||||
symlinks = symlinks.difference(total_paths)
|
||||
for old_symlink in symlinks:
|
||||
print(f'Pruning {old_symlink}.')
|
||||
os.remove(old_symlink.absolute_path)
|
||||
if not old_symlink.parent.listdir():
|
||||
os.rmdir(old_symlink.parent.absolute_path)
|
||||
|
||||
checkdirs = set(spinal.walk_generator(destination, yield_directories=True, yield_files=False))
|
||||
while checkdirs:
|
||||
check = checkdirs.pop()
|
||||
if check not in destination:
|
||||
continue
|
||||
if len(check.listdir()) == 0:
|
||||
os.rmdir(check.absolute_path)
|
||||
checkdirs.add(check.parent)
|
||||
|
||||
def init_argparse(args):
|
||||
photodb = etiquette.photodb.PhotoDB(create=True)
|
||||
|
|
Loading…
Reference in a new issue