ModelHandle/tools/updatelibs.py
2021-10-28 19:39:01 +02:00

79 lines
2.9 KiB
Python

import os
import sys
import json
import shutil
import zipfile
import urllib
import urllib.request
from lib import tools_lib as Tools
threeJsFilesMap = [
[os.path.join ('build', 'three.min.js'), os.path.join ('three.min-$TAG_NAME$.js')],
[os.path.join ('examples', 'js', 'libs', 'chevrotain.min.js'), os.path.join ('three_loaders', 'chevrotain.min.js')],
[os.path.join ('examples', 'js', 'loaders', '3MFLoader.js'), os.path.join ('three_loaders', '3MFLoader.js')],
[os.path.join ('examples', 'js', 'loaders', 'ColladaLoader.js'), os.path.join ('three_loaders', 'ColladaLoader.js')],
[os.path.join ('examples', 'js', 'loaders', 'FBXLoader.js'), os.path.join ('three_loaders', 'FBXLoader.js')],
[os.path.join ('examples', 'js', 'loaders', 'VRMLLoader.js'), os.path.join ('three_loaders', 'VRMLLoader.js')]
]
def PrintInfo (message):
print ('INFO: ' + message)
def PrintError (message):
print ('ERROR: ' + message)
def DownloadFile (url, resultPath):
PrintInfo ('Downloading ' + url)
urllib.request.urlretrieve (url, resultPath)
def UnzipFile (zipPath, resultFolder):
PrintInfo ('Unzipping ' + zipPath)
with zipfile.ZipFile (zipPath, 'r') as zipFile:
zipFile.extractall (resultFolder)
def UpdateThreeJs (rootDir, tempDir):
libsDir = os.path.join (rootDir, 'libs')
for fileName in os.listdir (libsDir):
if (fileName.startswith ('three.min-')):
os.remove (os.path.join (libsDir, fileName))
response = urllib.request.urlopen ('https://api.github.com/repos/mrdoob/three.js/releases/latest')
responseJson = json.loads (response.read ())
threeJsTagName = responseJson['tag_name']
threeJsFileName = 'three.js-' + threeJsTagName
threeJsZipPath = os.path.join (tempDir, threeJsFileName + '.zip')
threeJsExtractedFolderPath = os.path.join (tempDir, threeJsFileName)
DownloadFile ('https://github.com/mrdoob/three.js/archive/refs/tags/' + threeJsTagName + '.zip', threeJsZipPath)
UnzipFile (threeJsZipPath, threeJsExtractedFolderPath)
for threeJsFile in threeJsFilesMap:
src = os.path.join (tempDir, threeJsFileName, threeJsFileName, threeJsFile[0])
dst = os.path.join (libsDir, threeJsFile[1].replace ('$TAG_NAME$', threeJsTagName))
PrintInfo ('Copying file ' + os.path.split (src)[1])
shutil.copy2 (src, dst)
PrintInfo ('Replacing file in config.json')
configFilePath = os.path.join (rootDir, 'tools', 'config.json')
Tools.ReplaceRegexInFile (configFilePath, 'three.min-r[0-9]+.js', 'three.min-' + threeJsTagName + '.js')
def Main (argv):
toolsDir = os.path.dirname (os.path.abspath (__file__))
rootDir = os.path.dirname (toolsDir)
os.chdir (rootDir)
tempDir = os.path.join (rootDir, 'build', 'temp')
if os.path.exists (tempDir):
shutil.rmtree (tempDir)
os.makedirs (tempDir)
UpdateThreeJs (rootDir, tempDir)
shutil.rmtree (tempDir)
return 0
sys.exit (Main (sys.argv))