From c8bae7493d2f2910b57f13ded012e86bdcfb0532 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 16:47:53 +0200 Subject: Adding upstream version 1:2.39.2. Signed-off-by: Daniel Baumann --- builtin/verify-tag.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 builtin/verify-tag.c (limited to 'builtin/verify-tag.c') diff --git a/builtin/verify-tag.c b/builtin/verify-tag.c new file mode 100644 index 0000000..2175669 --- /dev/null +++ b/builtin/verify-tag.c @@ -0,0 +1,77 @@ +/* + * Builtin "git verify-tag" + * + * Copyright (c) 2007 Carlos Rica + * + * Based on git-verify-tag.sh + */ +#include "cache.h" +#include "config.h" +#include "builtin.h" +#include "tag.h" +#include "run-command.h" +#include "parse-options.h" +#include "gpg-interface.h" +#include "ref-filter.h" + +static const char * const verify_tag_usage[] = { + N_("git verify-tag [-v | --verbose] [--format=] [--raw] ..."), + NULL +}; + +static int git_verify_tag_config(const char *var, const char *value, void *cb) +{ + int status = git_gpg_config(var, value, cb); + if (status) + return status; + return git_default_config(var, value, cb); +} + +int cmd_verify_tag(int argc, const char **argv, const char *prefix) +{ + int i = 1, verbose = 0, had_error = 0; + unsigned flags = 0; + struct ref_format format = REF_FORMAT_INIT; + const struct option verify_tag_options[] = { + OPT__VERBOSE(&verbose, N_("print tag contents")), + OPT_BIT(0, "raw", &flags, N_("print raw gpg status output"), GPG_VERIFY_RAW), + OPT_STRING(0, "format", &format.format, N_("format"), N_("format to use for the output")), + OPT_END() + }; + + git_config(git_verify_tag_config, NULL); + + argc = parse_options(argc, argv, prefix, verify_tag_options, + verify_tag_usage, PARSE_OPT_KEEP_ARGV0); + if (argc <= i) + usage_with_options(verify_tag_usage, verify_tag_options); + + if (verbose) + flags |= GPG_VERIFY_VERBOSE; + + if (format.format) { + if (verify_ref_format(&format)) + usage_with_options(verify_tag_usage, + verify_tag_options); + flags |= GPG_VERIFY_OMIT_STATUS; + } + + while (i < argc) { + struct object_id oid; + const char *name = argv[i++]; + + if (get_oid(name, &oid)) { + had_error = !!error("tag '%s' not found.", name); + continue; + } + + if (gpg_verify_tag(&oid, name, flags)) { + had_error = 1; + continue; + } + + if (format.format) + pretty_print_ref(name, &oid, &format); + } + return had_error; +} -- cgit v1.2.3