#!/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