#!/usr/bin/env python

# feed this the results of 'tahoe catalog-shares' for all servers

import sys

chk_encodings = {}
sdmf_encodings = {}
sdmf_versions = {}

for catalog in sys.argv[1:]:
    for line in open(catalog, "r").readlines():
        line = line.strip()
        pieces = line.split()
        if pieces[0] == "CHK":
            ftype, si, kN, size, ueb_hash, expiration, filename = pieces
            if si not in chk_encodings:
                chk_encodings[si] = (set(), set())
            chk_encodings[si][0].add( (si, kN) )
            chk_encodings[si][1].add( line )
        if pieces[0] == "SDMF":
            ftype, si, kN, size, ver, expiration, filename = pieces
            if si not in sdmf_encodings:
                sdmf_encodings[si] = (set(), set())
            sdmf_encodings[si][0].add( (si, kN) )
            sdmf_encodings[si][1].add( line )
            if si not in sdmf_versions:
                sdmf_versions[si] = (set(), set())
            sdmf_versions[si][0].add( ver )
            sdmf_versions[si][1].add( line )

del si
chk_multiple_encodings = [(si,lines)
                          for si,(encodings,lines) in chk_encodings.items()
                          if len(encodings) > 1]
chk_multiple_encodings.sort()
sdmf_multiple_encodings = [(si,lines)
                           for si,(encodings,lines) in sdmf_encodings.items()
                           if len(encodings) > 1
                           ]
sdmf_multiple_encodings.sort()
sdmf_multiple_versions = [(si,lines)
                          for si,(versions,lines) in sdmf_versions.items()
                          if len(versions) > 1]
sdmf_multiple_versions.sort()

if chk_multiple_encodings:
    print
    print "CHK multiple encodings:"
    for (si,lines) in chk_multiple_encodings:
        print " " + si
        for line in sorted(lines):
            print "  " + line
if sdmf_multiple_encodings:
    print
    print "SDMF multiple encodings:"
    for (si,lines) in sdmf_multiple_encodings:
        print " " + si
        for line in sorted(lines):
            print "  " + line
if sdmf_multiple_versions:
    print
    print "SDMF multiple versions:"
    for (si,lines) in sdmf_multiple_versions:
        print " " + si
        for line in sorted(lines):
            print "  " + line
