def build(self, release, interactive=False, build_cmd=None, terminate=False, build=None, cleanup=True): released_tags = os.path.join(self.project_root, self.tags_dir, release) tag = build or '%02d' % self.get_last_tag(released_tags) remote = os.path.join(released_tags, str(tag)) package_name = '%s-%s-%s' % (self.project_key, release, tag) local_path = os.path.join(self.temp_dir, package_name) if os.path.exists(local_path): if not interactive or query_yes_no('remove %s?' % local_path, default='yes'): shutil.rmtree(local_path) else: cerr('Aborted') sys.exit(0) self.export(remote, local_path) if build_cmd: os.environ['PACKAGE'] = package_name os.chdir(local_path) cerr("Build cmd: %s" % build_cmd) cerr("Package name: %s" % package_name) if interactive and not query_yes_no('execute?', default='yes'): cerr('Aborted') return args = ('/usr/bin/env', 'sh', '-c', build_cmd) stdout, stderr, ret = self.execute(args) cout(stdout) if ret: cerr(stderr) sys.exit(ret) if terminate: if cleanup: shutil.rmtree(local_path) return archive_name = os.path.join(self.temp_dir, '%s.tgz' % package_name) self.tar(archive_name, self.temp_dir, package_name, quiet=True) dest = os.path.join(self.repo_url, self.project_key) if not dest.endswith('/'): dest += '/' self.upload(archive_name, dest, interactive=interactive) if cleanup: cout("cleanup") shutil.rmtree(local_path) os.unlink(archive_name)
def build(self, release, interactive=False, build_cmd=None, terminate=False, build=None, cleanup=True): tag = build or "%02d" % self.get_last_tag(release) package_name = "%s-%s-%s" % (self.project_key, release, tag) local_path = os.path.join(self.temp_dir, package_name) if os.path.exists(local_path): if not interactive or query_yes_no("remove %s?" % local_path, default="yes"): shutil.rmtree(local_path) else: cerr("Aborted") sys.exit(0) self.clone(local_path) self.checkout(self.rc_tag(release, build)) if build_cmd: os.environ["PACKAGE"] = package_name os.chdir(local_path) cerr("Build cmd: %s" % build_cmd) cerr("Package name: %s" % package_name) if interactive and not query_yes_no("execute?", default="yes"): cerr("Aborted") return args = ("/usr/bin/env", "sh", "-c", build_cmd) stdout, stderr, ret = self.execute(args) cout(stdout) if ret: cerr(stderr) sys.exit(ret) if terminate: if cleanup: shutil.rmtree(local_path) return archive_name = os.path.join(self.temp_dir, "%s.tgz" % package_name) self.tar(archive_name, self.temp_dir, package_name, quiet=True) dest = os.path.join(self.repo_url, self.project_key) if not dest.endswith("/"): dest += "/" self.upload(archive_name, dest, interactive=interactive) if cleanup: cout("cleanup") shutil.rmtree(local_path) os.unlink(archive_name)
def print_logged_tasks(self, tasks): task_keys = sorted(tasks.keys()) cout("collected:", ','.join('%s-%s' % (self.project_key, t) for t in task_keys)) cout() for task in task_keys: revisions = map(lambda item: str(item[0]), sorted(tasks[task])) cout('%s-%s: %s' % (self.project_key, task, ','.join(revisions)))
def switch(self, branch): cout('Switch to branch: {0}'.format(branch) ) args = ('switch', branch) stdout, stderr, return_code = self.svn(args) if return_code != 0: raise SVNError(stderr)
def switch(self, branch): cout('Switch to branch: {0}'.format(branch)) args = ('switch', branch) stdout, stderr, return_code = self.svn(args) if return_code != 0: raise SVNError(stderr)