Files
cariflex/tools/EVerest-main/cmake/trailbook/create_metadata_yaml.py
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

86 lines
2.6 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: andreas.heinrich@pionix.de
This script creates a trailbook_metadata.yaml file
based on the versions found in the multiversion root directory.
"""
import argparse
from pathlib import Path
import yaml
def main():
parser = argparse.ArgumentParser(description='Creates a trailbook_metadata.yaml file')
parser.add_argument(
'--multiversion-root-directory',
type=Path,
dest='multiversion_root_dir',
action='store',
required=True,
help='Path to the root directory of the multiversion documentation'
)
parser.add_argument(
'--output-path',
type=Path,
dest='output_path',
action='store',
required=True,
help='Path where the trailbook_metadata.yaml file will be created'
)
parser.add_argument(
'--additional-version',
type=str,
dest='additional_versions',
action='append',
default=[],
help='Additional version to include in the metadata (can be used multiple times)'
)
args = parser.parse_args()
if not args.multiversion_root_dir.is_absolute():
raise ValueError("Multiversion root directory must be absolute")
if not args.multiversion_root_dir.is_dir():
print(f"\033[33mWarning: {args.multiversion_root_dir} does not exist or is not a directory, it is treated as an empty multiversion root dir\033[0m")
if not args.output_path.is_absolute():
raise ValueError("Output path must be absolute")
if args.output_path.exists():
raise FileExistsError("Output path already exists")
versions_list = []
if args.multiversion_root_dir.is_dir():
for instance_dir in args.multiversion_root_dir.iterdir():
if not instance_dir.is_dir():
continue
if not (instance_dir / 'index.html').is_file():
continue
versions_list.append(instance_dir.name)
versions_list.extend(args.additional_versions)
versions_list = list(set(versions_list))
if len(versions_list) == 0:
raise ValueError("No versions found in the specified multiversion root directory")
versions_list.sort()
# create yaml content
data = {
'versions': versions_list
}
# render yaml content
with args.output_path.open('w') as f:
yaml.dump(data, f, default_flow_style=False)
if __name__ == "__main__":
try:
main()
except Exception as e:
print(f"Error: {e}")
exit(1)