def next_version(app, target, repository, deploy_settings): """Produce a suitable next version for app, based on existing versions""" try: latest_version = repository.latest_version(app, target=target) except KeyError: if target != 'master': return next_version(app, 'master', repository, deploy_settings) return '0' # 1 -> 1.1, 1.1 -> 1.2 version = latest_version.split('.') if len(version) == 1: version.append('1') else: version[-1] = str(int(version[-1]) + 1) return '.'.join(version)
def deploy(app, target, config, version, deploy_settings): """Deploy an application.""" if app not in available_applications(deploy_settings): log.error('This application is not in the available applications ' 'list. Please check your deploy config.') sys.exit(1) repository = yodeploy.repository.get_repository(deploy_settings) application = yodeploy.application.Application(app, config) old_version = application.live_version if version is None: version = repository.latest_version(app, target) application.deploy(target, repository, version) report(application.app, 'deploy', target, old_version, version, deploy_settings)