55 lines
1.8 KiB
Bash
Executable File
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'."
|
|
} |