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(): gamesFolderPath = config.getFMCGamesFolderPath() games = config.getFMCGames() numberOfGames = len(games) utils.openPar("SHIPPER - The script will ship via fastlane in " + str(numberOfGames) + " games" + "\nProjects path: " + gamesFolderPath)
def pullAll(): games = config.getFMCGames() numberOfGames = len(games) gamesWithFilesToCommit = Game.getGamesWithFilesToCommit(False, False) if len(gamesWithFilesToCommit) > 0: print( "WARNING - the following games have files to commit! You can use 'status' to check them:" ) for g in gamesWithFilesToCommit: print(g.gamePath) if not utils.readYesNo( "Do you want to proceed? All games will be resetted!", True): return gameNumber = 1 for g in games: utils.openPar("(" + str(gameNumber) + "/" + str(numberOfGames) + ") UPDATING: " + g.gamePath) pull(g, False) utils.closePar("SUCCESSFULLY UPDATED: " + g.gamePath) utils.printWhiteLines(2) gameNumber += 1 utils.closePar("FINISHED")
def printInfo(): gamesFolderPath = config.getFMCGamesFolderPath() numberOfGames = len(config.getFMCGames()) utils.openPar("PROJECT BUILDER - this script will build " + str(numberOfGames) + " games" + "\nProjects path: " + gamesFolderPath + "\nNOTE:this might take a long time!") utils.waitForEnterKey()
def printIntro(): utils.openPar('''PROJECT CREATOR - this script initializes a new fmc game: - Creates a new Unity project inside the fmc games folder - Inits a git repo with a Unity .gitignore - Creates a git remote repo - Pulls the fmc framework subtree and creates the _content folder - Pushes everything ''')
def fillAllIOSTestInfo(): games = config.getFMCGames() numberOfGames = len(games) gameNumber = 1 for game in games: #for each game in the fmc folder utils.openPar("(" + str(gameNumber) + "/" + str(numberOfGames) + ") FILLING TESTFLIGHT TEST INFO FOR : " + game.gamePath) fillIOSTestInfo(game) gameNumber += 1 utils.printWhiteLines(2)
def checkAllIOS(): games = config.getFMCGames() numberOfGames = len(games) gameNumber = 1 for game in games: #for each game in the fmc folder utils.openPar("(" + str(gameNumber) + "/" + str(numberOfGames) + ") CHECKING APP STORE FOR: " + game.gamePath) checkIOS(game) gameNumber += 1 utils.printWhiteLines(2)
def updateAllIOSTesters(): games = config.getFMCGames() numberOfGames = len(games) gameNumber = 1 for game in games: #for each game in the fmc folder utils.openPar("(" + str(gameNumber) + "/" + str(numberOfGames) + ") UPDATING TESTERS: " + game.gamePath) updateIOSTesters(game, shipOnAndroid, shipOnIOS) gameNumber += 1 utils.printWhiteLines(2)
def shipAll(shipOnAndroid, shipOnIOS): games = config.getFMCGames() numberOfGames = len(games) gameNumber = 1 for game in games: #for each game in the fmc folder utils.openPar("(" + str(gameNumber) + "/" + str(numberOfGames) + ") SHIPPING: " + game.gamePath) ship(game, shipOnAndroid, shipOnIOS) gameNumber += 1 utils.printWhiteLines(2)
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 main(): utils.printWhiteLines(1) utils.openPar("Welcome to the fmc toolkit. Type 'info' to get command list") waitingForCommand = True try: while True: try: waitingForCommand = True command = fmcInput() waitingForCommand = False reactToCommand(command) except KeyboardInterrupt: utils.printWhiteLines(1) if waitingForCommand: input("Ctrl+C again to exit, enter to return to fmc") except KeyboardInterrupt: pass
def buildAll(buildAndroid, buildIOS): printInfo() games = config.getFMCGames() numberOfGames = len(games) errorsOccured = False gameNumber = 1 for game in games: #for each project in the fmc folder utils.openPar("(" + str(gameNumber) + "/" + str(numberOfGames) + ") BUILDING: " + game.gamePath) errorsOccured = errorsOccured or build(game, buildAndroid, buildIOS) gameNumber += 1 utils.printWhiteLines(1) if errorsOccured: utils.closePar("COMPLETED WITH ERRORS") else: utils.closePar("FINISHED")
def printInfo(): games = config.getFMCGames() numberOfGames = len(games) utils.openPar("ANDROID SIGNER - The script, if needed, will create a keystore file in " + str(numberOfGames) + " games" + "\nProjects path: " + gamesFolderPath)
def printInfo(): utils.openPar( "TARGETER - Select a project to make it the default of the toolkit actions!" )
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")