ED_LRR/noxfile.py

108 lines
3.5 KiB
Python

import nox
from nox.logger import logger
import os
import shutil
to_append = []
path = os.environ.get("PATH", "").split(os.pathsep)
while True:
python = shutil.which("python", path=os.pathsep.join(path))
if python is None:
break
python = os.path.dirname(python)
for elem in path:
if elem.startswith(python):
path.remove(elem)
to_append.append(elem)
path += to_append
path = os.pathsep.join(path)
os.environ["PATH"] = path
versions = ["3.{}".format(s) for s in [6, 7, 8]]
versions += ["3"]
nox.options.keywords = "test"
@nox.session(venv_backend="conda")
def devenv(session):
"""Set up development environment"""
global path
location = os.path.abspath(session._runner.venv.location_name)
session.env["PATH"] = os.pathsep.join([location, path, location])
session.conda_install("pycrypto", "ujson")
session.install("--no-cache-dir", "-e",".[all]")
logger.warning(f'Devenv set up, now run "conda activate {location}"')
@nox.session(python=versions, venv_backend="conda")
def test(session):
"""Run the test suite."""
global path
location = os.path.abspath(session._runner.venv.location_name)
python = os.path.join(location, "python.exe")
# friendly_name = session._runner.friendly_name
cargo_args = ["--manifest-path", "./rust/Cargo.toml"]
session.env["PATH"] = os.pathsep.join([location, path, location])
# ================================================
session.run(python, "-VV", external=True)
session.run("cargo", "clean", *cargo_args, external=True)
session.run("cargo", "clean", *(cargo_args + ["--release"]), external=True)
session.run("cargo", "test", *cargo_args, external=True)
session.conda_install("pycrypto", "ujson")
session.install("--no-cache-dir", "setuptools_rust")
session.install("--no-cache-dir", ".[all]")
session.run("py.test", "-v", *(session.posargs or []))
if session.python:
session.notify(f"build-{session.python}")
@nox.session(python=versions, venv_backend="conda")
def build(session):
"Build installer and zip"
global path
location = session._runner.venv.location_name
python = os.path.join(location, "python.exe")
location = os.path.abspath(location)
cargo_args = ["--manifest-path", "./rust/Cargo.toml"]
session.env["PATH"] = os.pathsep.join([location, path, location])
# ================================================
session.run(python, "-VV", external=True)
session.run("cargo", "clean", *cargo_args, external=True)
session.run("cargo", "clean", *(cargo_args + ["--release"]), external=True)
session.conda_install("pycrypto", "ujson")
session.install("--no-cache-dir", ".[gui,web,build]")
session.run(
"pyinstaller",
"-y",
"--console",
"--noupx",
"--clean",
"--hidden-import",
"pkg_resources.py2_warn",
"--name",
f"ED_LRR_{session.python}",
"--specpath",
"build",
"ed_lrr_gui/__main__.py",
external=True,
silent=True,
)
if session.python:
source_path = os.path.abspath(f"./dist/ED_LRR_{session.python}")
else:
source_path = os.path.abspath(f"./dist/ED_LRR")
source_path = source_path.strip(os.sep)
session.run(
"iscc",
f'/FED_LRR_{session.python}',
f'/DSourceFolder={source_path}',
"installer/ED_LRR.iss",
external=True,
silent=True,
)