Procházet zdrojové kódy

Refactor kernel Makefile search and version extraction

jimsterino98 před 1 měsícem
rodič
revize
53d3923e7e
1 změnil soubory, kde provedl 51 přidání a 31 odebrání
  1. 51 31
      .github/actions/kernel-info/action.yml

+ 51 - 31
.github/actions/kernel-info/action.yml

@@ -9,59 +9,79 @@ runs:
       run: |
         REPO="WildKernels/Samsung_Kernels"
 
-        echo "Searching for root Makefile on branch $BRANCH"
+        echo "Searching for kernel Makefile on branch $BRANCH"
 
-        # Get repository tree without cloning
         TREE_URL="https://api.github.com/repos/$REPO/git/trees/$BRANCH?recursive=1"
 
-        MAKEFILES=$(curl -s "$TREE_URL" | jq -r '.tree[].path' | grep 'Makefile$')
+        # Download tree once
+        TREE_JSON=$(curl -s "$TREE_URL")
 
-        for file in $MAKEFILES; do
-        CONTENT=$(curl -s "https://raw.githubusercontent.com/$REPO/$BRANCH/$file")
-        
-        if echo "$CONTENT" | grep -q '^VERSION[[:space:]]*='; then
-           MAKEFILE_PATH="$file"
-           break
+        if [ -z "$TREE_JSON" ]; then
+          echo "::error::Failed to download repository tree"
+          exit 1
         fi
-        done
+
+        # Extract all Makefiles
+        echo "$TREE_JSON" | jq -r '.tree[].path' > files.txt
+
+        MAKEFILE_PATH=""
+
+        while read -r file; do
+          case "$file" in
+            *Makefile)
+              echo "Checking: $file"
+
+              CONTENT=$(curl -s "https://raw.githubusercontent.com/$REPO/$BRANCH/$file")
+
+              if echo "$CONTENT" | grep -qE '^VERSION[[:space:]]*='; then
+                MAKEFILE_PATH="$file"
+                break
+              fi
+              ;;
+          esac
+        done < files.txt
 
         if [ -z "$MAKEFILE_PATH" ]; then
-        echo "::error::Could not find kernel Makefile"
-        exit 1
+          echo "::error::Could not find kernel Makefile"
+          exit 1
         fi
-        
+
         echo "Found kernel Makefile: $MAKEFILE_PATH"
 
-        # Download only the Makefile
         RAW_URL="https://raw.githubusercontent.com/$REPO/$BRANCH/$MAKEFILE_PATH"
 
         MAKEFILE_CONTENT=$(curl -s "$RAW_URL")
 
-        VERSION=$(echo "$MAKEFILE_CONTENT" | grep -m1 '^VERSION[[:space:]]*=' | awk '{print $3}')
-        PATCHLEVEL=$(echo "$MAKEFILE_CONTENT" | grep -m1 '^PATCHLEVEL[[:space:]]*=' | awk '{print $3}')
+        VERSION=$(echo "$MAKEFILE_CONTENT" | grep -m1 -E '^VERSION[[:space:]]*=' | awk '{print $3}')
+        PATCHLEVEL=$(echo "$MAKEFILE_CONTENT" | grep -m1 -E '^PATCHLEVEL[[:space:]]*=' | awk '{print $3}')
 
         if [ -z "$VERSION" ] || [ -z "$PATCHLEVEL" ]; then
-          echo "::error::Could not extract kernel version from Makefile"
+          echo "::error::Could not extract kernel version"
           exit 1
         fi
 
         KERNEL_VERSION="$VERSION.$PATCHLEVEL"
 
-        
-        if [ "$KERNEL_VERSION" = "5.10" ]; then
-           ANDROID_VERSION="android12"
-        elif [ "$KERNEL_VERSION" = "5.15" ]; then
-           ANDROID_VERSION="android13"
-        elif [ "$KERNEL_VERSION" = "6.1" ]; then
-           ANDROID_VERSION="android14"
-        elif [ "$KERNEL_VERSION" = "6.6" ]; then
-           ANDROID_VERSION="android15"
-        else
-           ANDROID_VERSION="unknown"
-        fi
-        
+        case "$KERNEL_VERSION" in
+          5.10)
+            ANDROID_VERSION="android12"
+            ;;
+          5.15)
+            ANDROID_VERSION="android13"
+            ;;
+          6.1)
+            ANDROID_VERSION="android14"
+            ;;
+          6.6)
+            ANDROID_VERSION="android15"
+            ;;
+          *)
+            ANDROID_VERSION="unknown"
+            ;;
+        esac
+
         echo "Android: $ANDROID_VERSION"
         echo "Kernel: $KERNEL_VERSION"
-        
+
         echo "ANDROID_VERSION=$ANDROID_VERSION" >> "$GITHUB_ENV"
         echo "KERNEL_VERSION=$KERNEL_VERSION" >> "$GITHUB_ENV"