81 lines
3.1 KiB
Python
81 lines
3.1 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 name')
|
|
configFilePath = os.path.join (rootDir, 'tools', 'config.json')
|
|
Tools.ReplaceRegexInFile (configFilePath, 'three.min-r[0-9]+.js', 'three.min-' + threeJsTagName + '.js')
|
|
buildScriptPath = os.path.join (rootDir, 'tools', 'build.py')
|
|
Tools.ReplaceRegexInFile (buildScriptPath, '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))
|