Files
Eric F d398a6ced2 Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- CitrineOS core extracted (CSMS OCPP 2.0.1)
- OpenOCPP extracted (firmware OCPP 1.6J/2.0.1)
- ShapeShifter library installed (pip install -e)
- ShapeShifter specification extracted
- EVerest extracted

TODO updated with progress
2026-06-08 00:38:27 -04:00

67 lines
1.8 KiB
Python
Executable File

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# SPDX-License-Identifier: Apache-2.0
# Copyright Pionix GmbH and Contributors to EVerest
#
"""
author: kai-uwe.hermann@pionix.de
Parse a EVerest config and return a CMake command line to build only those modules
"""
import argparse
import yaml
import sys
from pathlib import Path
def get_modules(config_yaml_path: Path):
try:
config = yaml.safe_load(config_yaml_path.read_text())
module_names = set()
for _key, value in config['active_modules'].items():
module_names.add(value['module'])
modules = ';'.join(sorted(module_names))
return f'-DEVEREST_INCLUDE_MODULES="{modules}"'
except yaml.YAMLError as err:
raise Exception(f'Could not parse config file {config_yaml_path}') from err
def main() -> int:
parser = argparse.ArgumentParser(
description='parse EVerest configs and extract modules')
parser.add_argument('config',
help='Path to EVerest config',
nargs=1)
parser.add_argument('--full',
action='store_true',
default=False,
help='Set this flag if you want a full cmake command line (with "build" as default build-dir)')
args = parser.parse_args()
config_path = Path(args.config[0]).expanduser().resolve()
try:
modules = get_modules(config_path)
if args.full:
print(f'cmake -S . -B build {modules}')
else:
print(modules)
except Exception as err:
print(f'Could not generate CMake command line: {err}')
return 1
return 0
if __name__ == '__main__':
return_value = 1
try:
return_value = main()
except Exception as e:
print(f'Error: {e}')
return_value = 1
sys.exit(return_value)