Fix opening log directory
[pyrook:pyrook.git] / build.py
1 #! /usr/bin/env python
2 # convenience script - compiles all files into a single
3 # file for ease of distribution and compresses with extra files
4 import tarfile, zipfile, os, stat, glob
5 from PySide.QtGui import QIcon, QPixmap, QApplication
6
7 ### build .py file
8 import sys
9 if len(sys.argv) == 1:
10     print "You must specify a target."
11     exit()
12 target = sys.argv[1]
13 platform = "pyrook_" + target + ".py"
14 if not os.path.exists(platform):
15     print "No such platform file."
16     exit()
17
18 libs = glob.glob("PyRook/*.py")
19
20 std_imports = []
21 lib_imports = []
22 main_code = []
23 hashbang = []
24
25 for f in (open(i) for i in libs + [platform]):
26     try:
27         std, lib, local, rest = f.read().split("\n\n", 3)
28     except ValueError:
29         # probably the module __init__ file, don't worry about it
30         continue
31     for line in std.split("\n"):
32         if line[:2] != "#!":
33             if line not in std_imports:
34                 std_imports.append(line)
35         else:
36             hashbang = [line]
37     for line in lib.split("\n"):
38         if line not in lib_imports:
39             lib_imports.append(line)
40     main_code.append(rest)
41     f.close()
42
43 outpath = "pyrook_release_" + target + ".py"
44 out = open(outpath, "w")
45
46 out.write("\n".join(hashbang + std_imports + lib_imports + main_code) + "\n")
47 out.close()
48 os.chmod(outpath, stat.S_IXUSR | os.stat(outpath).st_mode)
49
50
51 ### compress for distribution
52 ### windows
53 windist = zipfile.ZipFile("pyrook_windows.zip", "w", zipfile.ZIP_DEFLATED)
54 windist.write(outpath, "pyrook.pyw")
55 # windows pyside doesn't like svgs
56 app = QApplication("")
57 icon = QIcon("pyrook_logo.svg")
58 for size in (16,32,64):
59     pix = icon.pixmap(size, size)
60     path = "pyrook_logo_{}.png".format(size)
61     pix.save(path, "png")
62     windist.write(path)
63 windist.close()
64
65 ### unix
66 unixdist = tarfile.open("pyrook_unix.tar.gz", "w:gz")
67 unixdist.add(outpath, "pyrook/pyrook.py")
68 unixdist.add("pyrook_logo.svg", "pyrook/pyrook_logo.svg")
69 unixdist.close()