2 # -*- coding: utf-8 -*-
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the Revised BSD License.
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 Revised BSD License for more details.
13 Copyright 2015-2024 Game Maker 2k - https://github.com/GameMaker2k
14 Copyright 2015-2024 Kazuki Przyborowski - https://github.com/KazukiPrzyborowski
16 $FileInfo: mkbundle.py - Last Update: 10/17/2024 Ver. 0.9.6 RC 1 - Author: cooldude2k $
19 from __future__
import absolute_import
, division
, print_function
, unicode_literals
, generators
, with_statement
, nested_scopes
28 tempdir
= tempfile
.gettempdir()
30 tempdir
= tempdir
.replace(os
.sep
, "/")
31 elif (os
.path
.sep
== "\\"):
32 tempdir
= tempdir
.replace(os
.path
.sep
, "/")
34 pyimplementation
= platform
.python_implementation()
35 pylist
= ['CPython', 'IronPython', 'PyPy', 'CPython2', 'CPython3', 'Python2',
36 'Python3', 'Python', 'PyPy2', 'PyPy3', 'IronPython2', 'IronPython3']
38 if (len(sys
.argv
) > 1):
39 if (sys
.argv
[1] in pylist
):
40 if (sys
.argv
[1] == "CPython"):
42 elif (sys
.argv
[1] == "IronPython"):
44 elif (sys
.argv
[1] == "PyPy"):
46 elif (sys
.argv
[1] == "CPython2"):
48 elif (sys
.argv
[1] == "CPython3"):
50 elif (sys
.argv
[1] == "Python2"):
52 elif (sys
.argv
[1] == "Python3"):
54 elif (sys
.argv
[1] == "PyPy2"):
56 elif (sys
.argv
[1] == "PyPy3"):
58 elif (sys
.argv
[1] == "IronPython2"):
60 elif (sys
.argv
[1] == "IronPython3"):
67 if (len(sys
.argv
) < 1):
68 if (pyimplementation
== "CPython"):
69 pystring
= "python"+str(sys
.version_info
[0])
70 elif (pyimplementation
== "IronPython"):
71 pystring
= "ipy"+str(sys
.version_info
[0])
72 elif (pyimplementation
== "PyPy"):
73 if (sys
.version_info
[0] == 2):
75 elif (sys
.version_info
[0] == 3):
76 pystring
= "pypy"+str(sys
.version_info
[0])
82 if (len(sys
.argv
) > 2):
83 if (os
.path
.exists("./"+sys
.argv
[2]) and os
.path
.isfile("./"+sys
.argv
[2])):
85 outfilebin
= os
.path
.splitext(infile
)[0]
86 outfilezip
= outfilebin
+".zip"
87 elif (os
.path
.exists("./"+sys
.argv
[2]) and os
.path
.isdir("./"+sys
.argv
[2])):
88 infile
= "mkhockeydata.py"
89 outfilebin
= os
.path
.splitext(infile
)[0]
90 outfilezip
= outfilebin
+".zip"
92 infile
= "mkhockeydata.py"
93 outfilebin
= os
.path
.splitext(infile
)[0]
94 outfilezip
= outfilebin
+".zip"
96 infile
= "mkhockeydata.py"
97 outfilebin
= os
.path
.splitext(infile
)[0]
98 outfilezip
= outfilebin
+".zip"
99 if (os
.path
.exists(tempdir
+"/pybundle") and os
.path
.isfile(tempdir
+"/pybundle")):
100 os
.unlink(tempdir
+"/pybundle")
101 if (os
.path
.exists(tempdir
+"/pybundle") and os
.path
.isdir(tempdir
+"/pybundle")):
102 shutil
.rmtree(tempdir
+"/pybundle")
103 os
.mkdir(tempdir
+"/pybundle")
104 if (os
.path
.exists(tempdir
+"/pybundle/__main__.py") and os
.path
.isfile(tempdir
+"/pybundle/__main__.py")):
105 os
.unlink(tempdir
+"/pybundle/__main__.py")
106 if (os
.path
.exists(tempdir
+"/pybundle/__main__.py") and os
.path
.isdir(tempdir
+"/pybundle/__main__.py")):
107 shutil
.rmtree(tempdir
+"/pybundle/__main__.py")
108 shutil
.copy2("./"+infile
, tempdir
+"/pybundle/__main__.py")
109 if (os
.path
.exists(tempdir
+"/pybundle/pyhockeystats") and os
.path
.isfile(tempdir
+"/pybundle/pyhockeystats")):
110 os
.unlink(tempdir
+"/pybundle/pyhockeystats")
111 if (os
.path
.exists(tempdir
+"/pybundle/pyhockeystats") and os
.path
.isdir(tempdir
+"/pybundle/pyhockeystats")):
112 shutil
.rmtree(tempdir
+"/pybundle/pyhockeystats")
113 shutil
.copytree("./pyhockeystats", tempdir
+"/pybundle/pyhockeystats")
114 if (os
.path
.exists(tempdir
+"/"+outfilezip
) and os
.path
.isfile(tempdir
+"/"+outfilezip
)):
115 os
.unlink(tempdir
+"/"+outfilezip
)
116 if (os
.path
.exists(tempdir
+"/"+outfilezip
) and os
.path
.isdir(tempdir
+"/"+outfilezip
)):
117 shutil
.rmtree(tempdir
+"/"+outfilezip
)
118 shutil
.make_archive(tempdir
+"/"+outfilebin
, "zip", tempdir
+"/pybundle")
119 if (os
.path
.exists(tempdir
+"/pybundle/"+outfilezip
) and os
.path
.isfile(tempdir
+"/pybundle/"+outfilezip
)):
120 os
.unlink(tempdir
+"/pybundle/"+outfilezip
)
121 if (os
.path
.exists(tempdir
+"/pybundle/"+outfilezip
) and os
.path
.isdir(tempdir
+"/pybundle/"+outfilezip
)):
122 shutil
.rmtree(tempdir
+"/pybundle/"+outfilezip
)
123 shutil
.move(tempdir
+"/"+outfilezip
, tempdir
+"/pybundle/"+outfilezip
)
124 if (os
.path
.exists(tempdir
+"/pybundle/"+outfilebin
) and os
.path
.isfile(tempdir
+"/pybundle/"+outfilebin
)):
125 os
.unlink(tempdir
+"/pybundle/"+outfilebin
)
126 if (os
.path
.exists(tempdir
+"/pybundle/"+outfilebin
) and os
.path
.isdir(tempdir
+"/pybundle/"+outfilebin
)):
127 shutil
.rmtree(tempdir
+"/pybundle/"+outfilebin
)
128 mkbstring
= "#!/usr/bin/env "+pystring
+"\n\n"
129 mkbfp
= open(tempdir
+"/pybundle/"+outfilebin
, "wb+")
130 mkbfp
.write(mkbstring
.encode())
131 zipfp
= open(tempdir
+"/pybundle/"+outfilezip
, "rb")
132 mkbfp
.write(zipfp
.read())
135 shutil
.rmtree("./bundle/"+pystring
)
136 os
.mkdir("./bundle/"+pystring
)
137 shutil
.move(tempdir
+"/pybundle/"+outfilebin
,
138 "./bundle/"+pystring
+"/"+outfilebin
)
139 os
.chmod("./bundle/"+pystring
+"/"+outfilebin
, 0o755)
140 shutil
.rmtree(tempdir
+"/pybundle")
141 oldpath
= os
.getcwd()
142 os
.chdir("./bundle/"+pystring
)
143 curscrpath
= os
.path
.dirname("./"+outfilebin
)
144 if (curscrpath
== ""):
147 curscrpath
= curscrpath
.replace(os
.sep
, "/")
148 elif (os
.path
.sep
== "\\"):
149 curscrpath
= curscrpath
.replace(os
.path
.sep
, "/")
150 curscrpath
= curscrpath
+os
.path
.sep
151 scrfile
= curscrpath
+outfilebin
152 if (os
.path
.exists(scrfile
) and os
.path
.isfile(scrfile
) and infile
== "mkhockeydata.py"):
153 scrcmd
= subprocess
.Popen([sys
.executable
, scrfile
, "mksymlinks"])