def printInfo(): fmcRepoURL = config.getFMCRepoURL() utils.openPar( "FRAMEWORK PUSH - The script will push the fmc subtree to the framework repo." + "\nFramework repo: " + fmcRepoURL + "\nNOTE:Commit before using! The script is going to git reset hard the selected game!" )
def printInfo(): fmcRepoURL = config.getFMCRepoURL() gamesFolderPath = config.getFMCGamesFolderPath() numberOfGames = len(config.getFMCGames()) utils.openPar( "FRAMEWORK PULL - The script will pull the fmc subtree in " + str(numberOfGames) + " games" + "\nProjects path: " + gamesFolderPath + "\nFramework repo: " + fmcRepoURL + "\nNOTE:The script is going to git reset hard every project!")
def pull(game, checkForCommits): if checkForCommits: hasFiles = game.hasFilesToCommit(True, False) if hasFiles and not utils.readYesNo( "Do you want to proceed? " + game.internalGameName + " will be resetted!", True): return print("Pulling: " + game.gamePath) fmcRepoURL = config.getFMCRepoURL() game.gitAdd(".") game.gitResetHard() game.gitPull() game.gitSubtreePull() game.gitPush()
def gitSubtreePush(self): subprocess.call(utils.parList("git subtree push --prefix", config.gitSubtreePrefix, config.getFMCRepoURL(), "master"), cwd=self.gamePath)
def createNewProject(gameName): unityExePath = config.getUnityExePath() unityExeFolderPath = os.path.abspath(os.path.join(unityExePath, os.pardir)) gamesFolderPath = config.getFMCGamesFolderPath() nguiFolderPath = config.getNGUIFolderPath() parentRemoteURL = config.getParentRemoteURL() fmcRepoURL = config.getFMCRepoURL() #asking for project name gamePath = os.path.join(gamesFolderPath, gameName) ok = isGameNameValid(gamePath, gameName) if not ok: printIntro() while not ok: gameName = input( 'Enter the internal game name (no spaces, all lowercase! - e.g. stopthefall): ' ) gamePath = os.path.join(gamesFolderPath, gameName) ok = isGameNameValid(gamePath, gameName) repoUrl = parentRemoteURL + gameName #we have a valid game path and git repo. Ask for confirm... utils.printWhiteLines(2) utils.openPar("\nProject root: " + gamePath + "\nRemote repo: " + repoUrl + "\nInternal name:" + gameName) utils.waitForEnterKey() #creating Unity project... print('Creating Unity project. This will take some time...') pars = [unityExePath] + utils.parList( '-quit -batchmode -nographics -createproject') + [gamePath] subprocess.call(pars) print('Unity project created!') time.sleep(1) game = Game(gamePath) #init local git repo... subprocess.call(utils.parList("git init"), cwd=gamePath) subprocess.call(utils.parList("git remote add origin", repoUrl), cwd=gamePath) #adding .gitignore... shutil.copy(config.unityGitignorePath, os.path.join(gamePath, ".gitignore")) game.gitAdd(".gitignore") game.gitCommit("Added .gitignore") #creating remote repo... remoteURL = parentRemoteURL + gameName + ".git" subprocess.call(utils.parList("git push --set-upstream", remoteURL, "master"), cwd=gamePath) #first commit... game.gitAdd(".") game.gitCommit("Initial commit") #adding subtree... subprocess.call(utils.parList("git pull -u origin master"), cwd=gamePath) subprocess.call(utils.parList("git subtree add --prefix", config.gitSubtreePrefix, fmcRepoURL, "master --squash"), cwd=gamePath) subprocess.call(utils.parList("git push -u origin master"), cwd=gamePath) #adding NGUI... shutil.copytree(nguiFolderPath, os.path.join(gamePath, "Assets", "NGUI")) game.gitAdd(".") game.gitCommit("Added NGUI") #creating _content folders... utils.createFolder(os.path.join(gamePath, config.fmcContentFolder)) utils.createFolder( os.path.join(gamePath, config.fmcContentFolder, "Images")) utils.createFolder( os.path.join(gamePath, config.fmcContentFolder, "Prefabs")) utils.createFolder( os.path.join(gamePath, config.fmcContentFolder, "Scripts")) #Launching project and creating game settings print("Opening the game and creating settings...") game.runUnityMethod(config.unityUpdateSettingsMethodName) game.gitAdd(".") game.gitCommit("Added game settings") game.gitPush() webbrowser.open(remoteURL) os.startfile(os.path.realpath(gamePath)) game.launchUnity(config.unityFirstProjectLaunchMethodName, False) utils.closePar("FINISHED")