Files
git.taskfile.build/bin/save-dotenv-to-keepass
T

55 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
save-dotenv-to-keepass() {
KEEPASS_ENTRY=$(echo "dotenv/${PWD##*/}#$(git symbolic-ref --short -q HEAD)" | tr '[:upper:]' '[:lower:]')
DOTENV=".env"
if [[ -n "$1" ]]; then
DOTENV="$1"
fi
if [[ ! -f "$DOTENV" ]]; then
echo "No $DOTENV file found."
return 1
fi
# Prompt for KeePass database password silently
read -s -p "Enter password to unlock $KEEPASS_DATABASE_FILE: " keepass_database_pass
echo # Add a newline after password input
if echo "$keepass_database_pass" | keepassxc-cli show \
--key-file "$KEEPASS_DATABASE_KEY_FILE" \
--quiet \
"$KEEPASS_DATABASE_FILE" \
"$KEEPASS_ENTRY" >/dev/null 2>&1; then
echo "Entry '$KEEPASS_ENTRY' already exists."
# Try to remove existing .env attachment if it exists
echo "Removing existing $DOTENV attachment (if any)..."
echo "$keepass_database_pass" | keepassxc-cli attachment-rm \
--key-file "$KEEPASS_DATABASE_KEY_FILE" \
--quiet \
"$KEEPASS_DATABASE_FILE" \
"$KEEPASS_ENTRY" \
"$DOTENV" 2>/dev/null
else
echo "Creating new entry: $KEEPASS_ENTRY"
echo "$keepass_database_pass" | keepassxc-cli add \
--key-file "$KEEPASS_DATABASE_KEY_FILE" \
--password-prompt \
"$KEEPASS_DATABASE_FILE" \
"$KEEPASS_ENTRY"
fi
echo "Attaching $DOTENV file..."
echo "$keepass_database_pass" | keepassxc-cli attachment-import \
--key-file "$KEEPASS_DATABASE_KEY_FILE" \
--quiet \
"$KEEPASS_DATABASE_FILE" \
"$KEEPASS_ENTRY" \
"$DOTENV" \
"$DOTENV"
echo "Successfully saved $DOTENV as an attachment to '$KEEPASS_ENTRY'."
}