46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
# Copyright (c) 2023 Nordic Semiconductor ASA
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
import shlex
|
|
|
|
from subprocess import check_output
|
|
from pathlib import Path
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def west_sign_with_imgtool(
|
|
build_dir: Path,
|
|
output_bin: Path | None = None,
|
|
key_file: Path | None = None,
|
|
version: str | None = None,
|
|
timeout: int = 10
|
|
):
|
|
"""Wrapper method for `west sign -t imgtool` comamnd"""
|
|
command = [
|
|
'west', 'sign',
|
|
'-t', 'imgtool',
|
|
'--no-hex',
|
|
'--build-dir', str(build_dir)
|
|
]
|
|
if output_bin:
|
|
command.extend(['--sbin', str(output_bin)])
|
|
|
|
command_extra_args = []
|
|
if key_file:
|
|
command_extra_args.extend(['--key', str(key_file)])
|
|
if version:
|
|
command_extra_args.extend(['--version', version])
|
|
|
|
if command_extra_args:
|
|
command.append('--')
|
|
command.extend(command_extra_args)
|
|
|
|
logger.info(f"CMD: {shlex.join(command)}")
|
|
output = check_output(command, text=True, timeout=timeout)
|
|
logger.debug('OUT: %s' % output)
|