예제 #1
0
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)
	
예제 #2
0
		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