diff --git a/.github/workflows/commit.yml b/.github/workflows/commit.yml index 217bac2..5cda42d 100644 --- a/.github/workflows/commit.yml +++ b/.github/workflows/commit.yml @@ -1,4 +1,4 @@ -name: Conventional Commit Checker +name: Check Conventional Commit on: push: @@ -9,44 +9,30 @@ on: - master jobs: - conventional-commit-checker: + check-commit-message: runs-on: ubuntu-latest + steps: - - name: Checkout code - uses: actions/checkout@v4 + - name: Checkout code + uses: actions/checkout@v2 - - name: Check conventional commit message - run: | - COMMIT_MSG=$(git log -1 --format=%s) - EMOJI=$(echo "$COMMIT_MSG" | cut -d' ' -f1) - TYPE=$(echo "$COMMIT_MSG" | cut -d'(' -f1 | cut -d' ' -f2-) - SCOPE=$(echo "$COMMIT_MSG" | cut -d'(' -f2 | cut -d')' -f1) - DESC=$(echo "$COMMIT_MSG" | cut -d']:' -f2-) + - name: Check Conventional Commit + run: | + # Define the conventional commit types with emojis + TYPES=("๐ŸŽ‰ feat" "๐Ÿž fix" "๐Ÿ“š docs" "๐Ÿ’… style" "๐Ÿ”จ refactor" "โšก๏ธ perf" "๐Ÿงช test" "๐Ÿ› ๏ธ build" "๐Ÿค– ci" "๐Ÿงน chore" "โช๏ธ revert") - # Check if the emoji is valid - if [[ " ${TYPES[*]} " =~ " ${EMOJI} " ]]; then - echo "Valid emoji: ${EMOJI}" - else - echo "Error: Invalid emoji. Please use one of the following: ๐ŸŽ‰, ๐Ÿž, ๐Ÿ“š, ๐Ÿ’…, ๐Ÿ”จ, โšก๏ธ, ๐Ÿงช, ๐Ÿ› ๏ธ, ๐Ÿค–, ๐Ÿงน, โช๏ธ" - exit 1 + # 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 - # Check if the type is valid - if [[ " ${TYPES[*]} " =~ " ${TYPE} " ]]; then - echo "Valid type: ${TYPE}" - else - echo "Error: Invalid type. Please use one of the following: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert" - exit 1 - fi - - # Check if the scope is provided - if [ -z "$SCOPE" ]; then - echo "Error: Commit scope is required" - exit 1 - fi - - # Check if the description is provided - if [ -z "$DESC" ]; then - echo "Error: Commit description is required" - exit 1 - fi \ No newline at end of file + # 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