package_editor.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/usr/bin/python
  2. # Packages the editor by copying all relevant files to the Builds directory.
  3. # This will not execute the editor build, and is implied the editor has been
  4. # been built before executing this script.
  5. # Usage: "package_editor $Configuration"
  6. # Where: $Configuration - e.g. Debug, OptimizedDebug, Release
  7. import os
  8. import sys
  9. import shutil
  10. configuration = 'Release' #sys.argv[1]
  11. dataEntriesToIgnore = ['Raw', 'Settings.asset']
  12. binEntriesToIgnore = ['Game.exe', 'Game.pdb']
  13. dataFolder = 'Data'
  14. bsfDataFolder = 'Source\\bsf\\Data'
  15. assembliesFolder = 'Assemblies'
  16. monoFolder = 'Mono'
  17. libFolder = 'x64\\' + configuration + '\\'
  18. inputDataFolder = '..\\' + dataFolder
  19. inputBsfDataFolder = '..\\' + bsfDataFolder
  20. inputBinFolder = '..\\build\\bin\\'
  21. inputAssembliesFolder = inputBinFolder + assembliesFolder
  22. inputMonoFolder = inputBinFolder + monoFolder
  23. inputLibFolder = inputBinFolder + libFolder
  24. outputBaseFolder = '..\\Builds\Banshee3D\\'
  25. outputEditorDataFolder = outputBaseFolder + 'EditorData'
  26. outputDataFolder = outputBaseFolder + dataFolder
  27. outputBinFolder = outputBaseFolder + '\\bin\\'
  28. outputAssembliesFolder = outputBinFolder + assembliesFolder
  29. outputMonoFolder = outputBinFolder + monoFolder
  30. outputLibFolder = outputBaseFolder
  31. def copytree(src, dst):
  32. if not os.path.exists(dst):
  33. os.makedirs(dst)
  34. for item in os.listdir(src):
  35. if item in dataEntriesToIgnore:
  36. print("Ignoring " + item)
  37. continue
  38. s = os.path.join(src, item)
  39. d = os.path.join(dst, item)
  40. print(s)
  41. if os.path.isdir(s):
  42. copytree(s, d)
  43. else:
  44. shutil.copy2(s, d)
  45. def package_editor():
  46. if os.path.exists(outputBaseFolder):
  47. shutil.rmtree(outputBaseFolder)
  48. copytree(inputDataFolder, outputEditorDataFolder)
  49. copytree(inputBsfDataFolder, outputDataFolder)
  50. copytree(inputAssembliesFolder, outputAssembliesFolder)
  51. copytree(inputMonoFolder, outputMonoFolder)
  52. for root, dirs, files in os.walk(inputLibFolder):
  53. for file in files:
  54. if(file.lower().endswith(('.dll', '.exe', '.pdb', '.so', '.dylib'))):
  55. if(not file in binEntriesToIgnore):
  56. filePath = os.path.join(root, file)
  57. shutil.copy(filePath, outputLibFolder)
  58. package_editor()