write-tree: migrate to parse-options
A check for extra options has been dropped, it could never be triggered in the original code as the usage message would be printed instead. Signed-off-by: Stephen Boyd <bebarino@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Stephen Boyd committed
Jul 7, 2009 at 22:15 UTC
404d42e5efe05ef8dd40713e00001746a060b66b
1 file changed
+19
-21
builtin-write-tree.c
+19
-21
@@ -7,9 +7,12 @@
7
#include "cache.h"
8
#include "tree.h"
9
#include "cache-tree.h"
10
+#include "parse-options.h"
11
11
-static const char write_tree_usage[] =
12
-"git write-tree [--missing-ok] [--prefix=<prefix>/]";
12
+static const char * const write_tree_usage[] = {
13
+ "git write-tree [--missing-ok] [--prefix=<prefix>/]",
14
+ NULL
15
+};
16
17
int cmd_write_tree(int argc, const char **argv, const char *unused_prefix)
18
{
@@ -17,27 +20,22 @@ int cmd_write_tree(int argc, const char **argv, const char *unused_prefix)
20
const char *prefix = NULL;
21
unsigned char sha1[20];
22
const char *me = "git-write-tree";
23
+ struct option write_tree_options[] = {
24
+ OPT_BIT(0, "missing-ok", &flags, "allow missing objects",
25
+ WRITE_TREE_MISSING_OK),
26
+ { OPTION_STRING, 0, "prefix", &prefix, "<prefix>/",
27
+ "write tree object for a subdirectory <prefix>" ,
28
+ PARSE_OPT_LITERAL_ARGHELP },
29
+ { OPTION_BIT, 0, "ignore-cache-tree", &flags, NULL,
30
+ "only useful for debugging",
31
+ PARSE_OPT_HIDDEN | PARSE_OPT_NOARG, NULL,
32
+ WRITE_TREE_IGNORE_CACHE_TREE },
33
+ OPT_END()
34
+ };
35
36
git_config(git_default_config, NULL);
22
- while (1 < argc) {
23
- const char *arg = argv[1];
24
- if (!strcmp(arg, "--missing-ok"))
25
- flags |= WRITE_TREE_MISSING_OK;
26
- else if (!prefixcmp(arg, "--prefix="))
27
- prefix = arg + 9;
28
- else if (!prefixcmp(arg, "--ignore-cache-tree"))
29
- /*
30
- * This is only useful for debugging, so I
31
- * do not bother documenting it.
32
- */
33
- flags |= WRITE_TREE_IGNORE_CACHE_TREE;
34
- else
35
- usage(write_tree_usage);
36
- argc--; argv++;
37
- }
38
-
39
- if (argc > 2)
40
- die("too many options");
37
+ argc = parse_options(argc, argv, unused_prefix, write_tree_options,
38
+ write_tree_usage, 0);
39
40
ret = write_cache_as_tree(sha1, flags, prefix);
41
switch (ret) {