git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Improve documentation for git-sh-setup.
@ 2008-02-21 23:01 Yann Dirson
  2008-02-22  9:35 ` Pierre Habouzit
  0 siblings, 1 reply; 8+ messages in thread
From: Yann Dirson @ 2008-02-21 23:01 UTC (permalink / raw)
  To: git

Signed-off-by: Yann Dirson <ydirson@altern.org>
Cc: Pierre Habouzit <madcoder@debian.org>
---

 Documentation/git-sh-setup.txt |   23 ++++++++++++++++++-----
 1 files changed, 18 insertions(+), 5 deletions(-)


diff --git a/Documentation/git-sh-setup.txt b/Documentation/git-sh-setup.txt
index 16b8b75..75e6846 100644
--- a/Documentation/git-sh-setup.txt
+++ b/Documentation/git-sh-setup.txt
@@ -19,12 +19,25 @@ Porcelain-ish scripts and/or are writing new ones.
 The `git-sh-setup` scriptlet is designed to be sourced (using
 `.`) by other shell scripts to set up some variables pointing at
 the normal git directories and a few helper shell functions.
+It also provides help messages, and some amount of command-line
+parsing.
 
-Before sourcing it, your script should set up a few variables;
-`USAGE` (and `LONG_USAGE`, if any) is used to define message
-given by `usage()` shell function.  `SUBDIRECTORY_OK` can be set
-if the script can run from a subdirectory of the working tree
-(some commands do not).
+Before sourcing it, your script should set up a few variables.
+
+`OPTIONS_SPEC` allows to declare the options so that the command-line
+can be pre-processed, and the usage message autogenerated.  It must
+follow the rules which apply to arguments to `git rev-parse
+--parseopt`.  If you need `git-rev-parse --parseopt` to keep the `--`
+the user may have passed to your command, you should also set
+`OPTIONS_KEEPDASHDASH` to a non empty value.
+
+If the constraints imposed by the use of `git rev-parse` do not fit
+for a particular tool, `USAGE` (and `LONG_USAGE`, if any) can be used
+to define message given by `usage()` shell function; no command-line
+pre-processing occurs, the script has entire control over it.
+
+`SUBDIRECTORY_OK` can be set if the script can run from a subdirectory
+of the working tree (some commands do not).
 
 The scriptlet sets `GIT_DIR` and `GIT_OBJECT_DIRECTORY` shell
 variables, but does *not* export them to the environment.

^ permalink raw reply related	[flat|nested] 8+ messages in thread
* [PATCH] parse-opt: bring PARSE_OPT_HIDDEN to git-rev-parse --parseopt
@ 2008-03-02  8:21 Pierre Habouzit
  0 siblings, 0 replies; 8+ messages in thread
From: Pierre Habouzit @ 2008-03-02  8:21 UTC (permalink / raw)
  To: Git ML, Junio C Hamano

[-- Attachment #1: Type: text/plain, Size: 2454 bytes --]

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
---
 Documentation/git-rev-parse.txt |   15 ++++++++++-----
 builtin-rev-parse.c             |   25 ++++++++++++++-----------
 2 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt
index f02f6bb..e961c20 100644
--- a/Documentation/git-rev-parse.txt
+++ b/Documentation/git-rev-parse.txt
@@ -325,7 +325,7 @@ The lines after the separator describe the options.
 Each line of options has this format:
 
 ------------
-<opt_spec><arg_spec>? SP+ help LF
+<opt_spec><flags>? SP+ help LF
 ------------
 
 `<opt_spec>`::
@@ -334,10 +334,15 @@ Each line of options has this format:
 	is necessary. `h,help`, `dry-run` and `f` are all three correct
 	`<opt_spec>`.
 
-`<arg_spec>`::
-	an `<arg_spec>` tells the option parser if the option has an argument
-	(`=`), an optional one (`?` though its use is discouraged) or none
-	(no `<arg_spec>` in that case).
+`<flags>`::
+	`<flags>` are any suite of `*`, `=` or `?`.
+	* Use `=` if the option take an argument.
+
+	* Use `?` to mean that the option is optional (though its use is discouraged).
+
+	* Use `*` to mean that this option should not be listed in the usage
+	  generated for the `-h` argument. It's shown for `--help-all` as
+	  documented in linkgit:gitcli[5].
 
 The remainder of the line, after stripping the spaces, is used
 as the help associated to the option.
diff --git a/builtin-rev-parse.c b/builtin-rev-parse.c
index 90dbb9d..d1ea73a 100644
--- a/builtin-rev-parse.c
+++ b/builtin-rev-parse.c
@@ -322,18 +322,21 @@ static int cmd_parseopt(int argc, const char **argv, const char *prefix)
 		o->type = OPTION_CALLBACK;
 		o->help = xstrdup(skipspaces(s));
 		o->value = &parsed;
+		o->flags = PARSE_OPT_NOARG;
 		o->callback = &parseopt_dump;
-		switch (s[-1]) {
-		case '=':
-			s--;
-			break;
-		case '?':
-			o->flags = PARSE_OPT_OPTARG;
-			s--;
-			break;
-		default:
-			o->flags = PARSE_OPT_NOARG;
-			break;
+		while (s > sb.buf && strchr("*=?", s[-1])) {
+			switch (*--s) {
+			case '=':
+				o->flags &= ~PARSE_OPT_NOARG;
+				break;
+			case '?':
+				o->flags &= ~PARSE_OPT_NOARG;
+				o->flags |= PARSE_OPT_OPTARG;
+				break;
+			case '*':
+				o->flags |= PARSE_OPT_HIDDEN;
+				break;
+			}
 		}
 
 		if (s - sb.buf == 1) /* short option only */
-- 
1.5.4.3.343.g6846

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2008-03-02  8:22 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-21 23:01 [PATCH] Improve documentation for git-sh-setup Yann Dirson
2008-02-22  9:35 ` Pierre Habouzit
2008-02-22 17:17   ` Junio C Hamano
2008-02-22 18:19     ` Pierre Habouzit
2008-02-23 14:09       ` [PATCH] parse-opt: bring PARSE_OPT_HIDDEN to git-rev-parse --parseopt Pierre Habouzit
2008-02-24  8:42         ` Junio C Hamano
2008-02-24  8:49           ` Pierre Habouzit
  -- strict thread matches above, loose matches on Subject: below --
2008-03-02  8:21 Pierre Habouzit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).