Mercurial > public > ostc4
view Documentations/setGPLHeader.py @ 1028:3d9552e4997c GasConsumption
Code improvment: line <=> menu id function:
In generell the structure of the menus is defined by the tStructure.h using global state defines. In some implementation hardcoded line numbers are used. Risk: In case the order of menu items change the update of other code sections could be forgotten (in the case the update of the top menu) causing unintended behavior. To avoid this the hard coded lines have been replaced by a function connecting the intended function to the menu item defined in the tstructure.h.
| author | Ideenmodellierer |
|---|---|
| date | Sun, 07 Sep 2025 19:08:43 +0200 |
| parents | 6237372f76a4 |
| children |
line wrap: on
line source
#! /usr/bin/env python3 from __future__ import print_function import os, sys, glob,re, codecs ############################################################################## OSTC4=os.getcwd() if not os.path.exists( os.path.join(OSTC4, 'Discovery') ): raise 'Wrong start directory...' ############################################################################## def walk(OSTC4): for dir in ['BootLoader', 'Common', 'Discovery', 'FontPack', 'Small_CPU']: # Make sure we have the top directory... if not os.path.exists( os.path.join(OSTC4, dir) ): raise 'Missing ' + dir # Then walk in all its existing source sub-directories... for sub in ['.', 'Inc', 'Src']: path = os.path.join(OSTC4, dir, sub) if not os.path.exists(path): continue print(path + ':') for file in sorted( glob.iglob( os.path.join(path, '*.[chs]') ) ): try: work(file) except Exception as e: raise RuntimeError('Cannot process ' + file + ':\n\t' + str(e)) ############################################################################## with open(os.path.join(OSTC4, 'Documentations', 'GPL_template.txt')) as f: template = f.read() def work(file): # Unclear what is done if encoding is not yet UTF-8... with open(file, 'rt', encoding='cp1252') as f: lines = f.read().splitlines() # Set defaults kw = {} kw['file'] = file.replace(OSTC4+'/', '') kw['brief'] = '' kw['date'] = '2018' # Try to gather info from existing header, if any: for line in lines: # Skip files that already have a GNU license: if 'GNU General Public License' in line: print('(done)\t' + file) return get(line, 'brief', kw) get(line, 'date', kw) # Replace kw in header header = template for k,v in kw.items(): header = header.replace('$'+k, v) # Overwrite resulting file, normalizing EOL with open(file, 'wt', encoding='utf-8') as f: for line in header.splitlines(): f.write(line.rstrip() + '\n') for line in lines: f.write(line.rstrip() + '\n') print('+\t' + file) ############################################################################## def get(line, word, kw): m = re.search('(@|\\\\)' + word + '\s*(.*)', line) if m: kw[word] = m.group(2) ############################################################################## walk(OSTC4)
