axmol/tools/console/plugins/plugin_package/package_install.py

56 lines
2.1 KiB
Python

import cocos
from MultiLanguage import MultiLanguage
from helper import PackageHelper
class PackageInstall(cocos.CCPlugin):
@staticmethod
def plugin_name():
return "install"
@staticmethod
def brief_description():
return MultiLanguage.get_string('PACKAGE_INSTALL_BRIEF')
# parse arguments
def parse_args(self, argv):
from argparse import ArgumentParser
parser = ArgumentParser(prog="cocos package %s" % self.__class__.plugin_name(),
description=self.__class__.brief_description())
parser.add_argument("name", metavar="PACKAGE_NAME",
help=MultiLanguage.get_string('PACKAGE_INSTALL_ARG_NAME'))
parser.add_argument("-f", action="store_true", dest="force",
help=MultiLanguage.get_string('PACKAGE_INSTALL_ARG_FORCE'))
parser.add_argument('-v', '--version', default='all',
help=MultiLanguage.get_string('PACKAGE_INFO_ARG_VERSION'))
return parser.parse_args(argv)
def run(self, argv):
args = self.parse_args(argv)
name = args.name
version = args.version
force = args.force
package_data = PackageHelper.query_package_data(name, version)
if package_data is None:
message = MultiLanguage.get_string('PACKAGE_INSTALL_ERROR_NO_PKG_FMT', (name, version))
raise cocos.CCPluginError(message, cocos.CCPluginError.ERROR_OTHERS)
if isinstance(package_data, list):
for data in package_data:
self.download(force, data)
return
if package_data.has_key('err'):
message = MultiLanguage.get_string('PACKAGE_INSTALL_ERROR_NO_PKG_FMT', (name, version))
raise cocos.CCPluginError(message, cocos.CCPluginError.ERROR_WRONG_CONFIG)
self.download(force, package_data)
def download(self, force, package_data):
PackageHelper.download_package_zip(package_data, force)
PackageHelper.add_package(package_data)
print ""