CUSP-1342 - Fix See Also

Signed-off-by: Stephen Simpson <ssimpson89@users.noreply.github.com>
This commit is contained in:
Stephen Simpson
2025-12-04 12:40:26 -06:00
parent 907d92bb16
commit 890d7fc8f9
2 changed files with 159 additions and 74 deletions

View File

@@ -16,16 +16,12 @@ def setup_logging(verbose: bool = False):
level = logging.DEBUG if verbose else logging.INFO
logging.basicConfig(
level=level,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
def process_version(
config: Config,
version: str,
template_dir: Path
) -> bool:
def process_version(config: Config, version: str, template_dir: Path) -> bool:
"""Process a single Rocky Linux version.
Args:
@@ -67,7 +63,7 @@ def process_version(
repo_type=repo_type,
arch=arch,
cache_dir=cache_dir,
download_dir=version_download_dir
download_dir=version_download_dir,
)
# List packages (with man pages only)
@@ -83,19 +79,19 @@ def process_version(
if config.skip_packages:
original_count = len(packages)
packages = [
pkg for pkg in packages
if pkg.name not in config.skip_packages
pkg for pkg in packages if pkg.name not in config.skip_packages
]
filtered_count = original_count - len(packages)
if filtered_count > 0:
logger.info(f"Filtered out {filtered_count} packages based on skip list")
logger.info(
f"Filtered out {filtered_count} packages based on skip list"
)
logger.info(f"Processing {len(packages)} packages")
# Download packages
logger.info("Downloading packages...")
downloaded = repo_manager.download_packages(
packages,
max_workers=config.parallel_downloads
packages, max_workers=config.parallel_downloads
)
# Extract man pages
@@ -103,11 +99,10 @@ def process_version(
extractor = ManPageExtractor(
version_extract_dir,
skip_sections=config.skip_sections,
skip_languages=config.skip_languages
skip_languages=config.skip_languages,
)
man_files = extractor.extract_from_packages(
downloaded,
max_workers=config.parallel_downloads
downloaded, max_workers=config.parallel_downloads
)
logger.info(f"Extracted {len(man_files)} man pages")
@@ -124,8 +119,7 @@ def process_version(
logger.info("Converting man pages to HTML...")
converter = ManPageConverter(version_output_dir)
converted = converter.convert_many(
man_files_with_content,
max_workers=config.parallel_conversions
man_files_with_content, max_workers=config.parallel_conversions
)
all_man_files.extend(converted)
@@ -163,132 +157,141 @@ def process_version(
# Generate packages index page
web_gen.generate_packages_index(version, search_index)
# Set HTML paths for all man files
for man_file in all_man_files:
if not man_file.html_path:
man_file.html_path = web_gen._get_manpage_path(man_file, version)
# Link cross-references between man pages
logger.info("Linking cross-references...")
converter.link_cross_references(all_man_files, version)
# Wrap man pages in templates
logger.info("Generating man page HTML...")
for man_file in all_man_files:
web_gen.generate_manpage_html(man_file, version)
logger.info(f"Successfully processed {len(all_man_files)} man pages for Rocky Linux {version}")
logger.info(
f"Successfully processed {len(all_man_files)} man pages for Rocky Linux {version}"
)
return True
def main():
"""Main entry point."""
parser = argparse.ArgumentParser(
description='Generate HTML documentation for Rocky Linux man pages'
description="Generate HTML documentation for Rocky Linux man pages"
)
parser.add_argument(
'--versions',
nargs='+',
default=['8.10', '9.6', '10.0'],
help='Rocky Linux versions to process (default: 8.10 9.6 10.0)'
"--versions",
nargs="+",
default=["8.10", "9.6", "10.0"],
help="Rocky Linux versions to process (default: 8.10 9.6 10.0)",
)
parser.add_argument(
'--repo-types',
nargs='+',
default=['BaseOS', 'AppStream'],
help='Repository types to process (default: BaseOS AppStream)'
"--repo-types",
nargs="+",
default=["BaseOS", "AppStream"],
help="Repository types to process (default: BaseOS AppStream)",
)
parser.add_argument(
'--output-dir',
"--output-dir",
type=Path,
default=Path('./html'),
help='Output directory for HTML files (default: ./html)'
default=Path("./html"),
help="Output directory for HTML files (default: ./html)",
)
parser.add_argument(
'--download-dir',
"--download-dir",
type=Path,
default=Path('./tmp/downloads'),
help='Directory for downloading packages (default: ./tmp/downloads)'
default=Path("./tmp/downloads"),
help="Directory for downloading packages (default: ./tmp/downloads)",
)
parser.add_argument(
'--extract-dir',
"--extract-dir",
type=Path,
default=Path('./tmp/extracts'),
help='Directory for extracting man pages (default: ./tmp/extracts)'
default=Path("./tmp/extracts"),
help="Directory for extracting man pages (default: ./tmp/extracts)",
)
parser.add_argument(
'--keep-rpms',
action='store_true',
help='Keep downloaded RPM files after processing'
"--keep-rpms",
action="store_true",
help="Keep downloaded RPM files after processing",
)
parser.add_argument(
'--keep-extracts',
action='store_true',
help='Keep extracted man files after processing'
"--keep-extracts",
action="store_true",
help="Keep extracted man files after processing",
)
parser.add_argument(
'--parallel-downloads',
"--parallel-downloads",
type=int,
default=5,
help='Number of parallel downloads (default: 5)'
help="Number of parallel downloads (default: 5)",
)
parser.add_argument(
'--parallel-conversions',
"--parallel-conversions",
type=int,
default=10,
help='Number of parallel HTML conversions (default: 10)'
help="Number of parallel HTML conversions (default: 10)",
)
parser.add_argument(
'--mirror',
default='http://dl.rockylinux.org/',
help='Rocky Linux mirror URL (default: http://dl.rockylinux.org/)'
"--mirror",
default="http://dl.rockylinux.org/",
help="Rocky Linux mirror URL (default: http://dl.rockylinux.org/)",
)
parser.add_argument(
'--template-dir',
"--template-dir",
type=Path,
default=Path(__file__).parent.parent.parent / 'templates',
help='Template directory (default: ./templates)'
default=Path(__file__).parent.parent.parent / "templates",
help="Template directory (default: ./templates)",
)
parser.add_argument(
'-v', '--verbose',
action='store_true',
help='Enable verbose logging'
"-v", "--verbose", action="store_true", help="Enable verbose logging"
)
parser.add_argument(
'--skip-sections',
nargs='*',
"--skip-sections",
nargs="*",
default=None,
help='Man sections to skip (default: 3 3p 3pm). Use empty list to skip none.'
help="Man sections to skip (default: 3 3p 3pm). Use empty list to skip none.",
)
parser.add_argument(
'--skip-packages',
nargs='*',
"--skip-packages",
nargs="*",
default=None,
help='Package names to skip (default: lapack dpdk-devel gl-manpages). Use empty list to skip none.'
help="Package names to skip (default: lapack dpdk-devel gl-manpages). Use empty list to skip none.",
)
parser.add_argument(
'--skip-languages',
action='store_true',
"--skip-languages",
action="store_true",
default=None,
help='Skip non-English man pages (default: enabled)'
help="Skip non-English man pages (default: enabled)",
)
parser.add_argument(
'--keep-languages',
action='store_true',
help='Keep all languages (disables --skip-languages)'
"--keep-languages",
action="store_true",
help="Keep all languages (disables --skip-languages)",
)
parser.add_argument(
'--allow-all-sections',
action='store_true',
help='Include all man sections (overrides --skip-sections)'
"--allow-all-sections",
action="store_true",
help="Include all man sections (overrides --skip-sections)",
)
args = parser.parse_args()
@@ -319,7 +322,7 @@ def main():
skip_sections=args.skip_sections,
skip_packages=args.skip_packages,
skip_languages=skip_languages,
allow_all_sections=args.allow_all_sections
allow_all_sections=args.allow_all_sections,
)
logger.info("Rocky Man - Rocky Linux Man Page Generator")
@@ -368,5 +371,5 @@ def main():
return 0
if __name__ == '__main__':
if __name__ == "__main__":
sys.exit(main())