git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Paul Tan <pyokagan@gmail.com>
Cc: git@vger.kernel.org, Stefan Beller <sbeller@google.com>,
	Johannes Schindelin <johannes.schindelin@gmx.de>,
	Stephen Robin <stephen.robin@gmail.com>
Subject: Re: [PATCH v2 01/19] parse-options-cb: implement parse_opt_pass_strbuf()
Date: Tue, 09 Jun 2015 16:11:39 -0700	[thread overview]
Message-ID: <xmqqvbewwk7o.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <1433314143-4478-2-git-send-email-pyokagan@gmail.com> (Paul Tan's message of "Wed, 3 Jun 2015 14:48:45 +0800")

Paul Tan <pyokagan@gmail.com> writes:

> diff --git a/parse-options-cb.c b/parse-options-cb.c
> index be8c413..5b1dbcf 100644
> --- a/parse-options-cb.c
> +++ b/parse-options-cb.c
> @@ -134,3 +134,32 @@ int parse_opt_noop_cb(const struct option *opt, const char *arg, int unset)
>  {
>  	return 0;
>  }
> +
> +/**
> + * For an option opt, recreates the command-line option in opt->value which
> + * must be an strbuf. This is useful when we need to pass the command-line
> + * option to another command.
> + */

This is to be used to create a single argument, not an entire
command line to be executed via run_command() or a shell, right?
It wasn't very clear from the above command.

If the same option is given more than once, the earlier ones are
discarded and the last one wins.  That may be OK for your expected
callers, and I do not think this needs to have an option to instead
accumulate them, but it needs to be made clear in the comment and
the API documentation for future developers who want to use the
parse-options API.

> +int parse_opt_pass_strbuf(const struct option *opt, const char *arg, int unset)
> +{
> +	struct strbuf *sb = opt->value;
> +
> +	strbuf_reset(sb);
> +
> +	if (opt->long_name) {
> +		strbuf_addstr(sb, unset ? "--no-" : "--");
> +		strbuf_addstr(sb, opt->long_name);
> +		if (arg) {
> +			strbuf_addch(sb, '=');
> +			strbuf_addstr(sb, arg);
> +		}
> +	} else if (opt->short_name && !unset) {
> +		strbuf_addch(sb, '-');
> +		strbuf_addch(sb, opt->short_name);
> +		if (arg)
> +			strbuf_addstr(sb, arg);
> +	} else
> +		return -1;
> +
> +	return 0;
> +}
> diff --git a/parse-options.h b/parse-options.h
> index c71e9da..1d21398 100644
> --- a/parse-options.h
> +++ b/parse-options.h
> @@ -224,6 +224,7 @@ extern int parse_opt_with_commit(const struct option *, const char *, int);
>  extern int parse_opt_tertiary(const struct option *, const char *, int);
>  extern int parse_opt_string_list(const struct option *, const char *, int);
>  extern int parse_opt_noop_cb(const struct option *, const char *, int);
> +extern int parse_opt_pass_strbuf(const struct option *, const char *, int);
>  
>  #define OPT__VERBOSE(var, h)  OPT_COUNTUP('v', "verbose", (var), (h))
>  #define OPT__QUIET(var, h)    OPT_COUNTUP('q', "quiet",   (var), (h))

  reply	other threads:[~2015-06-09 23:11 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-03  6:48 [PATCH v2 00/19] Make git-pull a builtin Paul Tan
2015-06-03  6:48 ` [PATCH v2 01/19] parse-options-cb: implement parse_opt_pass_strbuf() Paul Tan
2015-06-09 23:11   ` Junio C Hamano [this message]
2015-06-03  6:48 ` [PATCH v2 02/19] parse-options-cb: implement parse_opt_pass_argv_array() Paul Tan
2015-06-03 16:56   ` Stefan Beller
2015-06-09 23:16   ` Junio C Hamano
2015-06-10  7:11     ` Paul Tan
2015-06-10  8:03       ` Junio C Hamano
2015-06-03  6:48 ` [PATCH v2 03/19] argv-array: implement argv_array_pushv() Paul Tan
2015-06-03  6:48 ` [PATCH v2 04/19] pull: implement skeletal builtin pull Paul Tan
2015-06-10  0:23   ` Junio C Hamano
2015-06-03  6:48 ` [PATCH v2 05/19] pull: implement fetch + merge Paul Tan
2015-06-09 23:27   ` Junio C Hamano
2015-06-03  6:48 ` [PATCH v2 06/19] pull: pass verbosity, --progress flags to fetch and merge Paul Tan
2015-06-09 23:36   ` Junio C Hamano
2015-06-03  6:48 ` [PATCH v2 07/19] pull: pass git-merge's options to git-merge Paul Tan
2015-06-03  6:48 ` [PATCH v2 08/19] pull: pass git-fetch's options to git-fetch Paul Tan
2015-06-03 17:16   ` Stefan Beller
2015-06-03  6:48 ` [PATCH v2 09/19] pull: error on no merge candidates Paul Tan
2015-06-09 23:56   ` Junio C Hamano
2015-06-13  5:52     ` Paul Tan
2015-06-03  6:48 ` [PATCH v2 10/19] pull: support pull.ff config Paul Tan
2015-06-09 23:59   ` Junio C Hamano
2015-06-03  6:48 ` [PATCH v2 11/19] pull: check if in unresolved merge state Paul Tan
2015-06-10  1:29   ` Junio C Hamano
2015-06-10 14:38     ` Junio C Hamano
2015-06-10 15:12       ` Paul Tan
2015-06-10 17:14         ` Junio C Hamano
2015-06-14  7:44           ` Paul Tan
2015-06-03  6:48 ` [PATCH v2 12/19] pull: fast-forward working tree if head is updated Paul Tan
2015-06-03  6:48 ` [PATCH v2 13/19] pull: implement pulling into an unborn branch Paul Tan
2015-06-10  1:31   ` Junio C Hamano
2015-06-03  6:48 ` [PATCH v2 14/19] pull: set reflog message Paul Tan
2015-06-03  6:48 ` [PATCH v2 15/19] pull: teach git pull about --rebase Paul Tan
2015-06-10  1:56   ` Junio C Hamano
2015-06-10  7:55     ` Paul Tan
2015-06-10 14:44       ` Junio C Hamano
2015-06-10 15:35         ` Paul Tan
2015-06-10 16:13           ` Junio C Hamano
2015-06-10 23:02   ` Junio C Hamano
2015-06-03  6:49 ` [PATCH v2 16/19] pull: configure --rebase via branch.<name>.rebase or pull.rebase Paul Tan
2015-06-03  6:49 ` [PATCH v2 17/19] pull --rebase: exit early when the working directory is dirty Paul Tan
2015-06-03 10:27   ` Kevin Daudt
2015-06-10  5:53     ` Kevin Daudt
2015-06-03  6:49 ` [PATCH v2 18/19] pull --rebase: error on no merge candidate cases Paul Tan
2015-06-03 17:38   ` Stefan Beller
2015-06-03  6:49 ` [PATCH v2 19/19] pull: remove redirection to git-pull.sh Paul Tan
2015-06-03 17:49   ` Stefan Beller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqvbewwk7o.fsf@gitster.dls.corp.google.com \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=johannes.schindelin@gmx.de \
    --cc=pyokagan@gmail.com \
    --cc=sbeller@google.com \
    --cc=stephen.robin@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).