diff --git a/config.sh b/config.sh index ece8d8a..61f9e33 100755 --- a/config.sh +++ b/config.sh @@ -1,20 +1,31 @@ -#!/usr/bin/env bash +#!/bin/bash -# Author: Eshan Roy -# Description: This script configures GitHub user email and username. +# Author: Eshan Roy +# Author URI: https://eshanized.github.io set -e -# Function to display usage +# Function to display usage instructions usage() { - echo "Usage: ${0##*/} [--email ] [--username ] [-h]" - echo " --email Set the GitHub user email." - echo " --username Set the GitHub username." - echo " -h Display this help message." + cat <] [--username ] [-h] + +Options: + --email Set the GitHub user email. + --username Set the GitHub username. + -h, --help Display this help message. + +Description: + This script configures your GitHub user.email and user.name settings globally. + If no arguments are provided, it will prompt for input interactively. + +Examples: + ${0##*/} --email user@example.com --username "Eshan Roy" +EOF exit 1 } -# Parse command line arguments +# Parse command-line arguments while [[ "$#" -gt 0 ]]; do case "$1" in --email) @@ -29,27 +40,42 @@ while [[ "$#" -gt 0 ]]; do usage ;; *) - echo "Unknown parameter passed: $1" + echo "Unknown argument: $1" usage ;; esac done # Prompt for email if not provided -if [ -z "$EMAIL" ]; then - read -p "Enter your GitHub email: " EMAIL +if [[ -z "${EMAIL:-}" ]]; then + read -p "Enter your GitHub Email: " EMAIL fi # Prompt for username if not provided -if [ -z "$USERNAME" ]; then - read -p "Enter your GitHub username: " USERNAME +if [[ -z "${USERNAME:-}" ]]; then + read -p "Enter your GitHub Username: " USERNAME fi -# Set the Git configuration +# Validate email format +if ! [[ "$EMAIL" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]]; then + echo "Error: Invalid email format: $EMAIL" + exit 1 +fi + +# Validate username (allowing alphanumerics, dashes, underscores, and dots) +if ! [[ "$USERNAME" =~ ^[a-zA-Z0-9._-]+$ ]]; then + echo "Error: Invalid username format: $USERNAME" + exit 1 +fi + +# Configure GitHub global settings git config --global user.email "$EMAIL" git config --global user.name "$USERNAME" -# Confirmation message -echo "GitHub configuration updated:" -echo " User Email: $EMAIL" -echo " Username: $USERNAME" \ No newline at end of file +# Display success message +echo -e "\033[1;32mGitHub configuration setup successful!\033[0m" +echo " User Email: $EMAIL" +echo " Username: $USERNAME" +echo -e "\033[1;36mYou can verify this configuration using the following commands:\033[0m" +echo " git config --global user.email" +echo " git config --global user.name" \ No newline at end of file