def create(hostname, source, destination, nightly=False): os.chdir(source) os.system('svn update') existing = os.listdir(destination) os.system('python setup.py egg_info %s sdist' % (('-RDb ""', '')[int(nightly)])) filename = None for item in os.listdir(os.path.join(source, 'dist')): if(item not in existing): filename = item shutil.copy(os.path.join(source, 'dist', item), destination) break else: raise IOError("Tarball not found.") match = RE_TARBALL_VERSION.match(filename) if not(match): raise RuntimeError("Filename %s can't be parsed for project and version information." % filename) project_name = match.group(1) release_version = match.group(2) pool = dbapi.connect(modusite_site.db_url) store = Store(pool) store.ensure_factory('project', model_class=project.Project) store.ensure_factory('release', model_class=release.Release) p = store.load_one('project', shortname=project_name) if not(p): raise RuntimeError("No such project, '%s'" % project_name) r = store.load_one('release', project_id=p.get_id(), version_string=release_version) if(r): raise RuntimeError("There is already a '%s' release with version string '%s'" % (project_name, release_version)) r = release.Release() r.project_id = p.get_id() r.active = 1 r.nightly = int(nightly) r.release_date = datetime.datetime.now() r.license_name = p.license_name r.license_url = p.license_url r.installation_url = p.installation_url r.changelog_url = p.changelog_url r.version_string = release_version r.version_weight = re.sub(r'[-_.]', '', release_version) req = get_release_request(hostname) r.load_tarball_info(req, filename) store.save(r)
print >>sys.stderr, '%s: %s\nTry --help for usage details.' % (sys.argv[0], e) sys.exit(1) child_pid = os.fork() if child_pid: time.sleep(config['timeout']) for sig in ('TERM', 'INT', 'HUP', 'KILL'): if(os.system('kill -%s %d' % (sig, child_pid)) != 0): print >>sys.stderr, "warning: kill failed: pid=%d, signal=%s" % (child_pid, sig) time.sleep(1) pid, retval = os.wait() sys.exit(retval) else: if(config['feed']): pool = dbapi.connect(feedme_site.db_url) store = Store(pool) store.ensure_factory('feed', model_class=feed.Feed) f = store.load_one('feed', url_code=config['feed']) try: sys.stdout.write(f.to_xml()) except: sys.exit(-2) else: url = sys.stdin.readline() pattern = '' char = sys.stdin.read() while(char): pattern += char