r8903 - scripts/trunk
Gonéri Le Bouder
goneri at alioth.debian.org
Sat Feb 21 18:03:21 UTC 2009
Author: goneri
Date: 2009-02-21 18:03:21 +0000 (Sat, 21 Feb 2009)
New Revision: 8903
Modified:
scripts/trunk/viewPatches
Log:
support Debian Git repositories
add arg parsing
store the patches
etc
Modified: scripts/trunk/viewPatches
===================================================================
--- scripts/trunk/viewPatches 2009-02-21 16:38:36 UTC (rev 8902)
+++ scripts/trunk/viewPatches 2009-02-21 18:03:21 UTC (rev 8903)
@@ -1,10 +1,36 @@
#!/usr/bin/python
+# The MIT License
+#
+# Copyright (c) 2009 Gonéri Le Bouder
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
import urllib2
from urllib2 import Request, URLError
import re
from threading import Thread
+import os
+import sys
+import getopt
+
class File:
def __init__(self, name, url):
self.name = name
@@ -12,85 +38,102 @@
class Origin(Thread):
- def __init__(self):
+ def __init__(self, package):
Thread.__init__(self)
+ self.package = package
self.files = []
- self.found = False
+ self.ignoreFiles = []
def run(self):
baseUrl = self.baseUrl % self.package
try:
lines = urllib2.urlopen(baseUrl).read()
except URLError, e:
- self.found=False
return
for filename in re.findall(self.findAllRegex, lines):
- url = self.downloadBaseUrl % (self.package, filename)
- file=File(filename,url)
- self.files.append(file)
- self.found=True
+ try:
+ self.ignoreFiles.index(filename)
+ except:
+ url = self.downloadBaseUrl % (self.package, filename)
+ file=File(filename,url)
+ self.files.append(file)
class Fedora(Origin):
def __init__(self, package):
- Origin.__init__(self)
- self.package = package
+ Origin.__init__(self, package)
self.name = 'Fedora Project'
+ self.localDir = 'fedora'
self.baseUrl = 'http://cvs.fedoraproject.org/viewvc/rpms/%s/devel/'
self.findAllRegex = 'devel/(..*?)\?view'
self.downloadBaseUrl = 'http://cvs.fedoraproject.org/viewvc/rpms/%s/devel/%s?view=co'
+ self.ignoreFiles = [ '.cvsignore', 'Makefile' ]
class OpenBSD(Origin):
def __init__(self, package):
- Origin.__init__(self)
- self.package = package
+ Origin.__init__(self, package)
self.name = 'OpenBSD'
+ self.localDir = 'openbsd'
self.baseUrl = 'http://www.openbsd.org/cgi-bin/cvsweb/ports/games/%s/patches/'
self.findAllRegex = '<a href="(.*?)\?rev='
self.downloadBaseUrl = 'http://www.openbsd.org/cgi-bin/cvsweb/~checkout~/ports/games/%s/patches/%s'
class ArchLinux(Origin):
def __init__(self, package):
- Origin.__init__(self)
- self.package = package
+ Origin.__init__(self, package)
self.name = 'ArchLinux'
+ self.localDir = 'archlinux'
self.baseUrl = 'http://repos.archlinux.org/viewvc.cgi/%s/trunk/'
self.findAllRegex = 'trunk/(.*?)\?view=log'
self.downloadBaseUrl = 'http://repos.archlinux.org/viewvc.cgi/%s/trunk/%s?view=co'
+ self.ignoreFiles = [ 'ChangeLog', 'PKGBUILD' ]
class FreeBSD(Origin):
def __init__(self, package):
- Origin.__init__(self)
- self.package = package
+ Origin.__init__(self, package)
self.name = 'FreeBSD'
+ self.localDir = 'freebsd'
self.baseUrl = 'http://www.freebsd.org/cgi/cvsweb.cgi/ports/games/%s/files/'
self.findAllRegex = '<a href="(.*?)\?rev='
self.downloadBaseUrl = 'http://www.freebsd.org/cgi/cvsweb.cgi/~checkout~/ports/games/%s/files/%s'
-class Debian(Origin):
+class DebianSvn(Origin):
def __init__(self, package):
- Origin.__init__(self)
- self.package = package
- self.name = 'Debian'
+ Origin.__init__(self, package)
+ self.name = 'Debian SVN'
+ self.localDir = 'debian'
self.baseUrl = 'http://svn.debian.org/viewsvn/pkg-games/packages/trunk/%s/debian/patches/'
- self.findAllRegex = '/(.*?)\?rev=\d+&view=auto'
+ self.findAllRegex = 'debian/patches/(.*?)\?rev=\d+&view=auto'
self.downloadBaseUrl = 'http://svn.debian.org/viewsvn/*checkout*/pkg-games/packages/trunk/%s/debian/patches/%s'
+ self.ignoreFiles = [ 'serie' ]
+class DebianGit(Origin):
+ def __init__(self, package):
+ Origin.__init__(self, package)
+ self.name = 'Debian Git'
+ self.localDir = 'debian'
+ self.baseUrl = 'http://git.debian.org/?p=pkg-games/%s.git;a=tree;f=debian/patches'
+ self.findAllRegex = 'a=blob_plain;f=debian/patches/(.*);hb=HEAD">raw</a></td>'
+ self.downloadBaseUrl = 'http://git.debian.org/?p=pkg-games/%s.git;a=blob_plain;f=debian/patches/%s'
+ self.ignoreFiles = [ 'series' ]
+
+
+
class NetBSD(Origin):
def __init__(self, package):
- Origin.__init__(self)
- self.package = package
+ Origin.__init__(self, package)
self.name = 'NetBSD'
+ self.localDir = 'netbsd'
self.baseUrl = 'http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/games/%s/patches/?only_with_tag=MAIN'
self.findAllRegex = '<a href="(.*?)\?rev='
self.downloadBaseUrl = 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/pkgsrc/games/%s/patches/%s'
class Gentoo(Origin):
def __init__(self, package):
- Origin.__init__(self)
- self.package = package
+ Origin.__init__(self, package)
self.name = 'Gentoo'
+ self.localDir = 'gentoo'
self.findRemoteDirs()
self.findAllRegex = 'files/(.*?)\?rev=[\d\.]+&view=log'
@@ -109,27 +152,90 @@
self.baseUrl = 'http://sources.gentoo.org/viewcvs.py/gentoo-x86/%s/%%s/files/' % section
self.downloadBaseUrl = 'http://sources.gentoo.org/viewcvs.py/*checkout*/gentoo-x86/%s/%%s/files/%%s' % section
break
+
+class Params():
+ def __init__(self):
+ self.writeFiles=False
+ self.packages = []
+
+ try:
+ opts, args = getopt.getopt(sys.argv[1:], "w")
+ except getopt.error, msg:
+ self.help()
+ # process options
+ for o, a in opts:
+ if o in ("-w"):
+ self.writeFiles=True
+ # process arguments
+ for arg in args:
+ self.packages.append(arg)
+
+ if not self.packages:
+ self.help()
+ def help(self):
+ print '%s [-w] gameName' % sys.argv[0]
+ print ' %s boson' % sys.argv[0]
+ print ' -> display the patches for boson'
+ print ''
+ print ' %s -w freeciv' % sys.argv[0]
+ print ' -> display en sotre the patches for freeciv'
+ sys.exit(0)
+
-package = 'anjuta'
+def writeFile(origin, file):
+ if not os.path.isdir(origin.localDir):
+ os.mkdir(origin.localDir)
+ dest = '%s/%s' % (origin.localDir, file.name)
+ try:
+ data = urllib2.urlopen(file.url).read()
+ except URLError, e:
+ print 'Failed to download "%s": %s' % (file.url, e)
+ return
+ f = open (dest, 'w')
+ f.write(data)
+ f.close
-origins = []
-origins.append(Fedora(package))
-origins.append(OpenBSD(package))
-origins.append(FreeBSD(package))
-origins.append(Debian(package))
-origins.append(NetBSD(package))
-origins.append(Gentoo(package))
-origins.append(ArchLinux(package))
-for origin in origins:
- origin.start()
+def processPackages(params):
+ print params.writeFiles
+ for package in params.packages:
+ processPackage(params, package)
-for origin in origins:
- origin.join()
+def processPackage(params, package):
- if origin.found:
- print "= %s =" % origin.name
- for file in origin.files:
- print ' - %s ( %s )' % (file.name, file.url)
+
+ origins = []
+ origins.append(Fedora(package))
+ origins.append(OpenBSD(package))
+ origins.append(FreeBSD(package))
+ origins.append(DebianSvn(package))
+ origins.append(DebianGit(package))
+ origins.append(NetBSD(package))
+ origins.append(Gentoo(package))
+ origins.append(ArchLinux(package))
+
+
+ for origin in origins:
+ origin.start()
+
+ for origin in origins:
+ origin.join()
+
+ if origin.files:
+ print '= %s =' % origin.name
+ for file in origin.files:
+ print ' - %s ( %s )' % (file.name, file.url)
+ if params.writeFiles:
+ writeFile(origin, file)
+
+def main():
+ params = Params()
+ print params.writeFiles
+ processPackages(params)
+
+ #writeFile(origin, file)
+if __name__ == "__main__":
+ main()
+
More information about the Pkg-games-commits
mailing list