-
Notifications
You must be signed in to change notification settings - Fork 0
/
makeaddin.py
32 lines (27 loc) · 1.36 KB
/
makeaddin.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
import os
import re
import zipfile
current_path = os.path.dirname(os.path.abspath(__file__))
out_zip_name = os.path.join(current_path,
os.path.basename(current_path) + ".esriaddin")
BACKUP_FILE_PATTERN = re.compile(".*_addin_[0-9]+[.]py$", re.IGNORECASE)
def looks_like_a_backup(filename):
return bool(BACKUP_FILE_PATTERN.match(filename))
with zipfile.ZipFile(out_zip_name, 'w', zipfile.ZIP_DEFLATED) as zip_file:
for filename in ('config.xml', 'README.txt', 'makeaddin.py'):
zip_file.write(os.path.join(current_path, filename), filename)
dirs_to_add = ['Images', 'Install']
for directory in dirs_to_add:
for (path, dirs, files) in os.walk(os.path.join(current_path,
directory)):
archive_path = os.path.relpath(path, current_path)
found_file = False
for file in (f for f in files if not looks_like_a_backup(f)):
archive_file = os.path.join(archive_path, file)
print archive_file
zip_file.write(os.path.join(path, file), archive_file)
found_file = True
if not found_file:
zip_file.writestr(os.path.join(archive_path,
'placeholder.txt'),
"(Empty directory)")