Remove master key
[DeDRM_tools-LCP.git] / make_release.py
blob95bebf66b45b0c36a7d26b8f1e2d211f6fa9bc06
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
4 '''
5 A wrapper script to generate zip files for GitHub releases.
7 This script tends to be compatible with both Python 2 and Python 3.
8 '''
10 from __future__ import print_function
12 import os
13 import shutil
16 DEDRM_SRC_DIR = 'DeDRM_plugin'
17 DEDRM_SRC_TMP_DIR = 'DeDRM_plugin_temp'
18 DEDRM_README= 'DeDRM_plugin_ReadMe.txt'
19 OBOK_SRC_DIR = 'Obok_plugin'
20 OBOK_README = 'obok_plugin_ReadMe.txt'
21 RELEASE_DIR = 'release'
23 def patch_file(filepath):
24 f = open(filepath, "rb")
25 fn = open(filepath + ".tmp", "wb")
26 patch = open(os.path.join(DEDRM_SRC_DIR, "__calibre_compat_code.py"), "rb")
27 patchdata = patch.read()
28 patch.close()
30 while True:
31 line = f.readline()
32 if len(line) == 0:
33 break
35 if line.strip().startswith(b"#@@CALIBRE_COMPAT_CODE@@"):
36 fn.write(patchdata)
37 else:
38 fn.write(line)
40 f.close()
41 fn.close()
42 shutil.move(filepath + ".tmp", filepath)
46 def make_release(version):
47 try:
48 shutil.rmtree(RELEASE_DIR)
49 except:
50 pass
51 try:
52 shutil.rmtree(DEDRM_SRC_TMP_DIR)
53 except:
54 pass
56 os.mkdir(RELEASE_DIR)
58 # Copy folder
59 shutil.copytree(DEDRM_SRC_DIR, DEDRM_SRC_TMP_DIR)
61 # Modify folder
62 try:
63 shutil.rmtree(os.path.join(os.path.abspath(DEDRM_SRC_TMP_DIR), "__pycache__"))
64 except:
65 pass
67 # Patch file to add compat code.
68 for root, dirs, files in os.walk(DEDRM_SRC_TMP_DIR):
69 for name in files:
70 if name.endswith(".py"):
71 patch_file(os.path.join(root, name))
74 # Package
75 shutil.make_archive(DEDRM_SRC_DIR, 'zip', DEDRM_SRC_TMP_DIR)
76 shutil.make_archive(OBOK_SRC_DIR, 'zip', OBOK_SRC_DIR)
77 shutil.move(DEDRM_SRC_DIR+'.zip', RELEASE_DIR)
78 shutil.move(OBOK_SRC_DIR+'.zip', RELEASE_DIR)
79 shutil.copy(DEDRM_README, RELEASE_DIR)
80 shutil.copy(OBOK_README, RELEASE_DIR)
81 shutil.copy("ReadMe_Overview.txt", RELEASE_DIR)
83 # Remove temp folder:
84 shutil.rmtree(DEDRM_SRC_TMP_DIR)
86 if version is not None:
87 release_name = 'DeDRM_tools_{}'.format(version)
88 else:
89 release_name = 'DeDRM_tools'
90 result = shutil.make_archive(release_name, 'zip', RELEASE_DIR)
91 try:
92 shutil.rmtree(RELEASE_DIR)
93 except:
94 pass
95 return result
98 if __name__ == '__main__':
99 import sys
100 try:
101 version = sys.argv[1]
102 except IndexError:
103 version = None
105 print(make_release(version))