From: Phillip Wood Date: Sun, 18 Oct 2026 09:45:36 GMT Subject: Re: [Outreachy][PATCH v3] builtin/var: refactor to use parse-options API Message-ID: In-Reply-To: <20261017131730.642-1-kerylefondji7@gmail.com> Hi Beryle On 17/10/2026 14:17, kerylefondji7@gmail.com wrote: > From: Keryle Fondji > > Migrate option handling in 'git var' to the parse-options API. > This update also aligns variable resolution with current Git configuration > and attribute handling. This all looks very sensible, but "git var" was recently converted to use the parse_options() api in e19f0779c67 (var: add "-z" output mode, 2026-09-26) which has been merge to master. Thanks Phillip > Signed-off-by: Keryle Fondji > --- > builtin/var.c | 32 +++++++++++++++++++++++--------- > 1 file changed, 23 insertions(+), 9 deletions(-) > > diff --git a/builtin/var.c b/builtin/var.c > index cc3a43cde2..b9234a55eb 100644 > --- a/builtin/var.c > +++ b/builtin/var.c > @@ -3,11 +3,9 @@ > * > * Copyright (C) Eric Biederman, 2005 > */ > - > #define USE_THE_REPOSITORY_VARIABLE > > #include "builtin.h" > - > #include "attr.h" > #include "config.h" > #include "editor.h" > @@ -18,8 +16,12 @@ > #include "path.h" > #include "strbuf.h" > #include "run-command.h" > +#include "parse-options.h" > > -static const char var_usage[] = "git var (-l | )"; > +static const char * const var_usage[] = { > + N_("git var (-l | )"), > + NULL > +}; > > static char *committer(int ident_flag) > { > @@ -120,6 +122,7 @@ struct git_var { > char *(*read)(int); > int multivalued; > }; > + > static struct git_var git_vars[] = { > { > .name = "GIT_COMMITTER_IDENT", > @@ -221,21 +224,32 @@ int cmd_var(int argc, > { > const struct git_var *git_var; > char *val; > + int list = 0; > > - show_usage_if_asked(argc, argv, var_usage); > - if (argc != 2) > - usage(var_usage); > + struct option builtin_var_options[] = { > + OPT_BOOL('l', "list", &list, N_("list builtin variables")), > + OPT_END() > + }; > > - if (strcmp(argv[1], "-l") == 0) { > + argc = parse_options(argc, argv, prefix, builtin_var_options, > + var_usage, 0); > + > + if (list) { > + if (argc > 0) > + usage(var_usage[0]); > repo_config(the_repository, show_config, NULL); > list_vars(); > return 0; > } > + > + if (argc != 1) > + usage(var_usage[0]); > + > repo_config(the_repository, git_default_config, NULL); > > - git_var = get_git_var(argv[1]); > + git_var = get_git_var(argv[0]); > if (!git_var) > - usage(var_usage); > + usage(var_usage[0]); > > val = git_var->read(IDENT_STRICT); > if (!val)