blob: f1d2b1aa00a806ae48da978ef8400fd28d552634 [file] [log] [blame]
# Copyright 2022 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Script to generate ChromiumOS provision payloads."""
import os
from chromite.lib import commandline
from chromite.lib import parallel
from chromite.lib.paygen import paygen_provision_payload
from chromite.lib.paygen import paygen_stateful_payload_lib
def ParseArguments(argv):
"""Returns a namespace for the CLI arguments."""
parser = commandline.ArgumentParser(description=__doc__)
parser.add_argument(
"--image",
type="str_path",
required=True,
help="The path to local image to build the quick "
"provision payloads for.",
)
parser.add_argument(
"--output",
type="str_path",
help="The output directory to generate quick "
"provision payloads for.",
default=".",
)
opts = parser.parse_args(argv)
# Check if output is valid directory.
if not os.path.isdir(opts.output):
parser.error("Please pass in a valid output directory.")
opts.Freeze()
return opts
def main(argv) -> None:
opts = ParseArguments(argv)
parallel.RunParallelSteps(
[
# Stateful generation is usually the slowest.
lambda: paygen_stateful_payload_lib.GenerateStatefulPayload(
opts.image, opts.output
),
lambda: paygen_stateful_payload_lib.GenerateZstdStatefulPayload(
opts.image, opts.output
),
lambda: paygen_provision_payload.GenerateProvisionPayloads(
opts.image, opts.output
),
]
)