]> git.pld-linux.org Git - projects/pld-ftp-admin.git/commitdiff
- just needs noarch support now
authorMariusz Mazur <mmazur@pld-linux.org>
Sun, 28 Nov 2004 13:35:11 +0000 (13:35 +0000)
committerMariusz Mazur <mmazur@pld-linux.org>
Sun, 28 Nov 2004 13:35:11 +0000 (13:35 +0000)
Changed files:
    bin/pfa-from-incoming -> 1.1

bin/pfa-from-incoming [new file with mode: 0644]

diff --git a/bin/pfa-from-incoming b/bin/pfa-from-incoming
new file mode 100644 (file)
index 0000000..099b3cf
--- /dev/null
@@ -0,0 +1,120 @@
+#!/usr/bin/env python
+# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
+
+import sys, os
+sys.path.insert(0, os.environ['HOME']+'/pld-ftp-admin/modules')
+from config import incoming_dir, default_to, ftp_archs
+import config
+from common import fileexists
+
+def log(msg):
+    print msg
+
+def rm(file):
+    #os.remove()
+    print 'rm: '+file
+
+def mv(src, dst):
+    #os.rename()
+    print "mv: %s %s" % (src, dst+'/'+src.split('/')[-1])
+
+def findfiles(dir):
+    def filterinfos(x):
+        if x[-11:]=='.uploadinfo':
+            return True
+        else:
+            return False
+    return filter(filterinfos, os.listdir(dir))
+
+def getsrcrpm(content):
+    for line in content.splitlines():
+        if line[:11]=='file:SRPMS:':
+            return line.split(':')[2]
+
+def getcontent(file):
+    f=open(file, 'r')
+    content=f.read()
+    f.close()
+    if not content[-5:]=='\nEND\n':
+        return None
+    else:
+        return content[:-4]
+
+for uploadinfo in findfiles(incoming_dir+'SRPMS'):
+    content=getcontent(incoming_dir+'SRPMS/'+uploadinfo)
+    if not content:
+        continue # Uploading not finished
+
+    if fileexists(default_to+'SRPMS/.metadata/'+uploadinfo[:-11]+'.info'):
+        f=open(default_to+'SRPMS/.metadata/'+uploadinfo[:-11]+'.info', 'a')
+        for line in content.splitlines(True):
+            if line[:5]=='file:':
+                srpm=line.strip().split(':')[2]
+                log("%s already present in %s; removing newer files" %
+                    (srpm, config.value['default_to']))
+                rm(incoming_dir+'SRPMS/'+srpm)
+            elif line[:5]=='info:':
+                f.write(line)
+            else:
+                log("Uknown line in uploadinfo file: "+line.strip())
+        f.close()
+    else:
+        mv(incoming_dir+'SRPMS/'+getsrcrpm(content), default_to+'SRPMS/RPMS')
+        f=open(default_to+'SRPMS/.metadata/'+uploadinfo[:-11]+'.info', 'w')
+        f.write(content)
+        f.close()
+
+    rm(incoming_dir+'SRPMS/'+uploadinfo)
+
+
+def getfiles(filename):
+    f=open(filename, 'r')
+    file={}
+    noarch_arch={}
+    for line in f.readlines():
+        if line[:5]=='file:':
+            entry=line.split(':')
+            if not file.has_key(entry[1]):
+                file[entry[1]]=[]
+            file[entry[1]].append(entry[2])
+        elif line[:17]=='info:noarch_arch:':
+            entry=line.split(':')
+            noarch_arch[entry[2]]=entry[3]
+    f.close()
+    return (file, noarch_arch)
+
+
+for arch in ftp_archs:
+    for uploadinfo in findfiles(incoming_dir+arch):
+        content=getcontent(incoming_dir+arch+'/'+uploadinfo)
+        if not content:
+            continue # Uploading not finished
+
+        srcrpm=getsrcrpm(content)
+        dstinfofile=default_to+'SRPMS/.metadata/'+srcrpm+'.info'
+
+        if not fileexists(dstinfofile):
+            continue # We require the src.rpm to be present
+
+        (files, noarch_arch)=getfiles(dstinfofile)
+
+        if files.has_key(arch):
+            log("files from %s for arch %s already present in %s; removing newer files" % (srcrpm, arch, config.value['default_to']))
+            for line in content.splitlines():
+                if line[:10]=='file:ARCH:':
+                    rpm=line.split(':')[2]
+                    rm(incoming_dir+arch+'/'+rpm)
+            rm(incoming_dir+arch+'/'+uploadinfo)
+            continue
+
+        f=open(dstinfofile, 'a')
+        for line in content.splitlines():
+            if line[:10]=='file:ARCH:':
+                rpm=line.split(':')[2]
+                f.write("file:%s:%s\n" % (arch, rpm))
+                mv(incoming_dir+arch+'/'+rpm, default_to+arch+'/RPMS')
+        f.close()
+
+        rm(incoming_dir+arch+'/'+uploadinfo)
+
This page took 0.036777 seconds and 4 git commands to generate.