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

81 lines
2.4 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
Replace licenses with Apache 2.0
"""
import argparse
from datetime import date
from pathlib import Path
def main():
parser = argparse.ArgumentParser(
description='replaces licenses with Apache 2.0')
parser.add_argument('--working-dir', '-wd', type=str,
help='Working directory (default: .)', default=str(Path.cwd()))
parser.add_argument('--no-year', action='store_true', help='Do not include years in license header')
args = parser.parse_args()
working_dir = Path(args.working_dir).expanduser().resolve()
files = [file for file in working_dir.rglob('*') if file.suffix in ['.cpp', '.hpp']]
year = ''
if not args.no_year:
year = f'2020 - {date.today().year} '
license_text = f"""// SPDX-License-Identifier: Apache-2.0
// Copyright {year}Pionix GmbH and Contributors to EVerest
"""
success = 0
failure = 0
count = len(files)
for file in files:
content = file.read_text()
if content.startswith('/*'):
needle = '*/\n'
end = content.find(needle) + len(needle)
new_content = license_text + content[end:]
file.write_text(new_content)
print(f'Modified {file} with new license header')
success += 1
else:
content_lines = content.splitlines()
end = 0
for line in content_lines:
if line.startswith('//'):
end += 1
else:
break
new_content = license_text + '\n'.join(content_lines[end:]) + '\n'
file.write_text(new_content)
success += 1
if success != count:
print('ERROR during license replacement')
else:
print('Everything went well')
manifest_files = [file for file in working_dir.rglob('*') if file.name == 'manifest.yaml']
for file in manifest_files:
manifest = file.read_text()
needle = 'license:'
start = manifest.find(needle)
end = manifest.find('\n', start+len(needle))
new_manifest = manifest[:start] + 'license: https://opensource.org/licenses/Apache-2.0' + manifest[end:]
file.write_text(new_manifest)
if __name__ == '__main__':
main()