mirror of
https://github.com/jpawlowski/hass.tibber_prices.git
synced 2026-03-29 21:03:40 +00:00
99 lines
3.6 KiB
Bash
Executable file
99 lines
3.6 KiB
Bash
Executable file
#!/bin/bash
|
||
# Setup Git configuration from host
|
||
# This script is idempotent and can be run multiple times safely.
|
||
|
||
# Exit on error
|
||
set -e
|
||
|
||
# Check if host gitconfig exists
|
||
if [ ! -f ~/.gitconfig.host ]; then
|
||
echo "No host .gitconfig found, skipping Git setup"
|
||
exit 0
|
||
fi
|
||
|
||
echo "Setting up Git configuration from host..."
|
||
|
||
# Extract and set user info
|
||
USER_NAME=$(grep -A 2 '^\[user\]' ~/.gitconfig.host | grep 'name' | sed 's/.*= //' | xargs)
|
||
USER_EMAIL=$(grep -A 2 '^\[user\]' ~/.gitconfig.host | grep 'email' | sed 's/.*= //' | xargs)
|
||
|
||
if [ -n "$USER_NAME" ]; then
|
||
CURRENT_NAME=$(git config --global user.name 2>/dev/null || echo "")
|
||
if [ "$CURRENT_NAME" != "$USER_NAME" ]; then
|
||
git config --global user.name "$USER_NAME"
|
||
echo "✓ Set user.name: $USER_NAME"
|
||
else
|
||
echo " user.name already set: $USER_NAME"
|
||
fi
|
||
fi
|
||
|
||
if [ -n "$USER_EMAIL" ]; then
|
||
CURRENT_EMAIL=$(git config --global user.email 2>/dev/null || echo "")
|
||
if [ "$CURRENT_EMAIL" != "$USER_EMAIL" ]; then
|
||
git config --global user.email "$USER_EMAIL"
|
||
echo "✓ Set user.email: $USER_EMAIL"
|
||
else
|
||
echo " user.email already set: $USER_EMAIL"
|
||
fi
|
||
fi
|
||
|
||
# Set safe defaults for container
|
||
git config --global init.defaultBranch main
|
||
git config --global pull.rebase false
|
||
git config --global merge.conflictStyle diff3
|
||
git config --global submodule.recurse true
|
||
git config --global color.ui true
|
||
echo "✓ Set Git defaults"
|
||
|
||
# Copy useful aliases (skip if they have macOS-specific paths)
|
||
if grep -q '^\[alias\]' ~/.gitconfig.host; then
|
||
echo "✓ Syncing Git aliases..."
|
||
|
||
# First, collect all aliases from host config
|
||
TEMP_ALIASES=$(mktemp)
|
||
sed -n '/^\[alias\]/,/^\[/p' ~/.gitconfig.host | \
|
||
grep -v '^\[' | \
|
||
grep -v '^$' | \
|
||
while IFS= read -r line; do
|
||
# Skip aliases with macOS-specific paths
|
||
if echo "$line" | grep -q -E '/(Applications|usr/local)'; then
|
||
continue
|
||
fi
|
||
echo "$line" >> "$TEMP_ALIASES"
|
||
done
|
||
|
||
# Apply each alias (git config --global overwrites existing values = idempotent)
|
||
if [ -s "$TEMP_ALIASES" ]; then
|
||
while IFS= read -r line; do
|
||
ALIAS_NAME=$(echo "$line" | awk '{print $1}')
|
||
ALIAS_VALUE=$(echo "$line" | sed "s/^$ALIAS_NAME = //")
|
||
git config --global "alias.$ALIAS_NAME" "$ALIAS_VALUE" 2>/dev/null || true
|
||
done < "$TEMP_ALIASES"
|
||
echo " Synced $(wc -l < "$TEMP_ALIASES") aliases"
|
||
fi
|
||
|
||
rm -f "$TEMP_ALIASES"
|
||
fi
|
||
|
||
# Disable GPG signing in container (1Password SSH signing doesn't work in DevContainers)
|
||
# SSH agent forwarding works for git push/pull, but SSH signing requires direct
|
||
# access to 1Password app which isn't available in the container.
|
||
#
|
||
# For signed commits: Make final commits on host macOS where 1Password is available.
|
||
# The container is for development/testing - pre-commit hooks will still run.
|
||
CURRENT_SIGNING=$(git config --global commit.gpgsign 2>/dev/null || echo "false")
|
||
if [ "$CURRENT_SIGNING" != "false" ]; then
|
||
echo "ℹ Disabling commit signing in container (1Password not accessible)"
|
||
echo " → For signed commits, commit from macOS terminal outside container"
|
||
git config --global commit.gpgsign false
|
||
else
|
||
echo " Commit signing already disabled"
|
||
fi
|
||
|
||
# Keep the signing key info for reference, but don't use it
|
||
SIGNING_KEY=$(grep 'signingkey' ~/.gitconfig.host 2>/dev/null | sed 's/.*= //' | xargs || echo "")
|
||
if [ -n "$SIGNING_KEY" ]; then
|
||
echo " → Your signing key: ${SIGNING_KEY:0:20}... (available on host)"
|
||
fi
|
||
|
||
echo "✓ Git configuration complete"
|