#!/usr/bin/env python # -*- coding: utf-8 -*- import os import os.path import sys import subprocess import re import math import platform targetTag = sys.argv[1] subprocess.call(u'git tag > tt', shell=True) f = open("tt", 'r') tagContents = f.readlines() f.close() tagContents = "".join(tagContents); m2 = re.search('^' + targetTag + '$', tagContents, re.MULTILINE) if not m2: exit(1) subprocess.call(u'rm -rf tt', shell=True) theRootPath = os.getcwd() difFfilePath = os.path.join(theRootPath, u'difffile.txt') clientDirName = u'client' resourcesDirName = u'resources' # 分析版本之间的差异 if os.path.isfile(difFfilePath): subprocess.call(u'rm -rf ' + difFfilePath, shell=True) getClientDiffGitCmd = u'git diff ' + targetTag + ' --diff-filter=ACRM --name-only >> ' + difFfilePath getResourcesDiffGitCmd = u'git diff ' + targetTag + ' --diff-filter=ACRM --name-only | grep res >> ' + difFfilePath subprocess.call(getClientDiffGitCmd, shell=True) os.chdir(os.path.join(theRootPath, '../', resourcesDirName)) # 跳转到资源目录 subprocess.call(getResourcesDiffGitCmd, shell=True) os.chdir(theRootPath) # 回到client工作目录 f = open(difFfilePath, 'r') diffFileContent = f.readlines() f.close() diffContent = "".join(diffFileContent) # 检查是否需要make_framework shouldMakeFrameworkReg = re.compile("src/core|src/supports|src/launcher") shouldMakeFramework = re.search(shouldMakeFrameworkReg, diffContent) if shouldMakeFramework: print "make_framework" # 处理模块 srcReg = re.compile("src\/mod/([a-zA-Z0-9]*)") srcResult = srcReg.findall(diffContent) srcResult = sorted(list(set(srcResult))) modCmd = u'make ' + " ".join(srcResult) print modCmd + '\n\n' if shouldMakeFramework: print "launcher.swf" print "mod/core.swf" modList = [] for item in srcResult: modItem = os.path.join("mod", item) + ".swf" print modItem modList.append(modItem) print "\n" print "conf/version.txt" # 处理配置 configFilesReg = re.compile("(^conf/.*)") configFiles = configFilesReg.findall(diffContent) for item in configFiles: print item # 处理资源 print "\n" resourceFilesReg = re.compile("(^res/.*)", flags=re.MULTILINE) resourceFiles = resourceFilesReg.findall(diffContent) for item in resourceFiles: print item subprocess.call(u'rm -rf ' + difFfilePath, shell=True)