summaryrefslogtreecommitdiff
path: root/builtin/env--helper.c
diff options
context:
space:
mode:
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>2023-01-12 16:03:21 (GMT)
committerJunio C Hamano <gitster@pobox.com>2023-01-15 02:07:11 (GMT)
commit4a1baacd4680e27226892706c7a3fd1e22504572 (patch)
tree431628d69eecafb7465102df826c91714749cb54 /builtin/env--helper.c
parentc48035d29b4e524aed3a32f0403676f0d9128863 (diff)
downloadgit-4a1baacd4680e27226892706c7a3fd1e22504572.zip
git-4a1baacd4680e27226892706c7a3fd1e22504572.tar.gz
git-4a1baacd4680e27226892706c7a3fd1e22504572.tar.bz2
env-helper: move this built-in to "test-tool env-helper"
Since [1] there has been no reason for keeping "git env--helper" a built-in. The reason it was a built-in to begin with was to support the GIT_TEST_GETTEXT_POISON mode removed in that commit. I.e. unlike the rest of "test-tool" it would potentially be called by the installed git via "git-sh-i18n.sh". As none of that applies since [1] we should stop carrying this technical debt, and move it to t/helper/*. As this mostly move-only change shows this has the nice bonus that we'll stop wasting time translating the internal-only strings it emits. Even though this was a built-in, it was intentionally never documented, see its introduction in [2]. It never saw use outside of the test suite, except for the "GIT_TEST_GETTEXT_POISON" use-case noted above. 1. d162b25f956 (tests: remove support for GIT_TEST_GETTEXT_POISON, 2021-01-20) 2. b4f207f3394 (env--helper: new undocumented builtin wrapping git_env_*(), 2019-06-21) Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Acked-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/env--helper.c')
-rw-r--r--builtin/env--helper.c100
1 files changed, 0 insertions, 100 deletions
diff --git a/builtin/env--helper.c b/builtin/env--helper.c
deleted file mode 100644
index ea04c16..0000000
--- a/builtin/env--helper.c
+++ /dev/null
@@ -1,100 +0,0 @@
-#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
-};
-
-enum cmdmode {
- ENV_HELPER_TYPE_BOOL = 1,
- ENV_HELPER_TYPE_ULONG
-};
-
-static int option_parse_type(const struct option *opt, const char *arg,
- int unset)
-{
- enum cmdmode *cmdmode = opt->value;
-
- BUG_ON_OPT_NEG(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;
- enum cmdmode cmdmode = 0;
- 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_OPT);
- 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;
-}