From 8d2c7f81609e1f91d4f630c55abe3e0d26d91751 Mon Sep 17 00:00:00 2001 From: Christian Kellner Date: Wed, 16 Dec 2020 19:17:21 +0100 Subject: [PATCH] osbuild: move mark_checkpoints to manifest Make the checkpoint marking logic a method of the Manifest class. --- osbuild/main_cli.py | 29 +---------------------------- osbuild/pipeline.py | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/osbuild/main_cli.py b/osbuild/main_cli.py index aed3429c..75cd968c 100644 --- a/osbuild/main_cli.py +++ b/osbuild/main_cli.py @@ -23,33 +23,6 @@ RED = "\033[31m" GREEN = "\033[32m" -def mark_checkpoints(pipeline, checkpoints): - points = set(checkpoints) - - def mark_stage(stage): - c = stage.id - if c in points: - stage.checkpoint = True - points.remove(c) - - def mark_assembler(assembler): - c = assembler.id - if c in points: - assembler.checkpoint = True - points.remove(c) - - def mark_pipeline(pl): - for stage in pl.stages: - mark_stage(stage) - if pl.assembler: - mark_assembler(pl.assembler) - if pl.build: - mark_pipeline(pl.build) - - mark_pipeline(pipeline) - return points - - def parse_manifest(path): if path == "-": manifest = json.load(sys.stdin) @@ -120,7 +93,7 @@ def osbuild_cli(): pipeline = manifest.pipeline if args.checkpoint: - missed = mark_checkpoints(pipeline, args.checkpoint) + missed = manifest.mark_checkpoints(args.checkpoint) if missed: for checkpoint in missed: print(f"Checkpoint {BOLD}{checkpoint}{RESET} not found!") diff --git a/osbuild/pipeline.py b/osbuild/pipeline.py index 16f1cb20..39914084 100644 --- a/osbuild/pipeline.py +++ b/osbuild/pipeline.py @@ -339,6 +339,33 @@ class Manifest: return self.pipeline.run(store, monitor, libdir, output_directory) + def mark_checkpoints(self, checkpoints): + points = set(checkpoints) + + def mark_stage(stage): + c = stage.id + if c in points: + stage.checkpoint = True + points.remove(c) + + def mark_assembler(assembler): + c = assembler.id + if c in points: + assembler.checkpoint = True + points.remove(c) + + def mark_pipeline(pl): + for stage in pl.stages: + mark_stage(stage) + if pl.assembler: + mark_assembler(pl.assembler) + if pl.build: + mark_pipeline(pl.build) + + mark_pipeline(self.pipeline) + return points + + def detect_host_runner(): """Use os-release(5) to detect the runner for the host""" osname = osrelease.describe_os(*osrelease.DEFAULT_PATHS)