Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

226 Zeilen
7.6 KiB

  1. # -*- coding: utf-8 -*
  2. import sys
  3. import os, os.path
  4. import time
  5. import zipfile
  6. import difflib
  7. import shutil
  8. import json
  9. import hashlib
  10. import httplib
  11. import urllib
  12. from ctypes import *
  13. from struct import *
  14. import re
  15. import base64
  16. import math
  17. import subprocess
  18. import time
  19. reload(sys)
  20. sys.setdefaultencoding("utf-8")
  21. _srcPath = "storage"
  22. _platforms = {
  23. "1": {"name": u"-欢乐debug", "devMode": "debug","mark":"hl","platform":"huanle"},
  24. "2": {"name": u"-欢乐release", "devMode": "release","mark":"hl","platform":"huanle"},
  25. "3": {"name": u"-川南debug", "devMode": "debug","mark":"cn","platform":"chuannan"},
  26. "4": {"name": u"-川南release", "devMode": "release","mark":"cn","platform":"chuannan"},
  27. "5": {"name": u"-悠闲跑胡子debug", "devMode": "debug","mark":"yx","platform":"youxianmj"},
  28. "6": {"name": u"-悠闲跑胡子release", "devMode": "release","mark":"yx","platform":"youxianmj"},
  29. "7": {"name": u"-悠闲重庆debug", "devMode": "debug","mark":"cq","platform":"chongqing"},
  30. "8": {"name": u"-悠闲重庆release", "devMode": "release","mark":"cq","platform":"chongqing"},
  31. "9": {"name": u"-蜀州麻将debug", "devMode": "debug","mark":"sz","platform":"shuzhou"},
  32. "10": {"name": u"-蜀州麻将release", "devMode": "release","mark":"sz","platform":"shuzhou"},
  33. "11": {"name": u"-天天麻将debug", "devMode": "debug","mark":"tt","platform":"tiantian"},
  34. "12": {"name": u"-天天麻将release", "devMode": "release","mark":"tt","platform":"tiantian"},
  35. }
  36. def runCommand(cmd, isNeedLog = False):
  37. print("[Command] " + cmd)
  38. if cmd == None:
  39. return
  40. if isNeedLog:
  41. p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
  42. p.wait()
  43. return p.stdout.readlines()
  44. else:
  45. subprocess.call(cmd, shell=True)
  46. def copyFile(source_path, target_path):
  47. if os.path.exists(source_path):
  48. global g_fileNumAll
  49. g_fileNumAll += 1
  50. open(target_path, "wb").write(open(source_path, "rb").read())
  51. def copyFiles(sourceDir, targetDir):
  52. if not os.path.isdir(sourceDir):
  53. print ("不存在路径:").encode("gbk"), sourceDir
  54. return
  55. # copyFileCounts = 'copyFileCounts' in globals()
  56. # print sourceDir
  57. # print u"%s 当前处理文件夹%s已处理%s 个文件" %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), sourceDir,copyFileCounts)
  58. for f in os.listdir(sourceDir):
  59. if f == ".git":
  60. pass
  61. else:
  62. sourceF = os.path.join(sourceDir, f)
  63. targetF = os.path.join(targetDir, f)
  64. if os.path.isfile(sourceF):
  65. if sourceF.find("README") > 0:
  66. continue
  67. # 创建目录
  68. if not os.path.exists(targetDir):
  69. os.makedirs(targetDir)
  70. # copyFileCounts += 1
  71. # 文件不存在,或者存在但是大小不同,覆盖
  72. if not os.path.exists(targetF) or (
  73. os.path.exists(targetF) and (os.path.getsize(targetF) != os.path.getsize(sourceF))):
  74. # 2进制文件
  75. open(targetF, "wb").write(open(sourceF, "rb").read())
  76. global g_fileNumAll
  77. g_fileNumAll += 1
  78. # print u"%s %s 复制完毕" %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), targetF)
  79. else:
  80. # print u"%s %s 已存在,不重复复制" % (
  81. # time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())), targetF)
  82. pass
  83. if os.path.isdir(sourceF):
  84. copyFiles(sourceF, targetF)
  85. def removeFiles(sourceDir, prefix):
  86. for f in os.listdir(sourceDir):
  87. sourceF = os.path.join(sourceDir, f)
  88. if os.path.isfile(sourceF) and f.endswith(prefix):
  89. os.remove(sourceF)
  90. if os.path.isdir(sourceF):
  91. removeFiles(sourceF, prefix)
  92. def openFile(filename):
  93. with open(filename, 'rb') as f: # , 'r', encoding='UTF-8'
  94. str = f.read()
  95. f.close()
  96. return str
  97. def writeFile(filename, content):
  98. with open(filename, 'wb') as f: # , 'r', encoding='UTF-8'
  99. f.write(content)
  100. f.close()
  101. # 更新RoomSetting.lua文件时面的platform字段和isDevMode字段
  102. def updateRomSetting(platform, mode):
  103. filePath = "romFiles/RomSetting.lua"
  104. fileContent = openFile(filePath)
  105. pattern = re.compile('Platform[\s]=[\s]\"[a-zA-Z]+\"')
  106. fileContent = re.sub(pattern, "Platform = \"{0}\"".format(platform), fileContent)
  107. pattern2 = re.compile('isDevMode[\s]=[\s][a-zA-Z]+')
  108. strDevMode = "false" if (mode == "master" or mode == "release") else "true"
  109. fileContent = re.sub(pattern2, "isDevMode = {0}".format(strDevMode), fileContent)
  110. writeFile(filePath, fileContent)
  111. # 更新RoomSetting.lua文件时面的platform字段和isDevMode字段
  112. def getRomSettingData():
  113. filePath = "romFiles/RomSetting.lua"
  114. fileContent = openFile(filePath)
  115. pattern = re.compile('Platform[\s]=[\s]\"[a-zA-Z]+\"')
  116. platform = re.findall(pattern, fileContent)
  117. #
  118. str_value = str(platform)
  119. str_value = str_value[:-3]
  120. str_value = str_value[14:]
  121. platform = str_value
  122. #print(platform)
  123. pattern2 = re.compile('isDevMode[\s]=[\s][a-zA-Z]+')
  124. devMode = re.findall(pattern2, fileContent)
  125. str_value = str(devMode)
  126. str_value = str_value[:-2]
  127. str_value = str_value[14:]
  128. #print(str_value)
  129. strDevMode = "debug" if (str_value == "true") else "release"
  130. return platform,strDevMode
  131. def yxPrint(str):
  132. print("====================================")
  133. print(str).encode('gbk')
  134. print("====================================")
  135. def main():
  136. # 平台
  137. inputStr = None
  138. inputTargetStr = None
  139. print ""
  140. oriPlatform,devMode = getRomSettingData()
  141. print("==============RomSetting Data:"+str(oriPlatform + devMode+"================="))
  142. print ""
  143. for i in sorted(_platforms):
  144. if (_platforms[i]["platform"] + _platforms[i]["devMode"]) == str(oriPlatform + devMode):
  145. inputStr = i
  146. #print(i)
  147. break
  148. if not inputStr:
  149. print ("读取romsetting失败").encode('gbk')
  150. return
  151. for i in sorted(_platforms):
  152. print i, _platforms[i]["name"]
  153. print ""
  154. while True:
  155. print ""
  156. inputTargetStr = raw_input(unicode('输入要转到目标的平台:', 'utf-8').encode('gbk'))
  157. if _platforms.has_key(inputTargetStr):
  158. break
  159. else:
  160. yxPrint("【温馨提示:】未找到对应平台,请重新输入!")
  161. platformConfig = _platforms[inputStr]
  162. platformTargetConfig = _platforms[inputTargetStr]
  163. _targetDir = _srcPath + platformConfig["mark"] + platformConfig["devMode"]
  164. _secondDir = _srcPath + platformTargetConfig["mark"] + platformTargetConfig["devMode"]
  165. if os.path.isdir(_targetDir) or not os.path.isdir(_srcPath):
  166. yxPrint("【温馨提示:】源缓存"+_srcPath+"不存在或者源缓存重命名后的目标文件夹"+_targetDir + "已经存在")
  167. return
  168. elif not os.path.isdir(_secondDir):
  169. yxPrint("【温馨提示:】原目标缓存存在,但是目标平台文件夹缓存不存在,无法改为"+_srcPath)
  170. return
  171. else:
  172. os.rename(_srcPath,_targetDir)
  173. os.rename(_secondDir,_srcPath)
  174. yxPrint("切换到" + platformTargetConfig["name"] + "成功!! 奥力给!")
  175. # 更新项目配置
  176. updateRomSetting(platformTargetConfig["platform"], platformTargetConfig["devMode"])
  177. yxPrint ("更新项目配置成功!!")
  178. os.system("pause")
  179. # -------------- main --------------
  180. if __name__ == '__main__':
  181. main()