-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Many GIT_TEST_* environment variables control various aspects of how our tests are run, but a few followed "non-empty is true, empty or unset is false" while others followed the usual "there are a few ways to spell true, like yes, on, etc., and also ways to spell false, like no, off, etc." convention. * ab/test-env: env--helper: mark a file-local symbol as static tests: make GIT_TEST_FAIL_PREREQS a boolean tests: replace test_tristate with "git env--helper" tests README: re-flow a previously changed paragraph tests: make GIT_TEST_GETTEXT_POISON a boolean t6040 test: stop using global "script" variable config.c: refactor die_bad_number() to not call gettext() early env--helper: new undocumented builtin wrapping git_env_*() config tests: simplify include cycle test
- Loading branch information
Showing
24 changed files
with
298 additions
and
127 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
#include "builtin.h" | ||
#include "config.h" | ||
#include "parse-options.h" | ||
|
||
static char const * const env__helper_usage[] = { | ||
N_("git env--helper --type=[bool|ulong] <options> <env-var>"), | ||
NULL | ||
}; | ||
|
||
static enum { | ||
ENV_HELPER_TYPE_BOOL = 1, | ||
ENV_HELPER_TYPE_ULONG | ||
} cmdmode = 0; | ||
|
||
static int option_parse_type(const struct option *opt, const char *arg, | ||
int unset) | ||
{ | ||
if (!strcmp(arg, "bool")) | ||
cmdmode = ENV_HELPER_TYPE_BOOL; | ||
else if (!strcmp(arg, "ulong")) | ||
cmdmode = ENV_HELPER_TYPE_ULONG; | ||
else | ||
die(_("unrecognized --type argument, %s"), arg); | ||
|
||
return 0; | ||
} | ||
|
||
int cmd_env__helper(int argc, const char **argv, const char *prefix) | ||
{ | ||
int exit_code = 0; | ||
const char *env_variable = NULL; | ||
const char *env_default = NULL; | ||
int ret; | ||
int ret_int, default_int; | ||
unsigned long ret_ulong, default_ulong; | ||
struct option opts[] = { | ||
OPT_CALLBACK_F(0, "type", &cmdmode, N_("type"), | ||
N_("value is given this type"), PARSE_OPT_NONEG, | ||
option_parse_type), | ||
OPT_STRING(0, "default", &env_default, N_("value"), | ||
N_("default for git_env_*(...) to fall back on")), | ||
OPT_BOOL(0, "exit-code", &exit_code, | ||
N_("be quiet only use git_env_*() value as exit code")), | ||
OPT_END(), | ||
}; | ||
|
||
argc = parse_options(argc, argv, prefix, opts, env__helper_usage, | ||
PARSE_OPT_KEEP_UNKNOWN); | ||
if (env_default && !*env_default) | ||
usage_with_options(env__helper_usage, opts); | ||
if (!cmdmode) | ||
usage_with_options(env__helper_usage, opts); | ||
if (argc != 1) | ||
usage_with_options(env__helper_usage, opts); | ||
env_variable = argv[0]; | ||
|
||
switch (cmdmode) { | ||
case ENV_HELPER_TYPE_BOOL: | ||
if (env_default) { | ||
default_int = git_parse_maybe_bool(env_default); | ||
if (default_int == -1) { | ||
error(_("option `--default' expects a boolean value with `--type=bool`, not `%s`"), | ||
env_default); | ||
usage_with_options(env__helper_usage, opts); | ||
} | ||
} else { | ||
default_int = 0; | ||
} | ||
ret_int = git_env_bool(env_variable, default_int); | ||
if (!exit_code) | ||
puts(ret_int ? "true" : "false"); | ||
ret = ret_int; | ||
break; | ||
case ENV_HELPER_TYPE_ULONG: | ||
if (env_default) { | ||
if (!git_parse_ulong(env_default, &default_ulong)) { | ||
error(_("option `--default' expects an unsigned long value with `--type=ulong`, not `%s`"), | ||
env_default); | ||
usage_with_options(env__helper_usage, opts); | ||
} | ||
} else { | ||
default_ulong = 0; | ||
} | ||
ret_ulong = git_env_ulong(env_variable, default_ulong); | ||
if (!exit_code) | ||
printf("%lu\n", ret_ulong); | ||
ret = ret_ulong; | ||
break; | ||
default: | ||
BUG("unknown <type> value"); | ||
break; | ||
} | ||
|
||
return !ret; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.