5 #include "parse-options.h"
6 #include "string-list.h"
9 static const char * const builtin_column_usage
[] = {
10 N_("git column [<options>]"),
13 static unsigned int colopts
;
15 static int column_config(const char *var
, const char *value
, void *cb
)
17 return git_column_config(var
, value
, cb
, &colopts
);
20 int cmd_column(int argc
, const char **argv
, const char *prefix
)
22 struct string_list list
= STRING_LIST_INIT_DUP
;
23 struct strbuf sb
= STRBUF_INIT
;
24 struct column_options copts
;
25 const char *command
= NULL
, *real_command
= NULL
;
26 struct option options
[] = {
27 OPT_STRING(0, "command", &real_command
, N_("name"), N_("lookup config vars")),
28 OPT_COLUMN(0, "mode", &colopts
, N_("layout to use")),
29 OPT_INTEGER(0, "raw-mode", &colopts
, N_("layout to use")),
30 OPT_INTEGER(0, "width", &copts
.width
, N_("maximum width")),
31 OPT_STRING(0, "indent", &copts
.indent
, N_("string"), N_("padding space on left border")),
32 OPT_STRING(0, "nl", &copts
.nl
, N_("string"), N_("padding space on right border")),
33 OPT_INTEGER(0, "padding", &copts
.padding
, N_("padding space between columns")),
37 /* This one is special and must be the first one */
38 if (argc
> 1 && starts_with(argv
[1], "--command=")) {
39 command
= argv
[1] + 10;
40 git_config(column_config
, (void *)command
);
42 git_config(column_config
, NULL
);
44 memset(&copts
, 0, sizeof(copts
));
46 argc
= parse_options(argc
, argv
, prefix
, options
, builtin_column_usage
, 0);
48 usage_with_options(builtin_column_usage
, options
);
49 if (real_command
|| command
) {
50 if (!real_command
|| !command
|| strcmp(real_command
, command
))
51 die(_("--command must be the first argument"));
53 finalize_colopts(&colopts
, -1);
54 while (!strbuf_getline(&sb
, stdin
))
55 string_list_append(&list
, sb
.buf
);
57 print_columns(&list
, colopts
, &copts
);