[GRASS-SVN] r38261 - in grass/trunk/scripts: . g.extension
svn_grass at osgeo.org
svn_grass at osgeo.org
Sun Jul 5 14:07:25 EDT 2009
Author: martinl
Date: 2009-07-05 14:07:25 -0400 (Sun, 05 Jul 2009)
New Revision: 38261
Added:
grass/trunk/scripts/g.extension/
grass/trunk/scripts/g.extension/g.extension.html
grass/trunk/scripts/g.extension/g.extension.py
Removed:
grass/trunk/scripts/g.extension/g.extension.add.html
grass/trunk/scripts/g.extension/g.extension.add.py
Modified:
grass/trunk/scripts/g.extension/Makefile
Log:
g.extension.add moved from grass-addons to trunk & renamed to
g.extension
Modified: grass/trunk/scripts/g.extension/Makefile
===================================================================
--- grass-addons/grass7/general/g.extension.add/Makefile 2009-07-05 15:27:18 UTC (rev 38257)
+++ grass/trunk/scripts/g.extension/Makefile 2009-07-05 18:07:25 UTC (rev 38261)
@@ -1,6 +1,6 @@
MODULE_TOPDIR = ../..
-PGM = g.extension.add
+PGM = g.extension
include $(MODULE_TOPDIR)/include/Make/Script.make
Deleted: grass/trunk/scripts/g.extension/g.extension.add.html
===================================================================
--- grass-addons/grass7/general/g.extension.add/g.extension.add.html 2009-07-05 15:27:18 UTC (rev 38257)
+++ grass/trunk/scripts/g.extension/g.extension.add.html 2009-07-05 18:07:25 UTC (rev 38261)
@@ -1,22 +0,0 @@
-<h2>DESCRIPTION</h2>
-
-<em>g.extension.add</em> downloads and installs extensions from
-GRASS Addons SVN repository into the local GRASS installation.
-
-<p>
-Re-running the script on an installed GRASS Addon re-installs
-the requested extension which may include updates.
-
-<h2>EXAMPLES</h2>
-
-Download and install i.landsat.toar into current GRASS installation:
-<div class="code"><pre>
- g.extension.add extension=i.landsat.toar
-</pre></div>
-
-<h2>AUTHOR</h2>
-
-Markus Neteler<br>
-Upgraded for GRASS 7 by Martin Landa
-
-<p><i>Last changed: $Date$</i>
Deleted: grass/trunk/scripts/g.extension/g.extension.add.py
===================================================================
--- grass-addons/grass7/general/g.extension.add/g.extension.add.py 2009-07-05 15:27:18 UTC (rev 38257)
+++ grass/trunk/scripts/g.extension/g.extension.add.py 2009-07-05 18:07:25 UTC (rev 38261)
@@ -1,161 +0,0 @@
-#!/usr/bin/env python
-
-############################################################################
-#
-# MODULE: g.extension.add
-# AUTHOR(S): Markus Neteler
-# Pythonized by Martin Landa
-# PURPOSE: tool to download and install extensions from GRASS Addons SVN into
-# local GRASS installation
-# COPYRIGHT: (C) 2009 by the Markus Neteler, 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.
-#
-# TODO: add sudo support where needed (i.e. check first permission to write into
-# $GISBASE directory)
-#############################################################################
-
-#%Module
-#% description: Tool to download and install extensions from GRASS Addons SVN repository into local GRASS installation.
-#% keywords: installation, extensions
-#%End
-
-#%option
-#% key: extension
-#% type: string
-#% key_desc : name
-#% description: Name of extension to install from GRASS Addons SVN repository
-#% required : no
-#%end
-#%flag
-#% key: l
-#% description: List available modules in the GRASS Addons SVN repository
-#%end
-
-import os
-import sys
-import re
-import atexit
-
-import urllib
-
-from grass.script import core as grass
-
-# definitions
-svnurl_addons = "https://svn.osgeo.org/grass/grass-addons/"
-
-# temp dir
-tmpdir = grass.tempfile()
-grass.try_remove(tmpdir)
-os.mkdir(tmpdir)
-
-def check():
- # check if we have the svn client
- if not grass.find_program('svn'):
- grass.fatal('svn client required. Please install subversion first.')
-
-def expand_module_class_name(c):
- name = { 'd' : 'display',
- 'db' : 'database',
- 'g' : 'general',
- 'i' : 'imagery',
- 'm' : 'misc',
- 'ps' : 'postscript',
- 'p' : 'paint',
- 'r' : 'raster',
- 'r3' : 'raster3D',
- 's' : 'sites',
- 'v' : 'vector' }
-
- if name.has_key(c):
- return name[c]
-
- return c
-
-def list_available_modules():
- global svnurl_addons
-
- grass.message('Fetching list of modules from GRASS-Addons SVN (be patient)...')
- pattern = re.compile(r'(<li><a href=".+">)(.+)(</a></li>)', re.IGNORECASE)
- for d in ['d', 'db', 'g', 'i', 'ps',
- 'p', 'r', 'r3', 'v']:
- modclass = expand_module_class_name(d)
- url = svnurl_addons + modclass
- f = urllib.urlopen(url)
- if not f:
- grass.warning("Unable to fetch '%s'" % url)
- continue
- for line in f.readlines():
- sline = pattern.search(line)
- if sline and sline.group(2).split('.', 1)[0] == d:
- print sline.group(2).rstrip('/')
-
-def cleanup():
- global tmpdir
- grass.try_rmdir(tmpdir)
-
-def main():
- # check dependecies
- check()
-
- # list available modules
- if flags['l']:
- list_available_modules()
- return 0
- else:
- if not options['extension']:
- grass.fatal('You need to define an extension name or use -l')
-
- module = options['extension']
- classchar = module.split('.', 1)[0]
- moduleclass = expand_module_class_name(classchar)
- global svnurl_addons
- url = svnurl_addons + moduleclass + '/' + module
- global tmpdir
- print tmpdir
- grass.message("Fetching '%s' from GRASS-Addons SVN (be patient)..." % module)
- os.chdir(tmpdir)
- if grass.call(['svn', 'checkout',
- url]) != 0:
- grass.fatal("GRASS Addons '%s' not found in repository" % module)
-
- os.chdir(os.path.join(tmpdir, module))
- grass.message("Compiling '%s'..." % module)
- gisbase = os.getenv('GISBASE')
- if grass.call(['make',
- 'MODULE_TOPDIR=%s' % gisbase]) != 0:
- cleanup()
- grass.fatal('Compilation failed, sorry. Please check above error messages')
-
- grass.message("Installing '%s'..." % module)
- # can we write ?
- try:
- # replace with something better
- file = os.path.join(gisbase, 'test')
- f = open(file, "w")
- f.close()
- os.remove(file)
-
- ret = grass.call(['make'
- 'MODULE_TOPDIR=%s' % gisbase,
- 'install'])
- except IOError:
- ret = grass.call(['sudo', 'make'
- 'MODULE_TOPDIR=%s' % gisbase,
- 'install'])
-
- if ret != 0:
- cleanup()
- grass.fatal('Installation failed, sorry. Please check above error messages.')
-
- grass.message("Installation of '%s' successfully finished." % module)
- cleanup()
-
- return 0
-
-if __name__ == "__main__":
- options, flags = grass.parser()
- atexit.register(cleanup)
- sys.exit(main())
Copied: grass/trunk/scripts/g.extension/g.extension.html (from rev 38257, grass-addons/grass7/general/g.extension.add/g.extension.add.html)
===================================================================
--- grass/trunk/scripts/g.extension/g.extension.html (rev 0)
+++ grass/trunk/scripts/g.extension/g.extension.html 2009-07-05 18:07:25 UTC (rev 38261)
@@ -0,0 +1,22 @@
+<h2>DESCRIPTION</h2>
+
+<em>g.extension.add</em> downloads and installs extensions from
+GRASS Addons SVN repository into the local GRASS installation.
+
+<p>
+Re-running the script on an installed GRASS Addon re-installs
+the requested extension which may include updates.
+
+<h2>EXAMPLES</h2>
+
+Download and install i.landsat.toar into current GRASS installation:
+<div class="code"><pre>
+ g.extension.add extension=i.landsat.toar
+</pre></div>
+
+<h2>AUTHOR</h2>
+
+Markus Neteler<br>
+Upgraded for GRASS 7 by Martin Landa
+
+<p><i>Last changed: $Date$</i>
Copied: grass/trunk/scripts/g.extension/g.extension.py (from rev 38257, grass-addons/grass7/general/g.extension.add/g.extension.add.py)
===================================================================
--- grass/trunk/scripts/g.extension/g.extension.py (rev 0)
+++ grass/trunk/scripts/g.extension/g.extension.py 2009-07-05 18:07:25 UTC (rev 38261)
@@ -0,0 +1,161 @@
+#!/usr/bin/env python
+
+############################################################################
+#
+# MODULE: g.extension.add
+# AUTHOR(S): Markus Neteler
+# Pythonized by Martin Landa
+# PURPOSE: tool to download and install extensions from GRASS Addons SVN into
+# local GRASS installation
+# COPYRIGHT: (C) 2009 by the Markus Neteler, 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.
+#
+# TODO: add sudo support where needed (i.e. check first permission to write into
+# $GISBASE directory)
+#############################################################################
+
+#%Module
+#% description: Tool to download and install extensions from GRASS Addons SVN repository into local GRASS installation.
+#% keywords: installation, extensions
+#%End
+
+#%option
+#% key: extension
+#% type: string
+#% key_desc : name
+#% description: Name of extension to install from GRASS Addons SVN repository
+#% required : no
+#%end
+#%flag
+#% key: l
+#% description: List available modules in the GRASS Addons SVN repository
+#%end
+
+import os
+import sys
+import re
+import atexit
+
+import urllib
+
+from grass.script import core as grass
+
+# definitions
+svnurl_addons = "https://svn.osgeo.org/grass/grass-addons/"
+
+# temp dir
+tmpdir = grass.tempfile()
+grass.try_remove(tmpdir)
+os.mkdir(tmpdir)
+
+def check():
+ # check if we have the svn client
+ if not grass.find_program('svn'):
+ grass.fatal('svn client required. Please install subversion first.')
+
+def expand_module_class_name(c):
+ name = { 'd' : 'display',
+ 'db' : 'database',
+ 'g' : 'general',
+ 'i' : 'imagery',
+ 'm' : 'misc',
+ 'ps' : 'postscript',
+ 'p' : 'paint',
+ 'r' : 'raster',
+ 'r3' : 'raster3D',
+ 's' : 'sites',
+ 'v' : 'vector' }
+
+ if name.has_key(c):
+ return name[c]
+
+ return c
+
+def list_available_modules():
+ global svnurl_addons
+
+ grass.message('Fetching list of modules from GRASS-Addons SVN (be patient)...')
+ pattern = re.compile(r'(<li><a href=".+">)(.+)(</a></li>)', re.IGNORECASE)
+ for d in ['d', 'db', 'g', 'i', 'ps',
+ 'p', 'r', 'r3', 'v']:
+ modclass = expand_module_class_name(d)
+ url = svnurl_addons + modclass
+ f = urllib.urlopen(url)
+ if not f:
+ grass.warning("Unable to fetch '%s'" % url)
+ continue
+ for line in f.readlines():
+ sline = pattern.search(line)
+ if sline and sline.group(2).split('.', 1)[0] == d:
+ print sline.group(2).rstrip('/')
+
+def cleanup():
+ global tmpdir
+ grass.try_rmdir(tmpdir)
+
+def main():
+ # check dependecies
+ check()
+
+ # list available modules
+ if flags['l']:
+ list_available_modules()
+ return 0
+ else:
+ if not options['extension']:
+ grass.fatal('You need to define an extension name or use -l')
+
+ module = options['extension']
+ classchar = module.split('.', 1)[0]
+ moduleclass = expand_module_class_name(classchar)
+ global svnurl_addons
+ url = svnurl_addons + moduleclass + '/' + module
+ global tmpdir
+ print tmpdir
+ grass.message("Fetching '%s' from GRASS-Addons SVN (be patient)..." % module)
+ os.chdir(tmpdir)
+ if grass.call(['svn', 'checkout',
+ url]) != 0:
+ grass.fatal("GRASS Addons '%s' not found in repository" % module)
+
+ os.chdir(os.path.join(tmpdir, module))
+ grass.message("Compiling '%s'..." % module)
+ gisbase = os.getenv('GISBASE')
+ if grass.call(['make',
+ 'MODULE_TOPDIR=%s' % gisbase]) != 0:
+ cleanup()
+ grass.fatal('Compilation failed, sorry. Please check above error messages')
+
+ grass.message("Installing '%s'..." % module)
+ # can we write ?
+ try:
+ # replace with something better
+ file = os.path.join(gisbase, 'test')
+ f = open(file, "w")
+ f.close()
+ os.remove(file)
+
+ ret = grass.call(['make'
+ 'MODULE_TOPDIR=%s' % gisbase,
+ 'install'])
+ except IOError:
+ ret = grass.call(['sudo', 'make'
+ 'MODULE_TOPDIR=%s' % gisbase,
+ 'install'])
+
+ if ret != 0:
+ cleanup()
+ grass.fatal('Installation failed, sorry. Please check above error messages.')
+
+ grass.message("Installation of '%s' successfully finished." % module)
+ cleanup()
+
+ return 0
+
+if __name__ == "__main__":
+ options, flags = grass.parser()
+ atexit.register(cleanup)
+ sys.exit(main())
More information about the grass-commit
mailing list