#!/usr/bin/env python3 # # Copyright (c) 2019, Nordic Semiconductor ASA # # SPDX-License-Identifier: Apache-2.0 '''Tool for a simple parsing of YAML files and return a ;-list of = pairs to use within a CMake build file. ''' import argparse import sys import yaml import pykwalify.core METADATA_SCHEMA = '''\ ## A pykwalify schema for basic validation of the structure of a ## metadata YAML file. ## # The zephyr/module.yml file is a simple list of key value pairs to be used by # the build system. type: map mapping: build: required: true type: map mapping: cmake: required: false type: str kconfig: required: false type: str ''' def main(): parser = argparse.ArgumentParser(description=''' Converts YAML to a CMake list''') parser.add_argument('-i', '--input', required=True, help='YAML file with data') parser.add_argument('-o', '--output', required=True, help='File to write with CMake data') parser.add_argument('-s', '--section', required=True, help='Section in YAML file to parse') args = parser.parse_args() with open(args.input, 'r') as f: meta = yaml.safe_load(f.read()) pykwalify.core.Core(source_data=meta, schema_data=yaml.safe_load(METADATA_SCHEMA)).validate() val_str = '' section = meta.get(args.section) if section is not None: for key in section: val_str += '{}={}\n'.format(key, section[key]) with open(args.output, 'w') as f: f.write(val_str) if __name__ == "__main__": main()