]> git.ipfire.org Git - thirdparty/git.git/commitdiff
gpg-interface: add function for converting trust level to string
authorJaydeep Das <jaydeepjd.8914@gmail.com>
Mon, 11 Jul 2022 05:00:50 +0000 (05:00 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 11 Jul 2022 05:10:23 +0000 (22:10 -0700)
Add new helper function `gpg_trust_level_to_str()` which will
convert a given member of `enum signature_trust_level` to its
corresponding string (in lowercase). For example, `TRUST_ULTIMATE`
will yield the string "ultimate".

This will abstract out some code in `pretty.c` relating to gpg
signature trust levels.

Mentored-by: Christian Couder <chriscool@tuxfamily.org>
Mentored-by: Hariom Verma <hariom18599@gmail.com>
Signed-off-by: Jaydeep Das <jaydeepjd.8914@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
gpg-interface.c
gpg-interface.h
pretty.c

index 947b58ad4da364bc7890a6ca30d065ee56d9fc8d..6dff2414603ef8275e5fcaf453e5712db240575c 100644 (file)
@@ -165,15 +165,17 @@ static struct {
        { 0, "TRUST_", GPG_STATUS_TRUST_LEVEL },
 };
 
-static struct {
+/* Keep the order same as enum signature_trust_level */
+static struct sigcheck_gpg_trust_level {
        const char *key;
+       const char *display_key;
        enum signature_trust_level value;
 } sigcheck_gpg_trust_level[] = {
-       { "UNDEFINED", TRUST_UNDEFINED },
-       { "NEVER", TRUST_NEVER },
-       { "MARGINAL", TRUST_MARGINAL },
-       { "FULLY", TRUST_FULLY },
-       { "ULTIMATE", TRUST_ULTIMATE },
+       { "UNDEFINED", "undefined", TRUST_UNDEFINED },
+       { "NEVER", "never", TRUST_NEVER },
+       { "MARGINAL", "marginal", TRUST_MARGINAL },
+       { "FULLY", "fully", TRUST_FULLY },
+       { "ULTIMATE", "ultimate", TRUST_ULTIMATE },
 };
 
 static void replace_cstring(char **field, const char *line, const char *next)
@@ -905,6 +907,20 @@ const char *get_signing_key(void)
        return git_committer_info(IDENT_STRICT | IDENT_NO_DATE);
 }
 
+const char *gpg_trust_level_to_str(enum signature_trust_level level)
+{
+       struct sigcheck_gpg_trust_level *trust;
+
+       if (level < 0 || level >= ARRAY_SIZE(sigcheck_gpg_trust_level))
+               BUG("invalid trust level requested %d", level);
+
+       trust = &sigcheck_gpg_trust_level[level];
+       if (trust->value != level)
+               BUG("sigcheck_gpg_trust_level[] unsorted");
+
+       return sigcheck_gpg_trust_level[level].display_key;
+}
+
 int sign_buffer(struct strbuf *buffer, struct strbuf *signature, const char *signing_key)
 {
        return use_format->sign_buffer(buffer, signature, signing_key);
index b30cbdcd3da546888fb1f8f206205c2373ad633b..8a9ef41779e2fe91305dcb1b13cf66a282446cf6 100644 (file)
@@ -71,6 +71,14 @@ size_t parse_signed_buffer(const char *buf, size_t size);
 int sign_buffer(struct strbuf *buffer, struct strbuf *signature,
                const char *signing_key);
 
+
+/*
+ * Returns corresponding string in lowercase for a given member of
+ * enum signature_trust_level. For example, `TRUST_ULTIMATE` will
+ * return "ultimate".
+ */
+const char *gpg_trust_level_to_str(enum signature_trust_level level);
+
 int git_gpg_config(const char *, const char *, void *);
 void set_signing_key(const char *);
 const char *get_signing_key(void);
index ee6114e3f0aa1dcf8737794bbe8dc8f6e23f5f7b..6d819103fbf1db3a201f993e20140bfa288a0e12 100644 (file)
--- a/pretty.c
+++ b/pretty.c
@@ -1575,23 +1575,7 @@ static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */
                                strbuf_addstr(sb, c->signature_check.primary_key_fingerprint);
                        break;
                case 'T':
-                       switch (c->signature_check.trust_level) {
-                       case TRUST_UNDEFINED:
-                               strbuf_addstr(sb, "undefined");
-                               break;
-                       case TRUST_NEVER:
-                               strbuf_addstr(sb, "never");
-                               break;
-                       case TRUST_MARGINAL:
-                               strbuf_addstr(sb, "marginal");
-                               break;
-                       case TRUST_FULLY:
-                               strbuf_addstr(sb, "fully");
-                               break;
-                       case TRUST_ULTIMATE:
-                               strbuf_addstr(sb, "ultimate");
-                               break;
-                       }
+                       strbuf_addstr(sb, gpg_trust_level_to_str(c->signature_check.trust_level));
                        break;
                default:
                        return 0;