[GRASS-SVN] r50625 - in grass-addons/grass7/general: . g.compare.md5

svn_grass at osgeo.org svn_grass at osgeo.org
Thu Feb 2 03:40:53 EST 2012


Author: lucadelu
Date: 2012-02-02 00:40:53 -0800 (Thu, 02 Feb 2012)
New Revision: 50625

Added:
   grass-addons/grass7/general/g.compare.md5/
   grass-addons/grass7/general/g.compare.md5/g.compare.md5.html
   grass-addons/grass7/general/g.compare.md5/g.compare.md5.py
Removed:
   grass-addons/grass7/general/g.compare.md5/g.md5sum.html
   grass-addons/grass7/general/g.compare.md5/g.md5sum.py
   grass-addons/grass7/general/g.md5sum/
Modified:
   grass-addons/grass7/general/g.compare.md5/Makefile
Log:
g.md5sum renamed to g.compare.md5

Modified: grass-addons/grass7/general/g.compare.md5/Makefile
===================================================================
--- grass-addons/grass7/general/g.md5sum/Makefile	2012-02-02 07:57:17 UTC (rev 50624)
+++ grass-addons/grass7/general/g.compare.md5/Makefile	2012-02-02 08:40:53 UTC (rev 50625)
@@ -1,6 +1,6 @@
 MODULE_TOPDIR = ../..
 
-PGM = g.md5sum
+PGM = g.compare.md5
 
 include $(MODULE_TOPDIR)/include/Make/Script.make
 

Copied: grass-addons/grass7/general/g.compare.md5/g.compare.md5.html (from rev 50624, grass-addons/grass7/general/g.md5sum/g.md5sum.html)
===================================================================
--- grass-addons/grass7/general/g.compare.md5/g.compare.md5.html	                        (rev 0)
+++ grass-addons/grass7/general/g.compare.md5/g.compare.md5.html	2012-02-02 08:40:53 UTC (rev 50625)
@@ -0,0 +1,33 @@
+<h2>DESCRIPTION</h2>
+
+<em>g.md5sum</em> is a module that check if two maps are identical. It use md5 
+cryptographic hash function.
+For vector layer it does not check if attribute tables are identical too.
+
+<h2>EXAMPLE</h2>
+
+North Carolina example, with elevation map
+
+<div class="code"><pre>
+# copy the map
+g.copy rast=elevation,dem
+
+# now check and return true
+g.md5sum ain=elevation bin=dem
+
+# now change the color table
+r.colors map=dem color=srtm
+
+# check again e return false...
+g.md5sum ain=elevation bin=dem
+
+# but if add the -c flag return true again
+g.md5sum -c ain=elevation bin=dem
+
+</pre></div>
+
+<h2>AUTHORS</h2>
+
+Luca Delucchi, Fondazione Edmund Mach, Research and Innovation Centre,
+Department of Biodiversity and Molecular Ecology,
+<a href="http://gis.cri.fmach.it">GIS and Remote Sensing Unit</a>

Copied: grass-addons/grass7/general/g.compare.md5/g.compare.md5.py (from rev 50624, grass-addons/grass7/general/g.md5sum/g.md5sum.py)
===================================================================
--- grass-addons/grass7/general/g.compare.md5/g.compare.md5.py	                        (rev 0)
+++ grass-addons/grass7/general/g.compare.md5/g.compare.md5.py	2012-02-02 08:40:53 UTC (rev 50625)
@@ -0,0 +1,202 @@
+#!/usr/bin/env python
+
+################################################################################
+#
+# MODULE:       g.md5sum.py
+#
+# AUTHOR(S):    Luca Delucchi <lucadeluge at gmail.com>
+#               
+# PURPOSE:      Check if two maps are the same
+#
+# COPYRIGHT:    (c) 2012 by Luca Delucchi and the GRASS Development Team
+#               
+#               This program is free software under the GNU General
+#               Public License (>=v2). Read the file COPYING that
+#               comes with GRASS for details.
+#
+################################################################################
+
+#%module
+#% description: Check if two maps are identical
+#% keywords: general, map management, list
+#%end
+#%flag
+#% key: g
+#% description: Return output in shell script style (0 fail, 1 success)
+#%end
+#%flag
+#% key: c
+#% description: Does not consider the color table for raster
+#%end
+#%flag
+#% key: t
+#% description: Does not consider the topology for vector
+#%end
+#%option
+#% key: ainput
+#% type: string
+#% gisprompt: old,file,file
+#% description: Name of first map to check
+#% key_desc: name
+#% required : yes
+#%end
+#%option
+#% key: binput
+#% type: string
+#% gisprompt: old,file,file
+#% description: Name of second map to check
+#% required : yes
+#%end
+#%option G_OPT_M_DATATYPE
+#% key: type
+#% options: rast,vector
+#% answer: rast
+#%end
+
+import os, sys
+import hashlib
+import grass.script as grass
+
+def md5(fileName, excludeLine="", includeLine=""):
+    """Compute md5 hash of the specified file"""
+    m = hashlib.md5()
+    try:
+        fd = open(fileName,"rb")
+    except IOError:
+        print "Unable to open the file in readmode:", fileName
+        return
+    content = fd.readlines()
+    fd.close()
+    for eachLine in content:
+        if excludeLine and eachLine.startswith(excludeLine):
+            continue
+        m.update(eachLine)
+    m.update(includeLine)
+    return m.hexdigest()
+
+def checkfile(name, formatt,shell):
+    """Check if the input file exists"""
+    if formatt == "rast":
+        typ = "Raster"
+        inp = grass.find_file(name)
+    elif formatt == "vector":
+        typ = "Vector"
+        inp = grass.find_file(name,formatt)
+    if inp['name'] == '':
+        if shell:
+            grass.message(0)
+            return
+        else:
+            grass.fatal(_('%s %s does not exists' % (typ,name)))
+    else:
+        return inp
+
+def checkmd5(a,b,shell):
+    """Check if md5 is the same for both files"""
+    # check if the files exist and if the user have permission to read them
+    if os.path.exists(a) and os.path.exists(b):
+        if not os.access(a, os.R_OK):
+            if shell:
+                grass.message(0)
+                return
+            else:
+                grass.fatal(_('You have no permission to read %s file' % a))
+        if not os.access(b, os.R_OK):
+            if shell:
+                grass.message(0)
+                return
+            else:
+                grass.fatal(_('You have no permission to read %s file' % b))
+        # calculate the md5
+        amd5 = md5(a)
+        bmd5 = md5(b)
+        # check if md5 is the same
+        if amd5 == bmd5:
+            return 1
+        else:
+            return 0
+    # if both files doesn't exist this is good
+    elif not os.path.exists(a) and not os.path.exists(b):
+        return 1
+    # one file exists and the other not, this is not good result
+    else:
+        # if some files could be not exist add here other elif condition
+            return 0
+
+def main():
+    # check if we are in grass
+    gisbase = os.getenv('GISBASE')
+    if not gisbase:
+        grass.fatal(_('$GISBASE not defined'))
+        return 0
+    # check if shell script output is required
+    if flags['g']:
+        shell = True
+        err = 0
+        good = 1
+    else:
+        shell = False
+        err = _('The two files are different')
+        good = _('The two files are identical')    
+    # options
+    typ = options['type']
+    ainp = checkfile(options['ainput'],typ,shell)
+    binp = checkfile(options['binput'],typ,shell)
+    variables = grass.core.gisenv()
+    # files to investigate to check identity
+    # for now color2 is ignored
+    raster_folder = [ "cats", "cell", "cellhd", "cell_misc", "fcell", "colr", "hist" ]
+    if flags['c']:
+        raster_folder.remove("colr")
+    vector_folder = [ "coor", "head", "topo" ]
+    if flags['t']:
+        vector_folder.remove("topo")
+    # path to the mapsets
+    aloc = os.path.join(variables['GISDBASE'],variables['LOCATION_NAME'],ainp['mapset'])
+    bloc = os.path.join(variables['GISDBASE'],variables['LOCATION_NAME'],binp['mapset'])
+    # variable for color table
+    md5color = 1
+    # start analysis for raster
+    if typ == "rast":
+        # for each folder
+        for fold in raster_folder:
+            # create the path to folder
+            apath = os.path.join(aloc,fold,ainp['name'])
+            bpath = os.path.join(bloc,fold,binp['name'])
+            # if folder is cell_misc it check the into files inside cell_misc folder
+            if fold == "cell_misc":
+                adirlist = os.listdir(apath)
+                bdirlist = os.listdir(bpath)
+                # if the files are the same check md5sum for each file
+                if adirlist == bdirlist:
+                    for i in adirlist:
+                        apath = os.path.join(apath,i)
+                        bpath = os.path.join(bpath,i)
+                        if not checkmd5(apath,bpath,shell):
+                            grass.message(err)
+                            return
+                # if the files are different return false
+                else:
+                    grass.message(err)
+                    return
+            # check md5sum for each file
+            else:
+                if not checkmd5(apath,bpath,shell):
+                    grass.message(err)
+                    return
+        grass.message(good)
+        return
+    # start analysis for vector
+    elif typ == "vector":
+        for fold in vector_folder:
+            apath = os.path.join(aloc,'vector',ainp['name'],fold)
+            bpath = os.path.join(bloc,'vector',binp['name'],fold)
+            if not checkmd5(apath,bpath,shell):
+                grass.message(err)
+                return
+        grass.message(good)
+        return
+
+if __name__ == "__main__":
+    options, flags = grass.parser()
+    sys.exit(main())

Deleted: grass-addons/grass7/general/g.compare.md5/g.md5sum.html
===================================================================
--- grass-addons/grass7/general/g.md5sum/g.md5sum.html	2012-02-02 07:57:17 UTC (rev 50624)
+++ grass-addons/grass7/general/g.compare.md5/g.md5sum.html	2012-02-02 08:40:53 UTC (rev 50625)
@@ -1,33 +0,0 @@
-<h2>DESCRIPTION</h2>
-
-<em>g.md5sum</em> is a module that check if two maps are identical. It use md5 
-cryptographic hash function.
-For vector layer it does not check if attribute tables are identical too.
-
-<h2>EXAMPLE</h2>
-
-North Carolina example, with elevation map
-
-<div class="code"><pre>
-# copy the map
-g.copy rast=elevation,dem
-
-# now check and return true
-g.md5sum ain=elevation bin=dem
-
-# now change the color table
-r.colors map=dem color=srtm
-
-# check again e return false...
-g.md5sum ain=elevation bin=dem
-
-# but if add the -c flag return true again
-g.md5sum -c ain=elevation bin=dem
-
-</pre></div>
-
-<h2>AUTHORS</h2>
-
-Luca Delucchi, Fondazione Edmund Mach, Research and Innovation Centre,
-Department of Biodiversity and Molecular Ecology,
-<a href="http://gis.cri.fmach.it">GIS and Remote Sensing Unit</a>

Deleted: grass-addons/grass7/general/g.compare.md5/g.md5sum.py
===================================================================
--- grass-addons/grass7/general/g.md5sum/g.md5sum.py	2012-02-02 07:57:17 UTC (rev 50624)
+++ grass-addons/grass7/general/g.compare.md5/g.md5sum.py	2012-02-02 08:40:53 UTC (rev 50625)
@@ -1,202 +0,0 @@
-#!/usr/bin/env python
-
-################################################################################
-#
-# MODULE:       g.md5sum.py
-#
-# AUTHOR(S):    Luca Delucchi <lucadeluge at gmail.com>
-#               
-# PURPOSE:      Check if two maps are the same
-#
-# COPYRIGHT:    (c) 2012 by Luca Delucchi and the GRASS Development Team
-#               
-#               This program is free software under the GNU General
-#               Public License (>=v2). Read the file COPYING that
-#               comes with GRASS for details.
-#
-################################################################################
-
-#%module
-#% description: Check if two maps are identical
-#% keywords: general, map management, list
-#%end
-#%flag
-#% key: g
-#% description: Return output in shell script style (0 fail, 1 success)
-#%end
-#%flag
-#% key: c
-#% description: Does not consider the color table for raster
-#%end
-#%flag
-#% key: t
-#% description: Does not consider the topology for vector
-#%end
-#%option
-#% key: ainput
-#% type: string
-#% gisprompt: old,file,file
-#% description: Name of first map to check
-#% key_desc: name
-#% required : yes
-#%end
-#%option
-#% key: binput
-#% type: string
-#% gisprompt: old,file,file
-#% description: Name of second map to check
-#% required : yes
-#%end
-#%option G_OPT_M_DATATYPE
-#% key: type
-#% options: rast,vector
-#% answer: rast
-#%end
-
-import os, sys
-import hashlib
-import grass.script as grass
-
-def md5(fileName, excludeLine="", includeLine=""):
-    """Compute md5 hash of the specified file"""
-    m = hashlib.md5()
-    try:
-        fd = open(fileName,"rb")
-    except IOError:
-        print "Unable to open the file in readmode:", fileName
-        return
-    content = fd.readlines()
-    fd.close()
-    for eachLine in content:
-        if excludeLine and eachLine.startswith(excludeLine):
-            continue
-        m.update(eachLine)
-    m.update(includeLine)
-    return m.hexdigest()
-
-def checkfile(name, formatt,shell):
-    """Check if the input file exists"""
-    if formatt == "rast":
-        typ = "Raster"
-        inp = grass.find_file(name)
-    elif formatt == "vector":
-        typ = "Vector"
-        inp = grass.find_file(name,formatt)
-    if inp['name'] == '':
-        if shell:
-            grass.message(0)
-            return
-        else:
-            grass.fatal(_('%s %s does not exists' % (typ,name)))
-    else:
-        return inp
-
-def checkmd5(a,b,shell):
-    """Check if md5 is the same for both files"""
-    # check if the files exist and if the user have permission to read them
-    if os.path.exists(a) and os.path.exists(b):
-        if not os.access(a, os.R_OK):
-            if shell:
-                grass.message(0)
-                return
-            else:
-                grass.fatal(_('You have no permission to read %s file' % a))
-        if not os.access(b, os.R_OK):
-            if shell:
-                grass.message(0)
-                return
-            else:
-                grass.fatal(_('You have no permission to read %s file' % b))
-        # calculate the md5
-        amd5 = md5(a)
-        bmd5 = md5(b)
-        # check if md5 is the same
-        if amd5 == bmd5:
-            return 1
-        else:
-            return 0
-    # if both files doesn't exist this is good
-    elif not os.path.exists(a) and not os.path.exists(b):
-        return 1
-    # one file exists and the other not, this is not good result
-    else:
-        # if some files could be not exist add here other elif condition
-            return 0
-
-def main():
-    # check if we are in grass
-    gisbase = os.getenv('GISBASE')
-    if not gisbase:
-        grass.fatal(_('$GISBASE not defined'))
-        return 0
-    # check if shell script output is required
-    if flags['g']:
-        shell = True
-        err = 0
-        good = 1
-    else:
-        shell = False
-        err = _('The two files are different')
-        good = _('The two files are identical')    
-    # options
-    typ = options['type']
-    ainp = checkfile(options['ainput'],typ,shell)
-    binp = checkfile(options['binput'],typ,shell)
-    variables = grass.core.gisenv()
-    # files to investigate to check identity
-    # for now color2 is ignored
-    raster_folder = [ "cats", "cell", "cellhd", "cell_misc", "fcell", "colr", "hist" ]
-    if flags['c']:
-        raster_folder.remove("colr")
-    vector_folder = [ "coor", "head", "topo" ]
-    if flags['t']:
-        vector_folder.remove("topo")
-    # path to the mapsets
-    aloc = os.path.join(variables['GISDBASE'],variables['LOCATION_NAME'],ainp['mapset'])
-    bloc = os.path.join(variables['GISDBASE'],variables['LOCATION_NAME'],binp['mapset'])
-    # variable for color table
-    md5color = 1
-    # start analysis for raster
-    if typ == "rast":
-        # for each folder
-        for fold in raster_folder:
-            # create the path to folder
-            apath = os.path.join(aloc,fold,ainp['name'])
-            bpath = os.path.join(bloc,fold,binp['name'])
-            # if folder is cell_misc it check the into files inside cell_misc folder
-            if fold == "cell_misc":
-                adirlist = os.listdir(apath)
-                bdirlist = os.listdir(bpath)
-                # if the files are the same check md5sum for each file
-                if adirlist == bdirlist:
-                    for i in adirlist:
-                        apath = os.path.join(apath,i)
-                        bpath = os.path.join(bpath,i)
-                        if not checkmd5(apath,bpath,shell):
-                            grass.message(err)
-                            return
-                # if the files are different return false
-                else:
-                    grass.message(err)
-                    return
-            # check md5sum for each file
-            else:
-                if not checkmd5(apath,bpath,shell):
-                    grass.message(err)
-                    return
-        grass.message(good)
-        return
-    # start analysis for vector
-    elif typ == "vector":
-        for fold in vector_folder:
-            apath = os.path.join(aloc,'vector',ainp['name'],fold)
-            bpath = os.path.join(bloc,'vector',binp['name'],fold)
-            if not checkmd5(apath,bpath,shell):
-                grass.message(err)
-                return
-        grass.message(good)
-        return
-
-if __name__ == "__main__":
-    options, flags = grass.parser()
-    sys.exit(main())



More information about the grass-commit mailing list