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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
import os
import shutil
import sys
from pathlib import Path
import click
from spin import util
from spin.cmds import meson
@click.command()
@click.option(
"--build-dir",
default="build",
help="Build directory; default is `$PWD/build`"
)
@click.option(
"--clean",
is_flag=True,
help="Clean previously built docs before building"
)
def docs(build_dir, clean=False):
"""
📖 Build documentation
"""
if clean:
doc_dir = Path("./doc/build").absolute()
if doc_dir.is_dir():
print(f"Removing `{doc_dir}`")
shutil.rmtree(doc_dir)
site_path = meson._get_site_packages()
if site_path is None:
print("No built scikit-misc found; run `./spin build` first.")
sys.exit(1)
util.run(["pip", "install", "-q", "-r", "requirements/docs.txt"])
PYTHONPATH = os.environ.get("PYTHONPATH", "")
os.environ["SPHINXOPTS"] = "-W"
os.environ['PYTHONPATH'] = f'{site_path}{os.sep}:{PYTHONPATH}'
util.run(["make", "-C", "doc", "html"], replace=True)
@click.command()
@click.option(
"--build-dir",
default="build",
help="Build directory; default is `$PWD/build`"
)
def coverage(build_dir):
"""
📊 Generate coverage report
"""
site_path = meson._get_site_packages()
util.run([
"python",
"-m",
"coverage",
"report",
"--data-file",
f"{site_path}/.coverage",
], replace=True)
@click.command()
@click.option(
"--build-dir",
default="build",
help="Build directory; default is `$PWD/build`"
)
def coverage_html(build_dir):
"""
📊 Generate HTML coverage report
"""
site_path = meson._get_site_packages()
util.run([
"python",
"-m",
"coverage",
"html",
"--data-file",
f"{site_path}/.coverage",
], replace=True)
@click.command()
def sdist():
"""
📦 Build a source distribution in `build/meson-dist/`.
"""
# Using the build module gives better results than using
# meson directory. It creates an sdist with PKG-INFO
util.run([
"python",
"-m",
"build",
"--no-isolation",
"--skip-dependency-check",
"--sdist",
".",
], replace=True)
|