2024-07-29 18:29:54 -04:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
2025-03-03 17:19:12 -05:00
|
|
|
"""Default processing of flake outputs for evaluating flake updates."""
|
|
|
|
|
|
|
|
import logging
|
|
|
|
from argparse import Namespace
|
|
|
|
|
2024-07-29 18:29:54 -04:00
|
|
|
from flupdt.cli import parse_inputs
|
2025-03-03 11:18:44 -05:00
|
|
|
from flupdt.common import configure_logger, partition
|
2025-03-03 17:19:12 -05:00
|
|
|
from flupdt.flake_build import build_output
|
|
|
|
from flupdt.flake_eval import evaluate_output
|
|
|
|
from flupdt.flake_show import get_derivations
|
|
|
|
|
|
|
|
|
|
|
|
def batch_eval(args: Namespace, flake_path: str, derivations: list[str]) -> None:
|
|
|
|
"""Bulk run evaluations or builds on a derivation set.
|
|
|
|
|
|
|
|
:params args: argument namespace to check against
|
|
|
|
:params flake_path: path to flake to be evaluated
|
|
|
|
:params derivations: list of derivations to run against
|
|
|
|
:returns None
|
|
|
|
"""
|
|
|
|
for d in derivations:
|
|
|
|
if args.evaluate:
|
|
|
|
evaluate_output(flake_path, d)
|
|
|
|
if args.build:
|
|
|
|
build_output(flake_path, d)
|
2024-08-03 00:21:44 -04:00
|
|
|
|
2024-07-29 18:29:54 -04:00
|
|
|
|
2025-03-01 23:29:01 -05:00
|
|
|
def main() -> None:
|
|
|
|
"""Sets up logging, parses args, and runs evaluation routine.
|
|
|
|
|
|
|
|
:returns: None
|
|
|
|
|
|
|
|
"""
|
2025-03-03 17:19:12 -05:00
|
|
|
configure_logger("DEBUG")
|
2024-07-29 18:29:54 -04:00
|
|
|
args = parse_inputs()
|
2024-08-02 09:13:06 -04:00
|
|
|
flake_path = args.flake_path
|
2025-03-03 11:18:44 -05:00
|
|
|
derivations, hydra_jobs = partition(
|
2024-08-04 11:24:38 -04:00
|
|
|
lambda s: s.startswith("hydraJobs"), get_derivations(flake_path)
|
|
|
|
)
|
2025-03-03 17:19:12 -05:00
|
|
|
derivations, hydra_jobs = list(derivations), list(hydra_jobs)
|
2024-08-02 09:13:06 -04:00
|
|
|
logging.info(f"derivations: {list(derivations)}")
|
2025-03-03 17:19:12 -05:00
|
|
|
batch_eval(args, flake_path, derivations)
|
2024-07-29 18:29:54 -04:00
|
|
|
|
2024-08-04 11:24:38 -04:00
|
|
|
if not args.keep_hydra:
|
|
|
|
logging.info("--keep-hydra flag is not specified, removing Hydra jobs")
|
|
|
|
else:
|
2025-03-03 17:19:12 -05:00
|
|
|
batch_eval(args, flake_path, hydra_jobs)
|
2024-08-04 11:24:38 -04:00
|
|
|
|
2024-07-29 18:29:54 -04:00
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
main()
|