New --script flag was: Re: [GRASS-dev] how to display a vector map for d.path in gis.m?

Michael Barton michael.barton at asu.edu
Fri Feb 2 01:13:52 EST 2007


Thanks for the explanation.

Michael


On 2/1/07 11:08 PM, "Glynn Clements" <glynn at gclements.plus.com> wrote:

> 
> Michael Barton wrote:
> 
>>>>> Hmm; it might be useful to have some means of automatically generating
>>>>> the corresponding g.parser description for a given command. There are
>>>>> probably quite a few scripts whose options are (almost) identical to
>>>>> an existing command. I'll look into it.
>>>>>     
>>>> 
>>>> I've extended G_parser() with a --script flag, which writes out a
>>>> script with g.parser syntax to mimic the behaviour of the module. This
>>>> shoud make it easier to write scripts which mimic an existing command.
>>>>   
>>> Really cool! Thanks, Glynn.
>> 
>> Could you explain how this works a bit more? It sounds cool, but I don't
>> quite understand how it might be used.
> 
> Taking d.path as an example, you would first run e.g.:
> 
> d.path --script > d.path.sh
> 
> This will generate a script which contains the g.parser boilerplate
> which would be required for a script with the same set of options as
> d.path.
> 
> To this script, you would append something like the following:
> 
> cmd=d.path
> if [ "$GIS_FLAG_G" != 0  ] ; then cmd="$cmd -g"    ; fi
> if [ "$GIS_OPT_MAP" != "" ] ; then cmd="$cmd map=$GIS_OPT_MAP"  ; fi
> if [ "$GIS_OPT_TYPE" != "" ] ; then cmd="$cmd type=$GIS_OPT_TYPE"   ; fi
> if [ "$GIS_OPT_ALAYER" != "" ] ; then cmd="$cmd alayer=$GIS_OPT_ALAYER" ; fi
> if [ "$GIS_OPT_NLAYER" != "" ] ; then cmd="$cmd nlayer=$GIS_OPT_NLAYER" ; fi
> if [ "$GIS_OPT_AFCOL" != "" ] ; then cmd="$cmd afcol=$GIS_OPT_AFCOL"   ; fi
> if [ "$GIS_OPT_ABCOL" != "" ] ; then cmd="$cmd abcol=$GIS_OPT_ABCOL"   ; fi
> if [ "$GIS_OPT_NCOL" != "" ] ; then cmd="$cmd ncol=$GIS_OPT_NCOL"   ; fi
> if [ "$GIS_OPT_COLOR" != "" ] ; then cmd="$cmd color=$GIS_OPT_COLOR"   ; fi
> if [ "$GIS_OPT_HCOLOR" != "" ] ; then cmd="$cmd hcolor=$GIS_OPT_HCOLOR" ; fi
> if [ "$GIS_OPT_BGCOLOR" != "" ] ; then cmd="$cmd bgcolor=$GIS_OPT_BGCOLOR" ;
> fi
> d.vect "$GIS_OPT_MAP"
> exec $cmd
> 
> This script should run "d.vect <map>", then run d.path with whatever
> options were passed to the d.path.sh script.
> 
> Essentially, if you want to write a script which behaves like some
> existing command, the --script option can be used to avoid having to
> type out the g.parser boilerplate by hand.

__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution & Social Change
Center for Social Dynamics & Complexity
Arizona State University

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton





More information about the grass-dev mailing list