git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Use parseopts in builtin-push
@ 2007-11-05  3:35 Daniel Barkalow
  2007-11-05 21:50 ` Junio C Hamano
  0 siblings, 1 reply; 2+ messages in thread
From: Daniel Barkalow @ 2007-11-05  3:35 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
---
 builtin-push.c |   88 +++++++++++++++++++++++---------------------------------
 1 files changed, 36 insertions(+), 52 deletions(-)

diff --git a/builtin-push.c b/builtin-push.c
index 4b39ef3..2c56195 100644
--- a/builtin-push.c
+++ b/builtin-push.c
@@ -7,8 +7,12 @@
 #include "builtin.h"
 #include "remote.h"
 #include "transport.h"
+#include "parse-options.h"
 
-static const char push_usage[] = "git-push [--all] [--dry-run] [--tags] [--receive-pack=<git-receive-pack>] [--repo=all] [-f | --force] [-v] [<repository> <refspec>...]";
+static const char * const push_usage[] = {
+	"git-push [--all] [--dry-run] [--tags] [--receive-pack=<git-receive-pack>] [--repo=all] [-f | --force] [-v] [<repository> <refspec>...]",
+	NULL,
+};
 
 static int thin, verbose;
 static const char *receivepack;
@@ -85,63 +89,43 @@ static int do_push(const char *repo, int flags)
 
 int cmd_push(int argc, const char **argv, const char *prefix)
 {
-	int i;
 	int flags = 0;
+	int all = 0;
+	int dry_run = 0;
+	int force = 0;
+	int tags = 0;
 	const char *repo = NULL;	/* default repository */
 
-	for (i = 1; i < argc; i++) {
-		const char *arg = argv[i];
+	struct option options[] = {
+		OPT__VERBOSE(&verbose),
+		OPT_STRING( 0 , "repo", &repo, "repository", "repository"),
+		OPT_BOOLEAN( 0 , "all", &all, "push all refs"),
+		OPT_BOOLEAN( 0 , "tags", &tags, "push tags"),
+		OPT_BOOLEAN( 0 , "dry-run", &dry_run, "dry run"),
+		OPT_BOOLEAN('f', "force", &force, "force updates"),
+		OPT_BOOLEAN( 0 , "thin", &thin, "use thin pack"),
+		OPT_STRING( 0 , "receive-pack", &receivepack, "receive-pack", "receive pack program"),
+		OPT_STRING( 0 , "exec", &receivepack, "receive-pack", "receive pack program"),
+		OPT_END()
+	};
 
-		if (arg[0] != '-') {
-			repo = arg;
-			i++;
-			break;
-		}
-		if (!strcmp(arg, "-v")) {
-			verbose=1;
-			continue;
-		}
-		if (!prefixcmp(arg, "--repo=")) {
-			repo = arg+7;
-			continue;
-		}
-		if (!strcmp(arg, "--all")) {
-			flags |= TRANSPORT_PUSH_ALL;
-			continue;
-		}
-		if (!strcmp(arg, "--dry-run")) {
-			flags |= TRANSPORT_PUSH_DRY_RUN;
-			continue;
-		}
-		if (!strcmp(arg, "--tags")) {
-			add_refspec("refs/tags/*");
-			continue;
-		}
-		if (!strcmp(arg, "--force") || !strcmp(arg, "-f")) {
-			flags |= TRANSPORT_PUSH_FORCE;
-			continue;
-		}
-		if (!strcmp(arg, "--thin")) {
-			thin = 1;
-			continue;
-		}
-		if (!strcmp(arg, "--no-thin")) {
-			thin = 0;
-			continue;
-		}
-		if (!prefixcmp(arg, "--receive-pack=")) {
-			receivepack = arg + 15;
-			continue;
-		}
-		if (!prefixcmp(arg, "--exec=")) {
-			receivepack = arg + 7;
-			continue;
-		}
-		usage(push_usage);
+	argc = parse_options(argc, argv, options, push_usage, 0);
+
+	if (force)
+		flags |= TRANSPORT_PUSH_FORCE;
+	if (dry_run)
+		flags |= TRANSPORT_PUSH_DRY_RUN;
+	if (tags)
+		add_refspec("refs/tags/*");
+	if (all)
+		flags |= TRANSPORT_PUSH_ALL;
+
+	if (argc > 0) {
+		repo = argv[0];
+		set_refspecs(argv + 1, argc - 1);
 	}
-	set_refspecs(argv + i, argc - i);
 	if ((flags & TRANSPORT_PUSH_ALL) && refspec)
-		usage(push_usage);
+		usage_with_options(push_usage, options);
 
 	return do_push(repo, flags);
 }
-- 
1.5.3.5.1528.gb6568-dirty

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

* Re: [PATCH] Use parseopts in builtin-push
  2007-11-05  3:35 [PATCH] Use parseopts in builtin-push Daniel Barkalow
@ 2007-11-05 21:50 ` Junio C Hamano
  0 siblings, 0 replies; 2+ messages in thread
From: Junio C Hamano @ 2007-11-05 21:50 UTC (permalink / raw)
  To: Daniel Barkalow; +Cc: git

Thanks; will take this one.

The finalized version for builtin-fetch is appreciated.

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

end of thread, other threads:[~2007-11-05 21:50 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-05  3:35 [PATCH] Use parseopts in builtin-push Daniel Barkalow
2007-11-05 21:50 ` Junio C Hamano

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).