New --script flag was: Re: [GRASS-dev] how to display a
vector map for d.path in gis.m?
michael.barton at asu.edu
Fri Feb 2 07:13:52 CET 2007
Thanks for the explanation.
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
> To this script, you would append something like the following:
> 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" ;
> 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
More information about the grass-dev