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