diff options
Diffstat (limited to 'scripts/make_release.py')
| -rw-r--r-- | scripts/make_release.py | 73 |
1 files changed, 68 insertions, 5 deletions
diff --git a/scripts/make_release.py b/scripts/make_release.py index 32af2eee..80cbd35b 100644 --- a/scripts/make_release.py +++ b/scripts/make_release.py @@ -1,4 +1,10 @@ -import shutil, os, sys, zipfile +import shutil, os, re, sys, zipfile +if sys.version_info[0] == 2: + import urllib + url_lib = urllib +elif sys.version_info[0] == 3: + import urllib.request + url_lib = urllib.request #valid_platforms = ["win32", "linux86", "linux86_64", "src"] @@ -8,6 +14,7 @@ if len(sys.argv) != 3: sys.exit(-1) name = "teeworlds" +url_languages = "https://github.com/teeworlds/teeworlds-translation/zipball/master" version = sys.argv[1] platform = sys.argv[2] exe_ext = "" @@ -40,6 +47,29 @@ if platform == 'osx': use_gz = 0 use_bundle = 1 +def fetch_file(url): + try: + print("trying %s" % url) + real_url = url_lib.urlopen(url).geturl() + local = real_url.split("/") + local = local[len(local)-1].split("?") + local = local[0] + url_lib.urlretrieve(real_url, local) + return local + except: + return False + +def unzip(filename, where): + try: + z = zipfile.ZipFile(filename, "r") + except: + return False + for name in z.namelist(): + if "/data/languages/" in name: + z.extract(name, where) + z.close() + return z.namelist()[0] + def copydir(src, dst, excl=[]): for root, dirs, files in os.walk(src, topdown=True): if "/." in root or "\\." in root: @@ -50,7 +80,15 @@ def copydir(src, dst, excl=[]): for name in files: if name[0] != '.': shutil.copy(os.path.join(root, name), os.path.join(dst, root, name)) - + +def clean(): + print("*** cleaning ***") + try: + shutil.rmtree(package_dir) + shutil.rmtree(languages_dir) + os.remove(src_package_languages) + except: pass + package = "%s-%s-%s" %(name, version, platform) package_dir = package @@ -58,6 +96,16 @@ print("cleaning target") shutil.rmtree(package_dir, True) os.mkdir(package_dir) +print("download and extract languages") +src_package_languages = fetch_file(url_languages) +if not src_package_languages: + print("couldn't download languages") + sys.exit(-1) +languages_dir = unzip(src_package_languages, ".") +if not languages_dir: + print("couldn't unzip languages") + sys.exit(-1) + print("adding files") shutil.copy("readme.txt", package_dir) shutil.copy("license.txt", package_dir) @@ -67,6 +115,9 @@ shutil.copy("banmasters.cfg", package_dir) if include_data and not use_bundle: os.mkdir(os.path.join(package_dir, "data")) copydir("data", package_dir) + os.chdir(languages_dir) + copydir("data", "../"+package_dir) + os.chdir("..") if platform[:3] == "win": shutil.copy("other/config_directory.bat", package_dir) shutil.copy("SDL.dll", package_dir) @@ -84,9 +135,16 @@ if include_src: shutil.copy("configure.lua", package_dir) if use_bundle: - os.system("lipo -create -output "+name+"_srv "+name+"_srv"+"_ppc "+name+"_srv"+"_x86") - os.system("lipo -create -output "+name+" "+name+"_ppc "+name+"_x86") - os.system("lipo -create -output serverlaunch serverlaunch_ppc serverlaunch_x86") + bins = [name, name+'_srv', 'serverlaunch'] + platforms = ('x86', 'x86_64', 'ppc') + for bin in bins: + to_lipo = [] + for p in platforms: + fname = bin+'_'+p + if os.path.isfile(fname): + to_lipo.append(fname) + if to_lipo: + os.system("lipo -create -output "+bin+" "+" ".join(to_lipo)) # create Teeworlds appfolder clientbundle_content_dir = os.path.join(package_dir, "Teeworlds.app/Contents") @@ -100,6 +158,9 @@ if use_bundle: os.mkdir(clientbundle_framework_dir) os.mkdir(os.path.join(clientbundle_resource_dir, "data")) copydir("data", clientbundle_resource_dir) + os.chdir(languages_dir) + copydir("data", "../"+clientbundle_resource_dir) + os.chdir("..") shutil.copy("other/icons/Teeworlds.icns", clientbundle_resource_dir) shutil.copy(name+exe_ext, clientbundle_bin_dir) os.system("cp -R /Library/Frameworks/SDL.framework " + clientbundle_framework_dir) @@ -187,5 +248,7 @@ if use_dmg: os.system("hdiutil create -srcfolder %s -volname Teeworlds -quiet %s_temp" % (package_dir, package)) os.system("hdiutil convert %s_temp.dmg -format UDBZ -o %s.dmg -quiet" % (package, package)) os.system("rm -f %s_temp.dmg" % package) + +clean() print("done") |