1
# Copyright 2004 Canonical Ltd. All rights reserved.
3
# arch-tag: 5ce06dae-6ab3-4397-8ff2-e7fec441857f
5
__author__ = "David Allouche <david@canonical.com>"
6
__copyright__ = "Copyright (C) 2004 Canonical Ltd."
9
from canonical.arch import infoImporter
11
from canonical.launchpad.database import Product
12
from canonical.launchpad.database import ArchArchive
13
from canonical.launchpad.database import Person
14
from canonical.launchpad.database import SourceSource
15
from canonical.database import sqlbase
18
def repositoryIsTar(cvsroot):
19
for suffix in ("tar.gz", "tgz", "tar.bz2"):
20
if cvsroot.endswith(suffix):
26
def isDownloadableUrl(url):
27
for prefix in ('file://', 'http://', 'https://', 'ftp://'):
28
if url.startswith(prefix):
34
def updateCvsrootFromInfoFile(infofile):
35
unassigned = infoImporter.make_unassigned_product()
36
print "** processing info file %r" % infofile
38
info = info2job.read_info(infofile, logging)
39
jobs = info2job.iter_jobs(info, logging)
41
jobname = info2job.jobfile_name(info, job)
42
print "* processing job %r" % jobname
43
cvsroot = info.get("cvsroot")
44
if cvsroot is None: continue
45
query = "name=%s AND product=%s" % (
46
sqlbase.quote(jobname), unassigned.id)
47
for source in SourceSource.select(query):
48
print 'updateCvsroot: cvsroot ==', source.cvsroot
49
if not isDownloadableUrl(source.cvsroot): continue
50
if source.cvsroot == cvsroot: continue
51
print 'updateCvsroot: cvsroot <=', cvsroot
52
source.cvsroot = cvsroot
55
def updateNameSeparator(infofile, old, new):
56
unassigned = infoImporter.make_unassigned_product()
57
print "** processing info file %r" % infofile
59
info = info2job.read_info(infofile, logging)
60
jobs = info2job.iter_jobs(info, logging)
62
jobname = info2job.jobfile_name(info, job, sep=old)
63
print "* processing job %r" % jobname
64
cvsroot = info.get("cvsroot")
65
if cvsroot is None: continue
66
query = "name=%s AND product=%s" % (
67
sqlbase.quote(jobname), unassigned.id)
68
for source in SourceSource.select(query):
70
newname = info2job.jobfile_name(info, job, sep=new)
71
if source.name == newname: continue
72
print "updateName: %r => %r" % (oldname, newname)
77
infoImporter.filterRunner(updateCvsrootFromInfoFile, filelist)
80
if __name__ == '__main__':
83
print "Usage: %s <info files>" % (sys.argv[0],)