diff options
-rwxr-xr-x | lib/keyringer/actions/check | 14 | ||||
-rwxr-xr-x | lib/keyringer/functions | 34 |
2 files changed, 30 insertions, 18 deletions
diff --git a/lib/keyringer/actions/check b/lib/keyringer/actions/check index 83401b8..70fa7b4 100755 --- a/lib/keyringer/actions/check +++ b/lib/keyringer/actions/check @@ -16,7 +16,8 @@ LIB="`dirname $0`/../functions" source "$LIB" || exit 1 -# The following should run automatically from keyringer_check_recipients: +# The following should run automatically from keyringer_check_recipients +# and keyringer_check_repository: # # TODO: Pull the keyring repository. # TODO: Fetch absent keys from all recipients. @@ -24,16 +25,7 @@ source "$LIB" || exit 1 # TODO: Time to expire can be configured via repository options. # TODO: Users can be alerted by mail if configured by user preferences. # TODO: Outgoing emails can be encrypted. +# TODO: Git maintenance operations. # This should be done here: # TODO: Check canaries' timestamps, warning by mail if configured by user preferences. - -# Git maintenance operations. -if [ -d "$BASEDIR/.git" ]; then - echo "Running git maintenance operations..." - keyringer_exec git "$BASEDIR" fsck - keyringer_exec git "$BASEDIR" gc --prune=all -else - echo "Fatal: not a git repository: $BASEDIR" - exit 1 -fi diff --git a/lib/keyringer/functions b/lib/keyringer/functions index 4746859..e594fd1 100755 --- a/lib/keyringer/functions +++ b/lib/keyringer/functions @@ -301,6 +301,11 @@ function keyringer_set_env { # Upgrade configuration keyringer_upgrade + # Check repository integrity + if [ "$BASENAME" == "check" ]; then + keyringer_check_repository + fi + # Check recipients file keyringer_check_recipients $SUBCOMMAND @@ -513,6 +518,28 @@ function keyringer_usage { fi } +# Check repository integrity +function keyringer_check_repository { + # Check if it's a git repository + if [ ! -d "$BASEDIR/.git" ]; then + echo "Fatal: not a git repository: $BASEDIR" + exit 1 + fi + + # Git maintenance operations + echo "Running git maintenance operations..." + keyringer_exec git "$BASEDIR" fsck + keyringer_exec git "$BASEDIR" gc --prune=all + echo "" + + # Sync the repository + if [ "`keyringer_exec git "$BASEDIR" remote | wc -l`" != "0" ]; then + echo "Syncing git repository..." + keyringer_exec git "$BASEDIR" pull + echo "" + fi +} + # Check recipients # TODO: break in smaller pieces function keyringer_check_recipients { @@ -524,13 +551,6 @@ function keyringer_check_recipients { # Local variables local processed=":" - # Sync the repository - if [ "$BASENAME" == "check" ]; then - echo "Syncing git repository..." - keyringer_exec git "$BASEDIR" pull - echo "" - fi - # Check if recipients file is empty. if [ "`grep -vE "^#|^$" "$RECIPIENTS"/* | wc -l`" == 0 ] && [ "$SUBCOMMAND" != "edit" ]; then echo "Fatal: no recipients configured for this keyring." |