cfg/bin/git-committerconfig
Knut Ahlers 651684ef56
Add support for key::... public key format
Signed-off-by: Knut Ahlers <knut@ahlers.me>
2024-01-02 13:28:33 +01:00

60 lines
1.5 KiB
Python
Executable file

#!/usr/bin/env python3
# Usage: git setmail
#
# Configuration format:
# [
# {
# "match": ".*",
# "email": "mymail@example.com",
# "signingkey": "...",
# }
# ]
import sys
import re
import subprocess
import os.path
import json
CONFIG = os.path.expanduser('~/.config/git-committerconfig.json')
def main():
try:
repo = [x.split()[1] for x
in subprocess.check_output(['git', 'remote', '-v'], universal_newlines=True).split('\n')
if re.match('origin.*\(push\)', x)][0]
except:
print('Could not find origin, not setting local git configuration.')
return 0
if os.path.isfile(CONFIG):
combinations = json.loads(open(CONFIG).read())
else:
print('Config ({}) found.'.format(CONFIG))
return 1
for combi in combinations:
if re.search(combi['match'], repo):
set_local_config('user.email', combi['email'])
if 'signingkey' in combi and combi['signingkey'] != '':
set_local_config('user.signingkey', combi['signingkey'])
set_local_config('gpg.format', 'ssh' if re.search(
r'^(?:ssh|ecdsa|key::)', combi['signingkey']) else 'openpgp')
if 'commit-opts' in combi:
set_local_config('commit.cliopts', combi['commit-opts'])
break
return 0
def set_local_config(param, value):
subprocess.check_call(['git', 'config', '--local', param, value])
if __name__ == "__main__":
exit(main())