-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy path003_change_preamble.py
113 lines (91 loc) · 3.35 KB
/
003_change_preamble.py
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
raise ValueError("Not to be used to change the version!\nComment this line to change preamble.")
import os
before_preamble = 0
in_preamble = 1
after_preamble = 2
id_preamble_begin = '#-Begin-preamble----'
id_preamble_end = '#-End-preamble--------'
preamble_new = """#-Begin-preamble-------------------------------------------------------
#
# CERN
#
# European Organization for Nuclear Research
#
#
# This file is part of the code:
#
# PyECLOUD Version 8.7.1
#
#
# Main author: Giovanni IADAROLA
# BE-ABP Group
# CERN
# CH-1211 GENEVA 23
# SWITZERLAND
#
# Contributors: Eleonora Belli
# Philipp Dijkstal
# Lorenzo Giacomel
# Lotta Mether
# Annalisa Romano
# Giovanni Rumolo
# Eric Wulff
#
#
# Copyright CERN, Geneva 2011 - Copyright and any other
# appropriate legal protection of this computer program and
# associated documentation reserved in all countries of the
# world.
#
# Organizations collaborating with CERN may receive this program
# and documentation freely and without charge.
#
# CERN undertakes no obligation for the maintenance of this
# program, nor responsibility for its correctness, and accepts
# no liability whatsoever resulting from its use.
#
# Program and documentation are provided solely for the use of
# the organization to which they are distributed.
#
# This program may not be copied or otherwise distributed
# without permission. This message must be retained on this and
# any other authorized copies.
#
# The material cannot be sold. CERN should be given credit in
# all references.
#
#-End-preamble---------------------------------------------------------"""
new_preamble_lines = preamble_new.split('\n')
for dirpath, _, filenames in os.walk('.'):
full_paths = [os.path.join(dirpath, x) for x in filenames]
python_files = [x for x in full_paths if x.endswith('.py')]
for path in python_files:
if os.path.abspath(path) == os.path.abspath(__file__):
continue
with open(path, 'r') as f:
content = f.read()
if new_preamble_lines[0] not in content:
continue
print(path)
lines = content.split('\n')
prev_line = None
new_lines = []
status = before_preamble
for line in lines:
if status == before_preamble:
if id_preamble_begin in line:
status = in_preamble
new_lines.extend(new_preamble_lines)
elif status == in_preamble:
if id_preamble_end in prev_line:
status = after_preamble
elif status == after_preamble:
pass
if status != in_preamble:
new_lines.append(line)
prev_line = line
new_lines = [x + '\n' for ctr, x in enumerate(new_lines) if ctr + 1 != len(new_lines)]
with open(path, 'w') as f:
f.writelines(new_lines)
print(('Modified %s' % path))