| #!/usr/bin/env python |
| # ----------------------------------------------------------------------- |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # ----------------------------------------------------------------------- |
| |
| |
| import os |
| import sys |
| import getopt |
| |
| from ducc_util import DuccUtil |
| from properties import Properties |
| from ducc import Ducc |
| |
| class PropsDiff(DuccUtil): |
| |
| def usage(self, msg): |
| if (msg != None): |
| if ( msg[0] != None ): |
| msg = ' '.join(msg) |
| print msg |
| |
| print "Usage:" |
| print " ducc_props_diff [other-props-file]" |
| print '' |
| print ' This script compares the installed ducc.properties against another ducc.properties' |
| sys.exit(1) |
| |
| def main(self, argv): |
| |
| if ( (len(argv) != 1) or (argv[0] == '-h') or (argv[0] == '-?') ): |
| self.usage(None) |
| |
| diffs = Properties() |
| |
| foreign = Properties(); |
| try: |
| foreign.load(argv[0]) |
| except: |
| print "Cannot load", argv[0] |
| sys.exit(1) |
| |
| local = self.ducc_properties |
| |
| # Iterate |
| # If a thing is in both maps, delete it from the maps |
| # and put it into the diffmap for printing |
| for ( k, v ) in foreign.items(): |
| lv = local.get(k) |
| if ( lv != None ): |
| if ( v != lv ): |
| diffs.put(k, (v, lv)) |
| local.delete(k) |
| foreign.delete(k) |
| |
| print '--------------------------------------------------------------------------------' |
| if ( len(foreign) == 0 ): |
| print "Every property in", argv[0], "is in ducc.properties" |
| else: |
| print "These items are in", argv[0], "only" |
| for ( k, v ) in foreign.items(): |
| print ' ', k, v |
| print '--------------------------------------------------------------------------------' |
| print '' |
| |
| if ( local.items == 0 ): |
| print "Every property in ducc.properties is in", argv[0] |
| else: |
| print "These items are in ducc.properties only" |
| for ( k, v ) in local.items(): |
| print ' ', k, v |
| print '--------------------------------------------------------------------------------' |
| print '' |
| |
| print "These are in both maps with different values" |
| for ( k, v ) in diffs.items(): |
| print k |
| print ' installed : ', v[1] |
| print ' compare to: ', v[0] |
| print '' |
| |
| if __name__ == "__main__": |
| diff = PropsDiff() |
| diff.main(sys.argv[1:]) |