1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
# Copyright (C) 2024 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
# broken_links.py
# This script is used to find the broken links in the generated sphinx documentation.
# Pre-requisites before running this script:
#
# 1. Generate the HTML documentation as given in
# https://doc.qt.io/qtforpython-6/gettingstarted/index.html#building-the-documentation
# . This will generate a folder inside 'pyside-setup' called 'html'.
# 2. Run sphinx-build with linkcheck builder to generate an output.json file inside 'html' folder.
# The command to run is:
# sphinx-build -b linkcheck -j auto -n -c ./html/pyside6/base <folder_of_rst> ./html
#
# The final output will be <output_folder>/broken_links.json
import json
import argparse
from pathlib import Path
def find_broken_links(file_path):
with open(file_path, 'r') as file:
lines = file.readlines()
broken_links = []
for line in lines:
entry = json.loads(line)
if entry.get("status") == "broken":
broken_links.append(entry)
return broken_links
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Find broken links in a JSON file.")
parser.add_argument('--input-file', type=str, required=True, help='Path to the input JSON file')
parser.add_argument('--output-folder', type=str, default=Path(__file__).resolve().parents[2],
help='Path to the output folder')
args = parser.parse_args()
broken_links = find_broken_links(args.input_file)
output_file_path = Path(args.output_folder) / 'broken_links.json'
if broken_links:
with open(output_file_path, 'w') as outfile:
json.dump(broken_links, outfile, indent=4)
print(f"Broken links written to {output_file_path}")
else:
print("No broken links found.")
|