From a50e271703412b56b4c5ba7269beab971cf9d0a6 Mon Sep 17 00:00:00 2001 From: Eshan Roy Date: Fri, 29 Nov 2024 07:45:29 +0530 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20feat(=5Fmass):=20massive=20updat?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/CODEOWNERS | 3 ++ .github/workflows/cz.yml | 38 +++++++++++++++++ Dockerfile | 47 ++++++++++++++------- config.sh | 81 ++++++++++++++++++++++++++++++++++++ pacman.conf | 5 ++- push.sh | 88 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 246 insertions(+), 16 deletions(-) create mode 100644 .github/CODEOWNERS create mode 100644 .github/workflows/cz.yml create mode 100644 config.sh create mode 100755 push.sh diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..5b0fbdb --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,3 @@ +# https://help.github.com/articles/about-codeowners/ + +* @eshanized \ No newline at end of file diff --git a/.github/workflows/cz.yml b/.github/workflows/cz.yml new file mode 100644 index 0000000..fee284c --- /dev/null +++ b/.github/workflows/cz.yml @@ -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 \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 84b5d87..aa1f63d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,22 +1,39 @@ FROM archlinux:base-devel AS rootfs -RUN pacman -Syu --noconfirm && \ - pacman -S --needed --noconfirm pacman-contrib git openssh sudo curl -COPY pacman.conf /etc/pacman.conf -RUN curl https://raw.githubusercontent.com/Snigdha-OS/snigdhaos-pkgbuilds/refs/heads/master/snigdhaos-mirrorlist/snigdhaos-mirrorlist -o /etc/pacman.d/snigdhaos-mirrorlist +# Install base utilities and dependencies +RUN pacman -Syu --noconfirm && \ + pacman -S --needed --noconfirm pacman-contrib git openssh sudo curl +# Copy a custom pacman.conf if needed +COPY pacman.conf /etc/pacman.conf -## include to pacman own keyring to install signed packages -RUN pacman-key --init && \ - pacman-key --recv-keys E1415F19F21171F2 --keyserver keyserver.ubuntu.com && \ - pacman-key --lsign-key E1415F19F21171F2 && \ - pacman -Sy && \ - pacman -S --needed --noconfirm snigdhaos-keyring snigdhaos-mirrorlist && \ - pacman -Syu --noconfirm && \ - rm -rf /var/lib/pacman/sync/* && \ - find /var/cache/pacman/ -type f -delete +# Add Snigdha OS mirrorlist +RUN curl -o /etc/pacman.d/snigdhaos-mirrorlist \ + https://raw.githubusercontent.com/Snigdha-OS/snigdhaos-pkgbuilds/refs/heads/master/snigdhaos-mirrorlist/snigdhaos-mirrorlist + +# Initialize pacman keyring, add Snigdha OS keyring, and clean up +RUN pacman-key --init && \ + pacman-key --recv-keys E1415F19F21171F2 --keyserver keyserver.ubuntu.com && \ + pacman-key --lsign-key E1415F19F21171F2 && \ + pacman -Sy && \ + pacman -S --needed --noconfirm snigdhaos-keyring snigdhaos-mirrorlist && \ + pacman -Syu --noconfirm && \ + rm -rf /var/lib/pacman/sync/* && \ + find /var/cache/pacman/ -type f -delete + +# Add Chaotic-AUR mirrorlist and keyring +RUN curl -o /etc/pacman.d/chaotic-mirrorlist \ + https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist && \ + pacman-key --recv-keys 3056513887B78AEB --keyserver keyserver.ubuntu.com && \ + pacman-key --lsign-key 3056513887B78AEB && \ + echo '[chaotic-aur]' >> /etc/pacman.conf && \ + echo 'Include = /etc/pacman.d/chaotic-mirrorlist' >> /etc/pacman.conf && \ + pacman -Sy --needed --noconfirm chaotic-keyring && \ + pacman -Syu --noconfirm && \ + rm -rf /var/lib/pacman/sync/* && \ + find /var/cache/pacman/ -type f -delete FROM scratch -LABEL org.opencontainers.image.description="Snigdha OS - Arch-based distribution offering an easy installation, several customizations, and unique performance optimization." +LABEL org.opencontainers.image.description="Snigdha OS with Chaotic-AUR support - Arch-based distribution offering an easy installation, several customizations, and unique performance optimization." COPY --from=rootfs / / -CMD ["/usr/bin/bash"] \ No newline at end of file +CMD ["/usr/bin/bash"] diff --git a/config.sh b/config.sh new file mode 100644 index 0000000..61f9e33 --- /dev/null +++ b/config.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +# Author: Eshan Roy +# Author URI: https://eshanized.github.io + +set -e + +# Function to display usage instructions +usage() { + 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 +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" \ No newline at end of file diff --git a/pacman.conf b/pacman.conf index 062e75f..752f2b1 100644 --- a/pacman.conf +++ b/pacman.conf @@ -75,12 +75,15 @@ LocalFileSigLevel = Optional #[testing] #Include = /etc/pacman.d/mirrorlist -[snigdhaos] +[snigdhaos-core] Include = /etc/pacman.d/snigdhaos-mirrorlist [core] Include = /etc/pacman.d/mirrorlist +[snigdhaos-extra] +Include = /etc/pacman.d/snigdhaos-mirrorlist + [extra] Include = /etc/pacman.d/mirrorlist diff --git a/push.sh b/push.sh new file mode 100755 index 0000000..2208e80 --- /dev/null +++ b/push.sh @@ -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 \ No newline at end of file