OSDN Git Service

ver0.4.0
[mmo/main.git] / package.py
1 import os, os.path
2 import subprocess
3 import zipfile
4 import re
5
6 base_dir = os.path.dirname(__file__)
7 subprocess.call('Devenv "' + os.path.join(base_dir, 'mmo.sln') + '" /build release', shell=True)
8
9 def make_full_package(model = True):
10         version_header = open(os.path.join(base_dir, 'client/version.hpp')).read()
11         ver_major =    re.search("#define MMO_VERSION_MAJOR\s+(\d+)", version_header).group(1)
12         ver_minor =    re.search("#define MMO_VERSION_MINOR\s+(\d+)", version_header).group(1)
13         ver_revision = re.search("#define MMO_VERSION_REVISION\s+(\d+)", version_header).group(1)
14
15         ver_text = ver_major + "." + ver_minor + "." + ver_revision
16
17         build_version_path = os.path.join(base_dir, 'client/buildversion.hpp')
18
19         if os.path.exists(build_version_path):
20             build_version_header = open(build_version_path).read()
21             ver_build =    re.search("#define MMO_VERSION_BUILD\s+(\d+)", build_version_header).group(1)
22             ver_text += "_" + ver_build
23             
24         if (model):
25                 zip_path = os.path.join(base_dir, "mmo-" + ver_text + ".zip")
26         else:
27                 zip_path = os.path.join(base_dir, "mmo-nomodel-" + ver_text + ".zip")
28                 
29         zip = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED)
30
31         bin_path = os.path.join(base_dir, 'client/bin/')
32
33         zip.write(os.path.join(base_dir, 'release/client.exe'), 'client.exe')
34         zip.write(os.path.join(base_dir, 'readme.txt'), 'readme.txt')
35         zip.write(os.path.join(base_dir, 'license.txt'), 'license.txt')
36         zip.write(os.path.join(base_dir, 'mmd.txt'), 'mmd.txt')
37
38         zip.write(os.path.join(bin_path, 'server/config.json'), 'server/config.json')
39         zip.write(os.path.join(bin_path, 'server/channels/ch000/config.json'), 'server/channels/ch000/config.json')
40
41         zip.write(os.path.join(bin_path, 'config.json'), 'config.json')
42         zip.write(os.path.join(bin_path, 'server/server.exe'), 'server/server.exe')
43
44         for root, dirs, files in os.walk(os.path.join(bin_path, 'widgets')):
45             for file in files:
46                 absolute_path = os.path.join(root, file)
47                 relative_path = os.path.relpath(absolute_path, bin_path)
48                 zip.write(absolute_path, relative_path)
49                 
50         if (model):
51                 for root, dirs, files in os.walk(os.path.join(bin_path, 'models')):
52                     for file in files:
53                         absolute_path = os.path.join(root, file)
54                         relative_path = os.path.relpath(absolute_path, bin_path)
55                         zip.write(absolute_path, relative_path)
56         else:
57                 zip.writestr('models/', '')
58                 
59         for root, dirs, files in os.walk(os.path.join(bin_path, 'motions')):
60             for file in files:
61                 absolute_path = os.path.join(root, file)
62                 relative_path = os.path.relpath(absolute_path, bin_path)
63                 zip.write(absolute_path, relative_path)
64                 
65         for root, dirs, files in os.walk(os.path.join(bin_path, 'system')):
66             for file in files:
67                 absolute_path = os.path.join(root, file)
68                 relative_path = os.path.relpath(absolute_path, bin_path)
69                 zip.write(absolute_path, relative_path)
70                 
71         zip.writestr('music/', '')
72         zip.writestr('se/', '')
73                 
74         zip.close()
75         
76 def make_server_package():
77         version_header = open(os.path.join(base_dir, 'server/version.hpp')).read()
78         ver_major =    re.search("#define MMO_VERSION_MAJOR\s+(\d+)", version_header).group(1)
79         ver_minor =    re.search("#define MMO_VERSION_MINOR\s+(\d+)", version_header).group(1)
80         ver_revision = re.search("#define MMO_VERSION_REVISION\s+(\d+)", version_header).group(1)
81
82         ver_text = ver_major + "." + ver_minor + "." + ver_revision
83
84         build_version_path = os.path.join(base_dir, 'server/buildversion.hpp')
85
86         if os.path.exists(build_version_path):
87             build_version_header = open(build_version_path).read()
88             ver_build =    re.search("#define MMO_VERSION_BUILD\s+(\d+)", build_version_header).group(1)
89             ver_text += "_" + ver_build
90
91         zip_path = os.path.join(base_dir, "mmo-server-" + ver_text + ".zip")
92         zip = zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED)
93
94         zip.write(os.path.join(base_dir, 'license.txt'), 'license.txt')
95         zip.write(os.path.join(base_dir, 'server/readme.txt'), 'readme.txt')
96
97         bin_path = os.path.join(base_dir, 'client/bin/')
98         zip.write(os.path.join(bin_path, 'server/server.exe'), 'server.exe')
99         zip.write(os.path.join(bin_path, 'server/config.json'), 'config.json')
100         zip.write(os.path.join(bin_path, 'server/channels/ch000/config.json'), 'channels/ch000/config.json')
101                 
102         zip.close()
103         
104 make_full_package(True);
105 make_full_package(False);
106 make_server_package();