1# 2# Copyright (c) 2024 Nordic Semiconductor ASA 3# 4# SPDX-License-Identifier: Apache-2.0 5# 6 7from subprocess import run 8from os import linesep, makedirs 9from re import sub, S 10from pathlib import Path 11from sys import argv 12from shutil import rmtree, copy2 13from tempfile import mkdtemp 14 15p_root = Path(__file__).absolute().parents[1] 16p_build = p_root / 'build' 17p_pet_sample = p_root / 'samples' / 'pet' 18p_pet_cmake = p_pet_sample / 'pet.cmake' 19p_pet_include = p_pet_sample / 'include' 20p_pet_src = p_pet_sample / 'src' 21 22 23def regenerate(): 24 tmpdir = Path(mkdtemp()) 25 run(['cmake', p_pet_sample, "-DREGENERATE_ZCBOR=Y", "-DCMAKE_MESSAGE_LOG_LEVEL=WARNING"], 26 cwd=tmpdir) 27 rmtree(tmpdir) 28 29 30def check(): 31 files = (list(p_pet_include.iterdir()) + list(p_pet_src.iterdir()) + [p_pet_cmake]) 32 contents = "".join(p.read_text(encoding="utf-8") for p in files) 33 tmpdir = Path(mkdtemp()) 34 list(makedirs(tmpdir / f.relative_to(p_pet_sample).parent, exist_ok=True) for f in files) 35 list(copy2(f, tmpdir / f.relative_to(p_pet_sample)) for f in files) 36 regenerate() 37 new_contents = "".join(p.read_text(encoding="utf-8") for p in files) 38 list(copy2(tmpdir / f.relative_to(p_pet_sample), f) for f in files) 39 rmtree(tmpdir) 40 return contents == new_contents 41 42 43if __name__ == "__main__": 44 if len(argv) > 1 and argv[1] == "--check": 45 if not check(): 46 print("Check failed") 47 exit(9) 48 else: 49 regenerate() 50