]>
Commit | Line | Data |
---|---|---|
2ae68fcb CR |
1 | /* |
2 | * Builtin "git verify-tag" | |
3 | * | |
4 | * Copyright (c) 2007 Carlos Rica <jasampler@gmail.com> | |
5 | * | |
6 | * Based on git-verify-tag.sh | |
7 | */ | |
8 | #include "cache.h" | |
b2141fc1 | 9 | #include "config.h" |
2ae68fcb | 10 | #include "builtin.h" |
f394e093 | 11 | #include "gettext.h" |
2ae68fcb CR |
12 | #include "tag.h" |
13 | #include "run-command.h" | |
dabab1d6 | 14 | #include "object-name.h" |
4855b2a2 | 15 | #include "parse-options.h" |
2f47eae2 | 16 | #include "gpg-interface.h" |
ff3c8c8f | 17 | #include "ref-filter.h" |
2ae68fcb | 18 | |
4855b2a2 | 19 | static const char * const verify_tag_usage[] = { |
8c9e292d | 20 | N_("git verify-tag [-v | --verbose] [--format=<format>] [--raw] <tag>..."), |
4855b2a2 SB |
21 | NULL |
22 | }; | |
2ae68fcb | 23 | |
2ae68fcb CR |
24 | int cmd_verify_tag(int argc, const char **argv, const char *prefix) |
25 | { | |
26 | int i = 1, verbose = 0, had_error = 0; | |
e18443ec | 27 | unsigned flags = 0; |
4a68e36d | 28 | struct ref_format format = REF_FORMAT_INIT; |
4855b2a2 | 29 | const struct option verify_tag_options[] = { |
f6008eb2 | 30 | OPT__VERBOSE(&verbose, N_("print tag contents")), |
e18443ec | 31 | OPT_BIT(0, "raw", &flags, N_("print raw gpg status output"), GPG_VERIFY_RAW), |
4a68e36d | 32 | OPT_STRING(0, "format", &format.format, N_("format"), N_("format to use for the output")), |
4855b2a2 SB |
33 | OPT_END() |
34 | }; | |
2ae68fcb | 35 | |
cc5d1d32 | 36 | git_config(git_default_config, NULL); |
2ae68fcb | 37 | |
4855b2a2 SB |
38 | argc = parse_options(argc, argv, prefix, verify_tag_options, |
39 | verify_tag_usage, PARSE_OPT_KEEP_ARGV0); | |
d2761895 | 40 | if (argc <= i) |
4855b2a2 | 41 | usage_with_options(verify_tag_usage, verify_tag_options); |
d2761895 | 42 | |
e18443ec | 43 | if (verbose) |
44 | flags |= GPG_VERIFY_VERBOSE; | |
45 | ||
4a68e36d JK |
46 | if (format.format) { |
47 | if (verify_ref_format(&format)) | |
2eda0102 JK |
48 | usage_with_options(verify_tag_usage, |
49 | verify_tag_options); | |
ff3c8c8f ST |
50 | flags |= GPG_VERIFY_OMIT_STATUS; |
51 | } | |
52 | ||
78ccd441 | 53 | while (i < argc) { |
84571760 | 54 | struct object_id oid; |
78ccd441 | 55 | const char *name = argv[i++]; |
84571760 | 56 | |
d850b7a5 | 57 | if (repo_get_oid(the_repository, name, &oid)) { |
78ccd441 | 58 | had_error = !!error("tag '%s' not found.", name); |
ff3c8c8f ST |
59 | continue; |
60 | } | |
61 | ||
84571760 | 62 | if (gpg_verify_tag(&oid, name, flags)) { |
2ae68fcb | 63 | had_error = 1; |
ff3c8c8f ST |
64 | continue; |
65 | } | |
66 | ||
4a68e36d | 67 | if (format.format) |
53df97a2 | 68 | pretty_print_ref(name, &oid, &format); |
78ccd441 | 69 | } |
2ae68fcb CR |
70 | return had_error; |
71 | } |