Files
dotfiles/bin/actions/git/pre-commit
2024-08-22 23:51:25 +02:00

34 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env zsh
source ~/dotfiles/bin/helpers/functions.sh
# Check for unencrypted files in .ssh/config.d/
unencrypted_files=$(find config/ssh/config.d/ -type f ! -name "*.gpg")
if [ -n "$unencrypted_files" ]; then
printfe "%s\n" "red" "Unencrypted files found in .ssh/config.d/:"
for file in $(find config/ssh/config.d/ -type f ! -name "*.gpg"); do
printfe "%s\n" "yellow" " - $file"
done
# Check if these files are staged
staged_files=$(git diff --cached --name-only)
unencrypted_staged_files=""
for file in $unencrypted_files; do
# Use a more robust check to see if the file is in the staged_files list
if echo "$staged_files" | grep -q "^$file$"; then
unencrypted_staged_files="$unencrypted_staged_files $file"
fi
done
# If any unencrypted files are staged, exit with a non-zero status
if [ -n "$unencrypted_staged_files" ]; then
echo ""
printfe "%s\n" "red" "Error: Unencrypted files are staged for commit!"
printfe "%s\n" "blue" "Use 'dotf secrets encrypt' to encrypt them before committing."
exit 1
fi
echo ""
printfe "%s\n" "blue" "They are not staged so you're good but be vigilant!"
fi