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