From 0bf139cd91d8c23aca2df9d08fe824111bc7f905 Mon Sep 17 00:00:00 2001 From: yeti Date: Fri, 18 Apr 2025 05:02:16 +0100 Subject: [PATCH] feat: add features to generate gitconfig & ssh key files --- access.yml | 6 ++++++ generate-user-config.sh | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100755 generate-user-config.sh diff --git a/access.yml b/access.yml index b2939a4..1050dcb 100644 --- a/access.yml +++ b/access.yml @@ -1,15 +1,21 @@ pallav: + name: Pallav Vasa + email: pallav@infilytics.in rw: - darshan - param darshan: + name: Darshan Parmar + email: darshan@infilytics.in rw: - param ro: - pallav param: + name: Param Makawana + email: param@infilytics.in ro: - pallav - darshan diff --git a/generate-user-config.sh b/generate-user-config.sh new file mode 100755 index 0000000..fc32b86 --- /dev/null +++ b/generate-user-config.sh @@ -0,0 +1,39 @@ +#!/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