40 lines
993 B
Bash
Executable File
40 lines
993 B
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
YAML_FILE="access.yml"
|
|
TEMPLATE_FILE="gitconfig.template"
|
|
USER="$1"
|
|
|
|
# Extract user fields from YAML
|
|
GIT_NAME=$(yq ".\"$USER\".name" "$YAML_FILE")
|
|
GIT_EMAIL=$(yq ".\"$USER\".email" "$YAML_FILE")
|
|
|
|
# Ensure fields are not empty
|
|
if [[ -z "$GIT_NAME" || -z "$GIT_EMAIL" ]]; then
|
|
echo "❌ Error: User '$USER' not found or missing name/email in $YAML_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
# Create output directory
|
|
USER_DIR="files/$USER"
|
|
mkdir -p "$USER_DIR"
|
|
|
|
# Generate .gitconfig
|
|
env GIT_NAME="$GIT_NAME" GIT_EMAIL="$GIT_EMAIL" \
|
|
envsubst <"$TEMPLATE_FILE" >"$USER_DIR/gitconfig"
|
|
|
|
echo "✅ .gitconfig created at $USER_DIR/gitconfig"
|
|
|
|
# Generate SSH keypair if it doesn't exist
|
|
KEYFILE="$USER_DIR/id_ed25519"
|
|
|
|
if [[ -f "$KEYFILE" ]]; then
|
|
echo "🔑 SSH key already exists for $USER at $KEYFILE"
|
|
else
|
|
ssh-keygen -t ed25519 -N "" -C "$GIT_EMAIL" -f "$KEYFILE"
|
|
echo "✅ SSH keypair generated at:"
|
|
echo " 🔐 Private: $KEYFILE"
|
|
echo " 🔓 Public : $KEYFILE.pub"
|
|
fi
|