107 lines
3.5 KiB
Python
107 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 [5, 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,
|
|
)
|