-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
π feat(_init): initial scripts upload
- Loading branch information
0 parents
commit 337ed19
Showing
3 changed files
with
207 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
name: Check Conventional Commit | ||
|
||
on: | ||
push: | ||
branches: | ||
- master | ||
pull_request: | ||
branches: | ||
- master | ||
|
||
jobs: | ||
check-commit-message: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v2 | ||
|
||
- name: Check Conventional Commit | ||
run: | | ||
# Define the conventional commit types with emojis | ||
TYPES=("π feat" "π fix" "π docs" "β¨ style" "π refactor" "β‘οΈ perf" "π¬ test" "π§ build" "π€ ci" "π§Ή chore" "βͺ revert") | ||
# Extract the commit type and emoji from the commit message | ||
COMMIT_MSG=$(git log --format=%B -n 1) | ||
for type in "${TYPES[@]}"; do | ||
type_emoji=${type} | ||
type=${type_emoji#* } | ||
emoji=${type_emoji% *} | ||
if [[ $COMMIT_MSG == $emoji* ]]; then | ||
echo "Commit message is a conventional commit" | ||
exit 0 | ||
fi | ||
done | ||
# If we reach here, the commit message is not a conventional commit | ||
echo "Commit message is not a conventional commit" | ||
exit 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
#!/bin/bash | ||
|
||
# Author: Eshan Roy <[email protected]> | ||
# Author URI: https://eshanized.github.io | ||
|
||
set -e | ||
|
||
# Function to display usage instructions | ||
usage() { | ||
cat <<EOF | ||
Usage: ${0##*/} [--email <email>] [--username <username>] [-h] | ||
Options: | ||
--email <email> Set the GitHub user email. | ||
--username <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 [email protected] --username "Eshan Roy" | ||
EOF | ||
exit 1 | ||
} | ||
|
||
# Parse command-line arguments | ||
while [[ "$#" -gt 0 ]]; do | ||
case "$1" in | ||
--email) | ||
EMAIL="$2" | ||
shift 2 | ||
;; | ||
--username) | ||
USERNAME="$2" | ||
shift 2 | ||
;; | ||
-h|--help) | ||
usage | ||
;; | ||
*) | ||
echo "Unknown argument: $1" | ||
usage | ||
;; | ||
esac | ||
done | ||
|
||
# Prompt for email if not provided | ||
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 | ||
fi | ||
|
||
# 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" | ||
|
||
# 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" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
#!/bin/bash | ||
|
||
# Author : ESHAN ROY | ||
# Author URI : https://eshanized.github.io | ||
|
||
# NOTE : Run at your own risk! | ||
|
||
# Define the conventional commit types with new emojis | ||
TYPES=("π feat" "π fix" "π docs" "β¨ style" "π refactor" "β‘οΈ perf" "π¬ test" "π§ build" "π€ ci" "π§Ή chore" "βͺ revert") | ||
|
||
# Function to display an error and exit | ||
error_exit() { | ||
echo -e "\033[1;31m[ERROR]\033[0m $1" | ||
exit 1 | ||
} | ||
|
||
# Ensure the script is run in a Git repository | ||
git rev-parse --is-inside-work-tree > /dev/null 2>&1 || error_exit "This is not a Git repository." | ||
|
||
# Prompt the user to select a commit type | ||
echo "Select a commit type:" | ||
select type in "${TYPES[@]}"; do | ||
if [[ -n "$type" ]]; then | ||
break | ||
else | ||
echo "Invalid selection. Please try again." | ||
fi | ||
done | ||
|
||
# Extract the commit type and emoji from the selection | ||
type_emoji=${type} | ||
type=${type_emoji#* } | ||
emoji=${type_emoji% *} | ||
|
||
# Prompt the user to enter a scope (optional) | ||
read -p "Enter a scope (optional): " scope | ||
scope_part="" | ||
if [ -n "$scope" ]; then | ||
scope_part="($scope)" | ||
fi | ||
|
||
# Prompt the user to enter a short description | ||
read -p "Enter a short description: " desc | ||
if [ -z "$desc" ]; then | ||
error_exit "A short description is required!" | ||
fi | ||
|
||
# Prompt the user to enter a longer description (optional) | ||
read -p "Enter a longer description (optional): " long_desc | ||
|
||
# Create the commit message | ||
commit_msg="$emoji $type$scope_part: $desc" | ||
|
||
# If a longer description was provided, add it to the commit message | ||
if [ -n "$long_desc" ]; then | ||
commit_msg+=" | ||
$long_desc" | ||
fi | ||
|
||
# Print the commit message to the console | ||
echo -e "\nCommit message:" | ||
echo -e "\033[1;36m$commit_msg\033[0m" | ||
|
||
# Confirm before committing | ||
read -p "Do you want to proceed with this commit? (y/n): " confirm | ||
if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then | ||
echo "Commit aborted." | ||
exit 0 | ||
fi | ||
|
||
# Stage all changes | ||
git add . | ||
|
||
# Commit the changes with the conventional commit message | ||
if git commit -m "$commit_msg"; then | ||
echo -e "\033[1;32mCommit successful!\033[0m" | ||
else | ||
error_exit "Commit failed." | ||
fi | ||
|
||
# Push the changes to the remote repository | ||
branch=$(git rev-parse --abbrev-ref HEAD) | ||
if git push origin "$branch"; then | ||
echo -e "\033[1;32mChanges pushed to remote branch '$branch'.\033[0m" | ||
else | ||
error_exit "Push failed. Please check your connection or branch permissions." | ||
fi |