# -*- coding: utf-8 -* import sys import os, os.path import time import zipfile import difflib import shutil import json import hashlib import httplib import urllib from ctypes import * from struct import * import re import base64 import math import subprocess import time reload(sys) sys.setdefaultencoding("utf-8") _srcPath = "storage" _platforms = { "1": {"name": u"-欢乐debug", "devMode": "debug","mark":"hl","platform":"huanle"}, "2": {"name": u"-欢乐release", "devMode": "release","mark":"hl","platform":"huanle"}, "3": {"name": u"-川南debug", "devMode": "debug","mark":"cn","platform":"chuannan"}, "4": {"name": u"-川南release", "devMode": "release","mark":"cn","platform":"chuannan"}, "5": {"name": u"-悠闲跑胡子debug", "devMode": "debug","mark":"yx","platform":"youxianmj"}, "6": {"name": u"-悠闲跑胡子release", "devMode": "release","mark":"yx","platform":"youxianmj"}, "7": {"name": u"-悠闲重庆debug", "devMode": "debug","mark":"cq","platform":"chongqing"}, "8": {"name": u"-悠闲重庆release", "devMode": "release","mark":"cq","platform":"chongqing"}, "9": {"name": u"-蜀州麻将debug", "devMode": "debug","mark":"sz","platform":"shuzhou"}, "10": {"name": u"-蜀州麻将release", "devMode": "release","mark":"sz","platform":"shuzhou"}, "11": {"name": u"-天天麻将debug", "devMode": "debug","mark":"tt","platform":"tiantian"}, "12": {"name": u"-天天麻将release", "devMode": "release","mark":"tt","platform":"tiantian"}, } def runCommand(cmd, isNeedLog = False): print("[Command] " + cmd) if cmd == None: return if isNeedLog: p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) p.wait() return p.stdout.readlines() else: subprocess.call(cmd, shell=True) def copyFile(source_path, target_path): if os.path.exists(source_path): global g_fileNumAll g_fileNumAll += 1 open(target_path, "wb").write(open(source_path, "rb").read()) def copyFiles(sourceDir, targetDir): if not os.path.isdir(sourceDir): print ("不存在路径:").encode("gbk"), sourceDir return # copyFileCounts = 'copyFileCounts' in globals() # print sourceDir # print u"%s 当前处理文件夹%s已处理%s 个文件" %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), sourceDir,copyFileCounts) for f in os.listdir(sourceDir): if f == ".git": pass else: sourceF = os.path.join(sourceDir, f) targetF = os.path.join(targetDir, f) if os.path.isfile(sourceF): if sourceF.find("README") > 0: continue # 创建目录 if not os.path.exists(targetDir): os.makedirs(targetDir) # copyFileCounts += 1 # 文件不存在,或者存在但是大小不同,覆盖 if not os.path.exists(targetF) or ( os.path.exists(targetF) and (os.path.getsize(targetF) != os.path.getsize(sourceF))): # 2进制文件 open(targetF, "wb").write(open(sourceF, "rb").read()) global g_fileNumAll g_fileNumAll += 1 # print u"%s %s 复制完毕" %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), targetF) else: # print u"%s %s 已存在,不重复复制" % ( # time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())), targetF) pass if os.path.isdir(sourceF): copyFiles(sourceF, targetF) def removeFiles(sourceDir, prefix): for f in os.listdir(sourceDir): sourceF = os.path.join(sourceDir, f) if os.path.isfile(sourceF) and f.endswith(prefix): os.remove(sourceF) if os.path.isdir(sourceF): removeFiles(sourceF, prefix) def openFile(filename): with open(filename, 'rb') as f: # , 'r', encoding='UTF-8' str = f.read() f.close() return str def writeFile(filename, content): with open(filename, 'wb') as f: # , 'r', encoding='UTF-8' f.write(content) f.close() # 更新RoomSetting.lua文件时面的platform字段和isDevMode字段 def updateRomSetting(platform, mode): filePath = "romFiles/RomSetting.lua" fileContent = openFile(filePath) pattern = re.compile('Platform[\s]=[\s]\"[a-zA-Z]+\"') fileContent = re.sub(pattern, "Platform = \"{0}\"".format(platform), fileContent) pattern2 = re.compile('isDevMode[\s]=[\s][a-zA-Z]+') strDevMode = "false" if (mode == "master" or mode == "release") else "true" fileContent = re.sub(pattern2, "isDevMode = {0}".format(strDevMode), fileContent) writeFile(filePath, fileContent) # 更新RoomSetting.lua文件时面的platform字段和isDevMode字段 def getRomSettingData(): filePath = "romFiles/RomSetting.lua" fileContent = openFile(filePath) pattern = re.compile('Platform[\s]=[\s]\"[a-zA-Z]+\"') platform = re.findall(pattern, fileContent) # str_value = str(platform) str_value = str_value[:-3] str_value = str_value[14:] platform = str_value #print(platform) pattern2 = re.compile('isDevMode[\s]=[\s][a-zA-Z]+') devMode = re.findall(pattern2, fileContent) str_value = str(devMode) str_value = str_value[:-2] str_value = str_value[14:] #print(str_value) strDevMode = "debug" if (str_value == "true") else "release" return platform,strDevMode def yxPrint(str): print("====================================") print(str).encode('gbk') print("====================================") def main(): # 平台 inputStr = None inputTargetStr = None print "" oriPlatform,devMode = getRomSettingData() print("==============RomSetting Data:"+str(oriPlatform + devMode+"=================")) print "" for i in sorted(_platforms): if (_platforms[i]["platform"] + _platforms[i]["devMode"]) == str(oriPlatform + devMode): inputStr = i #print(i) break if not inputStr: print ("读取romsetting失败").encode('gbk') return for i in sorted(_platforms): print i, _platforms[i]["name"] print "" while True: print "" inputTargetStr = raw_input(unicode('输入要转到目标的平台:', 'utf-8').encode('gbk')) if _platforms.has_key(inputTargetStr): break else: yxPrint("【温馨提示:】未找到对应平台,请重新输入!") platformConfig = _platforms[inputStr] platformTargetConfig = _platforms[inputTargetStr] _targetDir = _srcPath + platformConfig["mark"] + platformConfig["devMode"] _secondDir = _srcPath + platformTargetConfig["mark"] + platformTargetConfig["devMode"] if os.path.isdir(_targetDir) or not os.path.isdir(_srcPath): yxPrint("【温馨提示:】源缓存"+_srcPath+"不存在或者源缓存重命名后的目标文件夹"+_targetDir + "已经存在") return elif not os.path.isdir(_secondDir): yxPrint("【温馨提示:】原目标缓存存在,但是目标平台文件夹缓存不存在,无法改为"+_srcPath) return else: os.rename(_srcPath,_targetDir) os.rename(_secondDir,_srcPath) yxPrint("切换到" + platformTargetConfig["name"] + "成功!! 奥力给!") # 更新项目配置 updateRomSetting(platformTargetConfig["platform"], platformTargetConfig["devMode"]) yxPrint ("更新项目配置成功!!") os.system("pause") # -------------- main -------------- if __name__ == '__main__': main()