blob: 3bcb93962c6c4308ff85446da3af8385a2b5dcd2 [file] [log] [blame]
#!/usr/bin/python3
#
# Copyright 2020-2023 The Khronos Group Inc.
#
# SPDX-License-Identifier: Apache-2.0
"""Script to create symbolic links for aliases in reference pages
Usage: makemanaliases.py -refdir refpage-output-directory"""
import argparse
import os
import sys
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-genpath', action='store',
default=None,
help='Path to directory containing generated apimap.py module')
parser.add_argument('-refdir', action='store',
required=True,
help='Path to directory containing reference pages to symlink')
args = parser.parse_args()
# Look for apimap.py in the specified directory
if args.genpath is not None:
sys.path.insert(0, args.genpath)
import apimap as api
# Change to refpage directory
try:
os.chdir(args.refdir)
except:
print('Cannot chdir to', args.refdir, file=sys.stderr)
sys.exit(1)
# For each alias in the API alias map, create a symlink if it
# does not exist - and warn if it does exist.
for key in api.alias:
if key.endswith(('_EXTENSION_NAME', '_SPEC_VERSION')):
# No reference pages are generated for these meta-tokens, so
# attempts to alias them will fail. Silently skip them.
continue
alias = key + '.html'
src = api.alias[key] + '.html'
if not os.access(src, os.R_OK):
# This should not happen, but is possible if the api module is
# not generated for the same set of APIs as were the refpages.
print('No source file', src, file=sys.stderr)
continue
if os.access(alias, os.R_OK):
# If the link already exists, that is not necessarily a
# problem, so do not fail, but it should be checked out.
# The usual case for this is not cleaning the target directory
# prior to generating refpages.
print('Unexpected alias file "' + alias + '" exists, skipping',
file=sys.stderr)
else:
# Create link from alias refpage to page for what it is aliasing
os.symlink(src, alias)