X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic.wiki.git;a=blobdiff_plain;f=assets%2Fcheck-and-fix.py;h=3c2861d55cf54e59dd3ca1da11635d5255521c9d;hp=ffd4f1d7bb0aea07f055617b8090ca0ce2d636fb;hb=724ad6284ce242f1ca77af97e0df97f459de85cb;hpb=cdc6056a22e6e865cce6880007014237fa38805f diff --git a/assets/check-and-fix.py b/assets/check-and-fix.py index ffd4f1d..3c2861d 100755 --- a/assets/check-and-fix.py +++ b/assets/check-and-fix.py @@ -1,5 +1,7 @@ #!/usr/bin/env python3 +# Run in wiki root + # Well, this wasn't supposed to be so long and complicated. # Anyway, it makes sure the wiki works on both Gitlab and Github by moving # stuff around and fixing links. Then it reports all remaining broken links @@ -66,7 +68,7 @@ LINK_REGEX = compile_regex(""" """) -dry_run = False +fix = False def strip_header_link(link: str) -> str: @@ -124,10 +126,10 @@ def fix_dir_structure(): if os.path.exists(fixed): print("warning: collision: {}".format(path)) - elif dry_run: - print("would rename {} to {}".format(path, fixed)) - else: + elif fix: os.rename(path, fixed) + else: + print("would rename {} to {}".format(path, fixed)) def is_between_files(link: str) -> bool: @@ -178,15 +180,14 @@ def fix_links(): changes = [] replacer = functools.partial(replace_link, changes) contents_new = LINK_REGEX.sub(replacer, contents) - if dry_run and any(changes): - print("would convert these links in {}:".format(path)) - for change in changes: - print(change) - - if not dry_run and contents != contents_new: + if fix and contents != contents_new: f.seek(0) f.write(contents_new) f.truncate() + elif not fix and any(changes): + print("would convert these links in {}:".format(path)) + for change in changes: + print(change) def link_to_path(current_file: str, link: str) -> str: @@ -198,7 +199,7 @@ def link_to_path(current_file: str, link: str) -> str: # when not using subdirs, nothing or "." works for all 3 if link.startswith("..") or link.startswith("/"): - print("file: {} bad link: {}", link) + print("file: {} bad link: {}".format(current_file, link)) # path relative to wiki root, not curent file current_dir = dirname(current_file) @@ -275,7 +276,7 @@ def find_unlinked(all_paths: List[str]): walk_links(canonical_to_real, is_linked, "Home.md") - for path, linked in is_linked.items(): + for path, linked in sorted(is_linked.items()): if not linked: print("not reachable from Home: {}".format(path)) @@ -287,9 +288,9 @@ def check_links(): def main(): - global dry_run - if len(sys.argv) > 1 and sys.argv[1] == "--dry-run": - dry_run = True + global fix + if len(sys.argv) > 1 and sys.argv[1] == "--fix": + fix = True # convert file paths - put everything into root fix_dir_structure()