93 lines
2.3 KiB
Python
93 lines
2.3 KiB
Python
import os
|
|
import shutil
|
|
import subprocess
|
|
from pathlib import Path
|
|
|
|
import click
|
|
|
|
import mlflow
|
|
|
|
mlflow_version = mlflow.version.VERSION
|
|
|
|
|
|
def build_docs(package_manager, version):
|
|
env = os.environ.copy()
|
|
|
|
# ensure it ends with a "/"
|
|
base_url = env.get("DOCS_BASE_URL", "/docs/").rstrip("/") + "/"
|
|
api_reference_prefix = (
|
|
env.get("API_REFERENCE_PREFIX", "https://mlflow.org/docs/").rstrip("/") + "/"
|
|
)
|
|
|
|
output_path = Path(f"_build/{version}")
|
|
versioned_url = Path(f"{base_url}{version}")
|
|
build_path = Path("build")
|
|
|
|
print(f"Building for `{versioned_url}`...")
|
|
|
|
if output_path.exists():
|
|
shutil.rmtree(output_path)
|
|
|
|
if build_path.exists():
|
|
shutil.rmtree(build_path)
|
|
|
|
subprocess.check_call(
|
|
package_manager + ["build"],
|
|
env={
|
|
**env,
|
|
"DOCS_BASE_URL": str(versioned_url),
|
|
"API_REFERENCE_PREFIX": f"{api_reference_prefix}{version}",
|
|
**({"DOCS_NO_INDEX": "true"} if version != "latest" else {}),
|
|
},
|
|
)
|
|
shutil.copytree(build_path, output_path)
|
|
|
|
|
|
@click.command()
|
|
@click.option(
|
|
"--use-npm",
|
|
"use_npm",
|
|
is_flag=True,
|
|
default=False,
|
|
help="Whether or not to use NPM as a package manager (in case yarn in unavailable)",
|
|
)
|
|
@click.option(
|
|
"--no-r",
|
|
"no_r",
|
|
is_flag=True,
|
|
default=False,
|
|
help="Whether or not to skip building R documentation.",
|
|
)
|
|
def main(use_npm, no_r):
|
|
gtm_id = os.environ.get("GTM_ID")
|
|
|
|
assert gtm_id, (
|
|
"Google Tag Manager ID is missing, please ensure that the GTM_ID environment variable is set"
|
|
)
|
|
|
|
package_manager = ["npm", "run"] if use_npm else ["yarn"]
|
|
build_command = ["build-api-docs:no-r"] if no_r else ["build-api-docs"]
|
|
|
|
subprocess.check_call(package_manager + build_command)
|
|
subprocess.check_call(package_manager + ["convert-notebooks"])
|
|
|
|
output_path = Path("_build")
|
|
if output_path.exists():
|
|
shutil.rmtree(output_path)
|
|
output_path.mkdir(parents=True, exist_ok=True)
|
|
|
|
for v in [mlflow_version, "latest"]:
|
|
build_docs(package_manager, v)
|
|
|
|
final_path = Path("build")
|
|
if final_path.exists():
|
|
shutil.rmtree(final_path)
|
|
|
|
shutil.move(output_path, final_path)
|
|
|
|
print("Finished building! Output can be found in the `build` directory")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|