-
Notifications
You must be signed in to change notification settings - Fork 0
/
addons_xml_generator.py
executable file
·66 lines (60 loc) · 2.39 KB
/
addons_xml_generator.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
#!/usr/bin/python
""" addons.xml generator """
import os, hashlib
class Generator:
"""
Generates a new addons.xml file from each addons addon.xml file.
Must be run from the root of the checked-out repo. Only handles
single depth folder structure.
"""
def __init__( self ):
# generate file
self._generate_addons_file()
self._generate_md5_file()
def _generate_addons_file( self ):
# addon list
addons = sorted(os.listdir( "." ))
# final addons text
addons_xml = u"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<addons>\n"
# loop thru and add each addons addon.xml file
for addon in addons:
try:
# skip any file or .svn folder
if ( not os.path.isdir( addon ) or addon == ".git" ): continue
# create path
_path = os.path.join( addon, "addon.xml" )
# split lines for stripping
xml_lines = open( _path, "r" ).read().splitlines()
# new addon
addon_xml = ""
# loop thru cleaning each line
for line in xml_lines:
# skip encoding format line
if ( line.find( "<?xml" ) >= 0 ): continue
# add line
addon_xml += line.rstrip() + "\n"
# we succeeded so add to our final addons.xml text
addons_xml += addon_xml.rstrip() + "\n\n"
except Exception as e:
# missing or poorly formatted addon.xml
print("Excluding %s for %s" % ( _path, e, ))
# clean and add closing tag
addons_xml = addons_xml.strip() + u"\n</addons>\n"
# save file
self._save_addons_file( addons_xml )
def _save_addons_file( self, addons_xml ):
try:
# write the bytestring to the file
open( "addons.xml", "w" ).write( addons_xml )
except Exception as e:
# oops
print("An error occurred saving file\n%s" % ( e, ))
def _generate_md5_file( self ):
try:
# write md5 file
open( "addons.xml.md5", "w" ).write( hashlib.md5(open('addons.xml','rb').read()).hexdigest() )
except Exception as e:
print("An error occured saving md5 file\n%s" % ( e, ))
if ( __name__ == "__main__" ):
# start
Generator()