#!/usr/bin/python import os import re import sys debug=False #debug=True patt=re.compile(".*\.properties$") commentPatt=re.compile("^#") equalsPatt=re.compile("^\s*[a-zA-Z].+?=.+") excludeKeys=['val'] #excludeFiles=[ 'ciweb2g-parution_code_produit.properties', 'correspondanceNumeroArrondissementCoordonnees.properties', 'MessagesCommun.properties', 'libelles_regroupements.properties', 'ciweb2g-code_produit.properties'] excludeFiles=[ 'indicatifsEurope.properties', 'indicatifsAmeriquesSud.properties', 'indicatifsAfrique.properties', 'indicatifsAsie.properties', 'indicatifsOceanie.properties' ] validKeys=0 def searchKeyValue(file, key): value="===>MANQUANTE<====" found=False if debug: print "=========================================================" if debug: print "Search %s in %s" %( key, file) f=open(file) for line in f.readlines(): if commentPatt.match(line): if debug: print "REJECT FOR COMMENT :\n\t%s" % line continue if not re.compile("^\s*%s="%key).match(line): if debug: print "REJECT FOR IMPROPER LINE :\n\t%s" % line continue (k, val)=line.split("=", 1) value=val.strip() found=True break f.close() if debug: print "%s => %s in %s" %( key, value, file) if debug: print "=========================================================" if not found: print "\n\n*****************************\n%s => %s in %s not FOUND" %( key, value, file) os.exit(1) return value def parsePropertiesFile(filename): listParams={} f=open(filename) for line in f.readlines(): line=line[:-1] if commentPatt.match(line): if debug: print "REJECT FOR COMMENT :\n\t%s" % line continue if not equalsPatt.match(line): if debug: print "REJECT FOR IMPROPER FORMAT :\n\t%s" % line continue #print line (key, value)=line.split("=", 1) key=key.strip() if key in excludeKeys: continue value=value.strip() if key in listParams: print "========================================================" print "%s IS DUPLICATED" % key print "========================================================" os.exit(1) listParams[key]=value global validKeys validKeys+=1 f.close() return listParams for root, dirs, files in os.walk(sys.argv[1]): for name in files: if not patt.match(name): continue if name in excludeFiles : continue listParams=parsePropertiesFile("%s/%s"%(root,name)) if len(listParams) > 0: if debug: print "=========================================================" print "%s;"% name print ";Clef;Valeur;Commentaires;" for (key,value) in listParams.items(): otherVal= searchKeyValue("%s/%s"% (sys.argv[2], name), key) ident="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" if value == otherVal : ident="" print ";'%s';'%s';'%s';'%s'" % (key, value, otherVal, ident) print "" print "nb valid keys : %d" % validKeys