mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-03-10 04:27:43 +01:00
* some test about building docs * indendation error * typo - * forgot to get package hdf5 * had to add shinx and doxygen as well * oke created environmnet file * typo * dont use conda * dont use conda * cannot upload artefact commit to gh-pages * correct copy * mmh * try with tokem * set write permisison * script to update main_index for versioned documentation * rename main_index to index * use absolute path in python script * update main_index upon a release * extract release type from version * copy release notes * updated links from devdoc to slsDetectorPackage, handling .md for new versions * changed page source * updated documentation link in README * add guideline for Package Versioning to documentation also used as a test * typo in workflow * why didnt it copy? * copied from build instead of docs * change back - trigger for push * only trigger for pull_requests and releases * removed conda environment file * automatically update documentation paths in release notes * only keep templated README.md * added README and updated links * update Release notes template manually * generate release notes script not needed anymore * modified readme to reflect dependencies insides build from source * subheadings in dependencies --------- Co-authored-by: Dhanya Thattil <dhanya.thattil@psi.ch>
83 lines
2.6 KiB
Python
83 lines
2.6 KiB
Python
# SPDX-License-Identifier: LGPL-3.0-or-other
|
|
# Copyright (C) 2025 Contributors to the SLS Detector Package
|
|
"""
|
|
Script to update API VERSION file based on the version in VERSION file.
|
|
"""
|
|
|
|
import argparse
|
|
import sys
|
|
from pathlib import Path
|
|
import os
|
|
import re
|
|
import time
|
|
from datetime import datetime
|
|
|
|
|
|
ROOT_DIR = Path(__file__).resolve().parent.parent
|
|
|
|
API_FILE = ROOT_DIR / "slsSupportLib/include/sls/versionAPI.h"
|
|
|
|
VERSION_FILE = ROOT_DIR / "VERSION"
|
|
|
|
parser = argparse.ArgumentParser(description = 'updates API version')
|
|
parser.add_argument('api_module_name', choices=["APILIB", "APIRECEIVER", "APICTB", "APIGOTTHARD2", "APIMOENCH", "APIEIGER", "APIXILINXCTB", "APIJUNGFRAU", "APIMYTHEN3"], help = 'module name to change api version options are: ["APILIB", "APIRECEIVER", "APICTB", "APIGOTTHARD2", "APIMOENCH", "APIEIGER", "APIXILINXCTB", "APIJUNGFRAU", "APIMYTHEN3"]')
|
|
parser.add_argument('api_dir', help = 'Relative or absolute path to the module code')
|
|
|
|
def update_api_file(new_api : str, api_module_name : str, api_file_name : str):
|
|
|
|
regex_pattern = re.compile(rf'#define\s+{api_module_name}\s+')
|
|
with open(api_file_name, "r") as api_file:
|
|
lines = api_file.readlines()
|
|
|
|
with open(api_file_name, "w") as api_file:
|
|
for line in lines:
|
|
if regex_pattern.match(line):
|
|
api_file.write(f'#define {api_module_name} "{new_api}"\n')
|
|
else:
|
|
api_file.write(line)
|
|
|
|
def get_latest_modification_date(directory : str):
|
|
latest_time = 0
|
|
latest_date = None
|
|
|
|
for root, dirs, files in os.walk(directory):
|
|
for file in files:
|
|
if file.endswith(".o"):
|
|
continue
|
|
full_path = os.path.join(root, file)
|
|
try:
|
|
mtime = os.path.getmtime(full_path)
|
|
if mtime > latest_time:
|
|
latest_time = mtime
|
|
except FileNotFoundError:
|
|
continue
|
|
|
|
latest_date = datetime.fromtimestamp(latest_time).strftime("%y%m%d")
|
|
|
|
return latest_date
|
|
|
|
|
|
def update_api_version(api_module_name : str, api_dir : str):
|
|
api_date = get_latest_modification_date(api_dir)
|
|
api_date = "0x"+str(api_date)
|
|
|
|
with open(VERSION_FILE, "r") as version_file:
|
|
api_version = version_file.read().strip()
|
|
|
|
api_version = api_version + " " + api_date #not sure if we should give an argument option version_branch
|
|
|
|
update_api_file(api_version, api_module_name, API_FILE)
|
|
|
|
print(f"updated {api_module_name} api version to: {api_version}")
|
|
|
|
if __name__ == "__main__":
|
|
|
|
args = parser.parse_args()
|
|
|
|
api_dir = ROOT_DIR / args.api_dir
|
|
|
|
|
|
update_api_version(args.api_module_name, api_dir)
|
|
|
|
|