Sören Gebbert: > Hi all, > i agree with Martins point of view. Having just a single flag "-g" to > print all available information in "shell" style makes IMHO much more > sense. It reduces the need for many flags which may change over time > and which confuses module developer and API designer. > Having only a single flag allows that additionally information can be > added without the need for a new flag. This is also very useful when > designing the GRASS Python API. > > The implementation of "-g" in Martins way for r.info, v.info. > r3.info, g.region and many more, helps to implement a convenient and > compatible module behavior. > +1
"-g" is generally used in GRASS to print info in shell script style. A bunch of flags each printing one bit of information in shell style is IMHO a bit messy, one single flag should do (most of the times). Markus M > I use this solution in the temporal extension too. > > My 2c > Soeren > > 2011/11/14 Martin Landa <[email protected]>: >> I highly *disagree* with this revert! Merging very specific options >> which just prints one information to generic `-g` is a good idea (from >> my POV). Please don't revert the commits which are just against your >> *personal* taste! What's the opinion of other developers? >> >> Martin >> >> 2011/11/14 <[email protected]>: >>> Author: hamish >>> Date: 2011-11-13 22:55:13 -0800 (Sun, 13 Nov 2011) >>> New Revision: 49205 >>> >>> Modified: >>> grass/trunk/lib/python/raster.py >>> grass/trunk/raster/r.info/main.c >>> Log: >>> undo r49166: units, vdatum, and title can not be eval'd so needed to be >>> split out. on doing that it was apparent that -g needs to act the same as >>> g.region and v.info modules -- basic region info only. -s is debatable to >>> belong to -g or not, but -gs is very easy if needed. >>> >>> Modified: grass/trunk/lib/python/raster.py >>> =================================================================== >>> --- grass/trunk/lib/python/raster.py 2011-11-14 06:49:25 UTC (rev 49204) >>> +++ grass/trunk/lib/python/raster.py 2011-11-14 06:55:13 UTC (rev 49205) >>> @@ -73,7 +73,7 @@ >>> else: >>> return float(s) >>> >>> - s = read_command('r.info', flags = 'g', map = map) >>> + s = read_command('r.info', flags = 'rgstmpud', map = map) >>> kv = parse_key_val(s) >>> for k in ['min', 'max']: >>> kv[k] = float_or_null(kv[k]) >>> >>> Modified: grass/trunk/raster/r.info/main.c >>> =================================================================== >>> --- grass/trunk/raster/r.info/main.c 2011-11-14 06:49:25 UTC (rev 49204) >>> +++ grass/trunk/raster/r.info/main.c 2011-11-14 06:55:13 UTC (rev 49205) >>> @@ -60,8 +60,9 @@ >>> struct Reclass reclass; >>> struct GModule *module; >>> struct Option *opt1; >>> - struct Flag *gflag, *hflag; >>> - >>> + struct Flag *rflag, *sflag, *tflag, *gflag, *hflag, *mflag; >>> + struct Flag *uflag, *dflag, *timestampflag; >>> + >>> /* Initialize GIS Engine */ >>> G_gisinit(argv[0]); >>> >>> @@ -74,14 +75,44 @@ >>> >>> opt1 = G_define_standard_option(G_OPT_R_MAP); >>> >>> + rflag = G_define_flag(); >>> + rflag->key = 'r'; >>> + rflag->description = _("Print range only"); >>> + >>> + sflag = G_define_flag(); >>> + sflag->key = 's'; >>> + sflag->description = >>> + _("Print raster map resolution (NS-res, EW-res) only"); >>> + >>> + tflag = G_define_flag(); >>> + tflag->key = 't'; >>> + tflag->description = _("Print raster map type only"); >>> + >>> gflag = G_define_flag(); >>> gflag->key = 'g'; >>> - gflag->description = _("Print basic info in shell script style"); >>> + gflag->description = _("Print map region only"); >>> >>> hflag = G_define_flag(); >>> hflag->key = 'h'; >>> hflag->description = _("Print raster history instead of info"); >>> >>> + uflag = G_define_flag(); >>> + uflag->key = 'u'; >>> + uflag->description = _("Print raster map data units only"); >>> + >>> + dflag = G_define_flag(); >>> + dflag->key = 'd'; >>> + dflag->description = _("Print raster map vertical datum only"); >>> + >>> + mflag = G_define_flag(); >>> + mflag->key = 'm'; >>> + mflag->description = _("Print map title only"); >>> + >>> + timestampflag = G_define_flag(); >>> + timestampflag->key = 'p'; >>> + timestampflag->description = >>> + _("Print raster map timestamp (day.month.year hour:minute:seconds) >>> only"); >>> + >>> if (G_parser(argc, argv)) >>> exit(EXIT_FAILURE); >>> >>> @@ -115,8 +146,9 @@ >>> >>> out = stdout; >>> >>> - /* no flags */ >>> - if (!gflag->answer && !hflag->answer) { >>> + if (!rflag->answer && !sflag->answer && !tflag->answer && >>> + !gflag->answer && !hflag->answer && !timestampflag->answer && >>> + !mflag->answer && !uflag->answer && !dflag->answer) { >>> divider('+'); >>> >>> compose_line(out, "Layer: %-29.29s Date: %s", name, >>> @@ -289,10 +321,9 @@ >>> >>> fprintf(out, "\n"); >>> } >>> - else { /* g,h flag */ >>> + else { /* r,s,t,g,h, or m flag */ >>> >>> - if (gflag->answer) { >>> - /* old rflag */ >>> + if (rflag->answer) { >>> if (data_type == CELL_TYPE) { >>> if (2 == Rast_read_range(name, "", &crange)) { >>> fprintf(out, "min=NULL\n"); >>> @@ -311,7 +342,10 @@ >>> fprintf(out, "min=%.15g\n", zmin); >>> fprintf(out, "max=%.15g\n", zmax); >>> } >>> - >>> + >>> + } >>> + >>> + if (gflag->answer) { >>> G_format_northing(cellhd.north, tmp1, -1); >>> G_format_northing(cellhd.south, tmp2, -1); >>> fprintf(out, "north=%s\n", tmp1); >>> @@ -321,46 +355,47 @@ >>> G_format_easting(cellhd.west, tmp2, -1); >>> fprintf(out, "east=%s\n", tmp1); >>> fprintf(out, "west=%s\n", tmp2); >>> - >>> - /* old sflag */ >>> + } >>> + >>> + if (sflag->answer) { >>> G_format_resolution(cellhd.ns_res, tmp3, cellhd.proj); >>> fprintf(out, "nsres=%s\n", tmp3); >>> >>> G_format_resolution(cellhd.ew_res, tmp3, cellhd.proj); >>> fprintf(out, "ewres=%s\n", tmp3); >>> - >>> - /* new rows and columns parameters */ >>> - fprintf(out, "rows=%d\n", cellhd.rows); >>> - fprintf(out, "cols=%d\n", cellhd.cols); >>> - >>> - /* old tflag */ >>> + } >>> + >>> + if (tflag->answer) { >>> fprintf(out, "datatype=%s\n", >>> (data_type == CELL_TYPE ? "CELL" : >>> (data_type == DCELL_TYPE ? "DCELL" : >>> (data_type == FCELL_TYPE ? "FCELL" : "??")))); >>> - >>> - /* old mflag */ >>> + } >>> + >>> + if (mflag->answer) { >>> fprintf(out, "title=%s (%s)\n", cats_ok ? cats.title : >>> "??", hist_ok ? Rast_get_history(&hist, HIST_TITLE) : >>> "??"); >>> - >>> - /* old timestampflag */ >>> + } >>> + >>> + if (timestampflag->answer) { >>> if (time_ok && (first_time_ok || second_time_ok)) { >>> >>> G_format_timestamp(&ts, timebuff); >>> >>> /*Create the r.info timestamp string */ >>> fprintf(out, "timestamp=\"%s\"\n", timebuff); >>> + >>> } >>> else { >>> fprintf(out, "timestamp=\"none\"\n"); >>> - } >>> - >>> - /* old uflag */ >>> - fprintf(out, "units=%s\n", units ? units : "(none)"); >>> - /* old dflag */ >>> - fprintf(out, "vertical_datum=%s\n", vdatum ? vdatum : "(none)"); >>> + } >>> } >>> >>> + if (uflag->answer) >>> + fprintf(out, "units=%s\n", units ? units : "(none)"); >>> + if (dflag->answer) >>> + fprintf(out, "vertical_datum=%s\n", vdatum ? vdatum : "(none)"); >>> + >>> if (hflag->answer) { >>> if (hist_ok) { >>> fprintf(out, "Data Source:\n"); >>> @@ -375,7 +410,8 @@ >>> } >>> } >>> } >>> - } >>> + } /* else rflag or sflag or tflag or gflag or >>> hflag or mflag */ >>> + >>> return EXIT_SUCCESS; >>> } >>> >>> >>> _______________________________________________ >>> grass-commit mailing list >>> [email protected] >>> http://lists.osgeo.org/mailman/listinfo/grass-commit >>> >> >> >> >> -- >> Martin Landa <landa.martin gmail.com> * http://geo.fsv.cvut.cz/~landa >> _______________________________________________ >> grass-dev mailing list >> [email protected] >> http://lists.osgeo.org/mailman/listinfo/grass-dev >> > _______________________________________________ > grass-dev mailing list > [email protected] > http://lists.osgeo.org/mailman/listinfo/grass-dev > _______________________________________________ grass-dev mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/grass-dev
