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\.]+&amp;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