-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathwrite_headers_and_footers.py
More file actions
executable file
·125 lines (113 loc) · 3.57 KB
/
Copy pathwrite_headers_and_footers.py
File metadata and controls
executable file
·125 lines (113 loc) · 3.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#!/usr/bin/env python
import os, sys
HEADER_EXCEPTIONS = (
'src/MUSIC/dbopl.c',
'src/MUSIC/dbopl.h',
'src/MUSIC/midifile.c',
'src/MUSIC/midifile.h',
'src/MUSIC/opl_queue.c',
'src/MUSIC/opl_queue.h',
'src/MUSIC/opl.c',
'src/MUSIC/opl.h',
'src/MUSIC/oplplayer.c',
'src/MUSIC/oplplayer.h',
'src/PCSOUND/*',
'src/PCSOUND/Makefile.am',
'src/PCSOUND/pcsound.c',
'src/PCSOUND/pcsound.h',
'src/PCSOUND/pcsound_linux.c',
'src/PCSOUND/pcsound_sdl.c',
'src/PCSOUND/pcsound_win32.c',
'src/TEXTSCREEN/doomkeys.h',
'src/TEXTSCREEN/textscreen.h',
'src/TEXTSCREEN/txt_button.c',
'src/TEXTSCREEN/txt_button.h',
'src/TEXTSCREEN/txt_checkbox.c',
'src/TEXTSCREEN/txt_checkbox.h',
'src/TEXTSCREEN/txt_desktop.c',
'src/TEXTSCREEN/txt_desktop.h',
'src/TEXTSCREEN/txt_dropdown.c',
'src/TEXTSCREEN/txt_dropdown.h',
'src/TEXTSCREEN/txt_font.h',
'src/TEXTSCREEN/txt_gui.c',
'src/TEXTSCREEN/txt_gui.h',
'src/TEXTSCREEN/txt_inputbox.c',
'src/TEXTSCREEN/txt_inputbox.h',
'src/TEXTSCREEN/txt_io.c',
'src/TEXTSCREEN/txt_io.h',
'src/TEXTSCREEN/txt_label.c',
'src/TEXTSCREEN/txt_label.h',
'src/TEXTSCREEN/txt_main.h',
'src/TEXTSCREEN/txt_radiobutton.c',
'src/TEXTSCREEN/txt_radiobutton.h',
'src/TEXTSCREEN/txt_scrollpane.c',
'src/TEXTSCREEN/txt_scrollpane.h',
'src/TEXTSCREEN/txt_sdl.c',
'src/TEXTSCREEN/txt_sdl.h',
'src/TEXTSCREEN/txt_separator.c',
'src/TEXTSCREEN/txt_separator.h',
'src/TEXTSCREEN/txt_smallfont.h',
'src/TEXTSCREEN/txt_spinctrl.c',
'src/TEXTSCREEN/txt_spinctrl.h',
'src/TEXTSCREEN/txt_strut.c',
'src/TEXTSCREEN/txt_strut.h',
'src/TEXTSCREEN/txt_table.c',
'src/TEXTSCREEN/txt_table.h',
'src/TEXTSCREEN/txt_widget.c',
'src/TEXTSCREEN/txt_widget.h',
'src/TEXTSCREEN/txt_window.c',
'src/TEXTSCREEN/txt_window.h',
'src/TEXTSCREEN/txt_window_action.c',
'src/TEXTSCREEN/txt_window_action.h'
)
EXTENSIONS = (
'.c',
'.h',
'.inl',
'.m'
)
OLD_HEADER = ''
HEADER = ''
OLD_FOOTER = ''
FOOTER = ''
def read_file(path):
data = ''
with open(path, 'rb') as fobj:
data = fobj.read().decode('utf8')
return data
def write_file(data, path):
with open(path, 'wb') as fobj:
fobj.write(data.encode('utf8'))
def strip_old_header(filedata):
if OLD_HEADER and filedata.startswith(OLD_HEADER):
return filedata[len(OLD_HEADER):]
return filedata
def strip_old_footer(filedata):
if OLD_FOOTER and filedata.endswith(OLD_FOOTER):
return filedata[:len(OLD_FOOTER):]
return filedata
def main():
global HEADER, FOOTER, OLD_HEADER, OLD_FOOTER
HEADER = read_file('header.txt')
FOOTER = read_file('footer.txt')
if os.path.isfile('old_header.txt'):
OLD_HEADER = read_file('old_header.txt')
if os.path.isfile('old_footer.txt'):
OLD_FOOTER = read_file('old_footer.txt')
for root, dirs, files in os.walk('src'):
for f in files:
for extension in EXTENSIONS:
if f.endswith(extension):
break
else:
continue
filepath = os.path.join(root, f)
print("Processing %s" % (filepath))
filedata = read_file(filepath).strip()
if filepath not in HEADER_EXCEPTIONS:
filedata = strip_old_header(filedata)
filedata = '\n'.join((HEADER, filedata))
filedata = strip_old_footer(filedata)
filedata = '\n'.join((filedata, FOOTER))
write_file(filedata, filepath)
main()