|
- # -*- 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()
|