42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
|
#!/usr/bin/env python3
|
||
|
import sys
|
||
|
import os
|
||
|
import pathlib
|
||
|
import typing
|
||
|
|
||
|
def die(msg):
|
||
|
print(msg)
|
||
|
exit(1)
|
||
|
|
||
|
def line_to_path(base_path, line):
|
||
|
path = pathlib.Path(base_path, line.lstrip('/'))
|
||
|
return path
|
||
|
|
||
|
def get_filenames_from_droplist(base_path, path):
|
||
|
lines = path.read_text().strip().splitlines()
|
||
|
return [line_to_path(base_path, line) for line in lines if line]
|
||
|
|
||
|
def drop_paths(paths, output_dir):
|
||
|
for f in paths:
|
||
|
assert f.is_file()
|
||
|
f.unlink()
|
||
|
print(f"Removed {f.relative_to(output_dir)}")
|
||
|
|
||
|
def main():
|
||
|
if len(sys.argv) != 2:
|
||
|
die(f'Usage: {sys.argv[0]} [hugo-output-directory]')
|
||
|
|
||
|
output_dir = pathlib.Path(sys.argv[1])
|
||
|
|
||
|
if not output_dir.is_dir():
|
||
|
die(f'{output_dir} must be a hugo output directory')
|
||
|
|
||
|
all_droplists = list(output_dir.rglob('*.droplist'))
|
||
|
all_files_to_drop = [f for droplist in all_droplists for f in get_filenames_from_droplist(output_dir, droplist)]
|
||
|
drop_paths(all_files_to_drop, output_dir)
|
||
|
drop_paths(all_droplists, output_dir)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|