From 46a0dbba0a65116cbff4fd3affda5b825c86e4ef Mon Sep 17 00:00:00 2001 From: kalmenn Date: Fri, 22 Dec 2023 02:23:39 +0100 Subject: [PATCH] identity.sh: changed add_identity to import_identity --- scripts/identity.sh | 50 ++++++++++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/scripts/identity.sh b/scripts/identity.sh index 825d2d8..f04d70b 100755 --- a/scripts/identity.sh +++ b/scripts/identity.sh @@ -2,45 +2,61 @@ identities="$HOME/.local/share/git/identities"; -function add_identity() { - uid_regex="([^\(]*)\s*(\((.*)\))?\s*<(.*)>"; +function import_identity() { + local gpg_key_id="$1" + filepath="$identities/$2"; - uid=$(gpg --with-colons -K $1 | awk -F: '$1=="uid" {print $10; exit}'); + local uid_regex="([^\(]* )\s*(\((.*)\))?\s*<(.*)>"; + + local uid=$(gpg --with-colons -K $gpg_key_id | awk -F: '$1=="uid" {print $10; exit}'); if [ -z "$uid" ]; then echo "ERROR: found no gpg key matching this"; exit 1; fi - name=$(printf "$uid" | sed --regexp-extended -e "s/$uid_regex/\1/"); - email=$(printf "$uid" | sed --regexp-extended -e "s/$uid_regex/\4/"); + local name=$(printf "$uid" | sed -Ee "s/$uid_regex/\1/" | xargs); + local email=$(printf "$uid" | sed -Ee "s/$uid_regex/\4/"); - echo "using this identity:"; - echo " name = $name"; - echo " email = $email"; + git config -f "$filepath" user.name "$name" + git config -f "$filepath" user.email "$email" - git config --local user.name "$name" - git config --local user.email "$email" - - keyid=$(gpg -K --with-colon $1 | awk -F: '$12~/.*s.*/ {print $5; exit}'); + local keyid=$(gpg -K --with-colon $1 | awk -F: '$12~/.*s.*/ {print $5; exit}'); # TODO: if multiple found, bring up a dialog to select the right key if [ -z "$keyid" ]; then echo "WARNING: found no subkey with signing capabilities. No signing key will be set"; - git config --local --unset user.signingKey; + git config -f "$filepath" --unset user.signingKey; else - echo " key = $keyid"; - git config --local user.signingKey "$keyid"; + git config -f "$filepath" user.signingKey "$keyid"; fi } case $1 in - add) - add_identity $2 + import) + if [ -z "$2" ]; then + echo "USAGE:"; + echo " git identity import [identity_file_name]" + echo; + echo "Imports an identity from a gpg key. If no filename is provided, it will by default to the identifier you provided for your gpg key" + exit 1; + fi + + if [ -z "$3" ]; then + import_identity "$2" "$2"; + else + import_identity "$2" "$3"; + fi + + echo "imported into $filepath:" + cat "$filepath"; ;; *) echo "USAGE:"; echo " git identity "; + echo; + echo "COMMANDS:" + echo " import: import an identity from a gpg key" exit 1; ;; esac