annotate Documentations/setGPLHeader.py @ 34:01cc5959f199

... OpenOCD scripts to dump firmwares (not working)
author jDG@sauge
date Wed, 07 Mar 2018 17:35:35 +0100
parents 3a98f9e7ca58
children 6237372f76a4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
1 #! /usr/bin/env python3
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
2
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
3 from __future__ import print_function
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
4 import os, sys, glob,re, codecs
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
5
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
6 ##############################################################################
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
7
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
8 OSTC4=os.getcwd()
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
9 if not os.path.exists( os.path.join(OSTC4, 'Discovery') ):
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
10 raise 'Wrong start directory...'
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
11
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
12 ##############################################################################
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
13
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
14 def walk(OSTC4):
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
15 for dir in ['BootLoader', 'Common', 'Discovery', 'FontPack', 'Small_CPU']:
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
16 # Make sure we have the top directory...
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
17 if not os.path.exists( os.path.join(OSTC4, dir) ):
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
18 raise 'Missing ' + dir
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
19
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
20 # Then walk in all its existing source sub-directories...
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
21 for sub in ['.', 'Inc', 'Src']:
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
22 path = os.path.join(OSTC4, dir, sub)
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
23 if not os.path.exists(path):
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
24 continue
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
25 print(path + ':')
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
26 for file in glob.iglob( os.path.join(path, '*.[chs]') ):
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
27 try:
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
28 work(file)
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
29 except Exception as e:
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
30 raise RuntimeError('Cannot process ' + file + ':\n\t' + str(e))
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
31
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
32 ##############################################################################
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
33
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
34 with open(os.path.join(OSTC4, 'Documentations', 'GPL_template.txt')) as f:
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
35 template = f.read()
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
36
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
37 def work(file):
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
38
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
39 # Unclear what is done if encoding is not yet UTF-8...
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
40 with open(file, 'rt', encoding='cp1252') as f:
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
41 lines = f.read().splitlines()
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
42
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
43 # Set defaults
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
44 kw = {}
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
45 kw['file'] = file.replace(OSTC4+'/', '')
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
46 kw['brief'] = ''
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
47 kw['author'] = 'Heinrichs Weikamp'
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
48 kw['date'] = '2018'
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
49
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
50 # Try to gather info from existing header, if any:
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
51 for line in lines:
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
52 # Skip files that already have a GNU license:
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
53 if 'GNU General Public License' in line:
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
54 print('(done)\t' + file)
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
55 return
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
56
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
57 get(line, 'brief', kw)
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
58 get(line, 'author', kw)
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
59 get(line, 'date', kw)
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
60
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
61 # Replace kw in header
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
62 header = template
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
63 for k,v in kw.items():
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
64 header = header.replace('$'+k, v)
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
65
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
66 # Overwrite resulting file, normalizing EOL
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
67 with open(file, 'wt', encoding='utf-8') as f:
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
68 for line in header.splitlines():
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
69 f.write(line.rstrip() + '\n')
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
70 for line in lines:
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
71 f.write(line.rstrip() + '\n')
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
72 print('+\t' + file)
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
73
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
74 ##############################################################################
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
75
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
76 def get(line, word, kw):
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
77 m = re.search('(@|\\\\)' + word + '\s*(.*)', line)
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
78 if m:
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
79 kw[word] = m.group(2)
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
80
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
81 ##############################################################################
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
82
3a98f9e7ca58 ADD script to set GPL headers
jDG
parents:
diff changeset
83 walk(OSTC4)