# # cocos console installation script. # # Script idea based on Homebrew installation script. # by Luis Parravicini. # import os import sys import urllib from tarfile import TarFile import shutil COCOS2D_PREFIX = os.path.expanduser('~/.cocos2d') # TODO copied from cocos.py, refactor. class Logging: # TODO maybe the right way to do this is to use something like colorama? RED = '\033[31m' GREEN = '\033[32m' YELLOW = '\033[33m' MAGENTA = '\033[35m' RESET = '\033[0m' @staticmethod def _print(s, color=None): if color and sys.stdout.isatty() and sys.platform != 'win32': print color + s + Logging.RESET else: print s @staticmethod def debug(s): Logging._print(s, Logging.MAGENTA) @staticmethod def info(s): Logging._print(s, Logging.GREEN) @staticmethod def warning(s): Logging._print(s, Logging.YELLOW) @staticmethod def error(s): Logging._print(s, Logging.RED) def die(msg): Logging.error(msg) sys.exit(1) def touch(path): open(path, 'w').close() Logging.info("Starting the installation for Cocos2D console") console_path = os.path.join(COCOS2D_PREFIX, 'console') install_mark_path = os.path.join(console_path, 'installed') if os.path.exists(install_mark_path): die(""" It appears Cocos2d console is already installed. If you want to resintall you should delete the directory "%s" before running the installer again. """ % console_path) Logging.info("Downloading...") download_path, _ = urllib.urlretrieve('https://github.com/cocos2d/console/tarball/master') Logging.info("Installing...") with TarFile.open(download_path) as tar: tmp_path = os.path.join(COCOS2D_PREFIX, 'tmp') tar.extractall(tmp_path) # it's assumed the first entry is the directory containing all the other files dir = tar.getmembers()[0].name extracted_path = os.path.join(tmp_path, dir) if os.path.exists(console_path): shutil.rmtree(console_path) shutil.move(extracted_path, console_path) bin_path = os.path.join(console_path, 'console', 'bin') path = os.environ.get('PATH', '') if not bin_path in path.split(os.pathsep): Logging.warning("console path '%s' is not in PATH!" % bin_path) touch(install_mark_path) Logging.info("Cocos2d console installed successfully at %s" % console_path) Logging.info("Now type: cocos")