|
| 1 | +import json |
| 2 | +import os |
| 3 | +import shutil |
| 4 | +import sys |
| 5 | +from urllib.parse import urljoin |
| 6 | + |
| 7 | +sys.path.insert(0, os.path.abspath("..")) |
| 8 | + |
| 9 | +from rascal2 import RASCAL2_VERSION |
| 10 | + |
| 11 | + |
| 12 | +DOCS_PATH = os.path.abspath(os.path.dirname(__file__)) |
| 13 | +BUILD_PATH = os.path.join(DOCS_PATH, 'build', 'html') |
| 14 | +ROOT_PATH = os.path.join(DOCS_PATH, "..", "..") |
| 15 | + |
| 16 | +url = os.environ.get('DOC_URL', '') |
| 17 | +version = str(RASCAL2_VERSION) |
| 18 | +if len(sys.argv) > 1 and sys.argv[1].strip().endswith(version): |
| 19 | + doc_version = version |
| 20 | +else: |
| 21 | + doc_version = "dev" |
| 22 | +WEB_PATH = os.path.join(ROOT_PATH, "web", doc_version) |
| 23 | + |
| 24 | +if os.path.isdir(WEB_PATH): |
| 25 | + shutil.rmtree(WEB_PATH, ignore_errors=True) |
| 26 | + |
| 27 | +shutil.copytree(BUILD_PATH, WEB_PATH, ignore=shutil.ignore_patterns('.buildinfo', 'objects.inv', '.doctrees', |
| 28 | + '_sphinx_design_static')) |
| 29 | + |
| 30 | +releases = [entry.name for entry in os.scandir(os.path.join(ROOT_PATH, "web")) if |
| 31 | + entry.is_dir() and entry.name != '.git'] |
| 32 | +releases.sort() |
| 33 | +switch_list = [] |
| 34 | +for release in releases: |
| 35 | + switch_list.append({'name': release, |
| 36 | + 'version': release, |
| 37 | + 'url': urljoin(url, release)}) |
| 38 | + |
| 39 | +SWITCHER_FILE = os.path.join(os.path.join(ROOT_PATH, "web", 'switcher.json')) |
| 40 | +with open(SWITCHER_FILE, 'w') as switcher_file: |
| 41 | + json.dump(switch_list, switcher_file) |
| 42 | + |
| 43 | +INDEX_FILE = os.path.join(os.path.join(ROOT_PATH, "web", 'index.html')) |
| 44 | + |
| 45 | +is_latest = (len(releases) > 1 and releases[-2] == doc_version) |
| 46 | +base_url = urljoin(url, f'{doc_version}/') |
| 47 | +index_url = urljoin(base_url, 'index.html') |
| 48 | +if not os.path.exists(INDEX_FILE) or is_latest: |
| 49 | + data = [ |
| 50 | + '<!DOCTYPE html>\n', |
| 51 | + '<html>\n', |
| 52 | + ' <head>\n', |
| 53 | + f' <title>Redirecting to {base_url}</title>\n', |
| 54 | + ' <meta charset="utf-8">\n', |
| 55 | + f' <meta http-equiv="refresh" content="0; URL={index_url}">\n', |
| 56 | + f' <link rel="canonical" href="{index_url}">\n', |
| 57 | + ' </head>\n', |
| 58 | + '</html>', |
| 59 | + ] |
| 60 | + |
| 61 | + with open(INDEX_FILE, 'w') as index_file: |
| 62 | + index_file.writelines(data) |
0 commit comments