You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
git-secret/src/commands/git_secret_removeperson.sh

52 lines
1.4 KiB
Bash

#!/usr/bin/env bash
function removeperson {
OPTIND=1
while getopts 'h' opt; do
case "$opt" in
h) _show_manual_for 'removeperson';;
*) _invalid_option_for 'removeperson';;
esac
done
shift $((OPTIND-1))
[ "$1" = "--" ] && shift
_user_required
# Command logic:
local emails=( "$@" )
if [[ ${#emails[@]} -eq 0 ]]; then
_abort "at least one email is required for removeperson."
fi
# Getting the local git-secret `gpg` key directory:
local secrets_dir_keys
secrets_dir_keys=$(_get_secrets_dir_keys)
_assert_keyring_contains_emails "$secrets_dir_keys" "git-secret keyring" "${emails[@]}"
for email in "${emails[@]}"; do
# see https://github.com/bats-core/bats-core#file-descriptor-3-read-this-if-bats-hangs for info about 3>&-
$SECRETS_GPG_COMMAND --homedir "$secrets_dir_keys" --no-permission-warning --batch --yes --delete-key "$email" 3>&-
local exit_code=$?
if [[ "$exit_code" -ne 0 ]]; then
_abort "problem deleting key for '$email' with gpg: exit code $exit_code"
fi
done
_message 'removed keys.'
_message "now [$*] do not have an access to the repository."
_message 'make sure to hide the existing secrets again.'
}
function killperson {
echo 'Warning: `killperson` has been renamed to `removeperson`. This alias will be removed in the future versions, please switch to call `removeperson` going forward.'
removeperson "$@"
}