diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml
index 1cc4f6bd290..8a20867db0e 100644
--- a/.github/workflows/beta.yml
+++ b/.github/workflows/beta.yml
@@ -12,6 +12,7 @@ jobs:
runs-on: ubuntu-latest
env:
CI: true
+ SKIP_BUILD: false
steps:
- name: Checkout repo
@@ -19,7 +20,6 @@ jobs:
with:
fetch-depth: 0
-
- name: Download last SHA artifact
uses: dawidd6/action-download-artifact@v3
with:
@@ -38,7 +38,7 @@ jobs:
fi
echo "Commits since $LAST_SHA:"
# Accumulate commit logs in a shell variable
- COMMIT_LOGS=$(git log $LAST_SHA..HEAD --pretty=format:"[[%h](https://github.com/${{ github.repository }}/commit/%H)] %s ~%an")
+ COMMIT_LOGS=$(git log $LAST_SHA..HEAD --pretty=format:"● %s ~%an [֍](https://github.com/${{ github.repository }}/commit/%H)")
# Replace commit messages with pull request links
COMMIT_LOGS=$(echo "$COMMIT_LOGS" | sed -E 's/#([0-9]+)/[#\1](https:\/\/github.com\/rebelonion\/Dantotsu\/pull\/\1)/g')
# URL-encode the newline characters for GitHub Actions
@@ -66,26 +66,40 @@ jobs:
echo "Version $VERSION"
echo "VERSION=$VERSION" >> $GITHUB_ENV
+ - name: List files in the directory
+ run: ls -l
+
- name: Setup JDK 17
+ if: ${{ env.SKIP_BUILD != 'true' }}
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: 17
cache: gradle
-
+
- name: Decode Keystore File
+ if: ${{ github.repository == 'rebelonion/Dantotsu' }}
run: echo "${{ secrets.KEYSTORE_FILE }}" | base64 -d > $GITHUB_WORKSPACE/key.keystore
- - name: List files in the directory
- run: ls -l
-
- name: Make gradlew executable
+ if: ${{ env.SKIP_BUILD != 'true' }}
run: chmod +x ./gradlew
- name: Build with Gradle
- run: ./gradlew assembleGoogleAlpha -Pandroid.injected.signing.store.file=$GITHUB_WORKSPACE/key.keystore -Pandroid.injected.signing.store.password=${{ secrets.KEYSTORE_PASSWORD }} -Pandroid.injected.signing.key.alias=${{ secrets.KEY_ALIAS }} -Pandroid.injected.signing.key.password=${{ secrets.KEY_PASSWORD }}
-
+ if: ${{ env.SKIP_BUILD != 'true' }}
+ run: |
+ if [ "${{ github.repository }}" == "rebelonion/Dantotsu" ]; then
+ ./gradlew assembleGoogleAlpha \
+ -Pandroid.injected.signing.store.file=$GITHUB_WORKSPACE/key.keystore \
+ -Pandroid.injected.signing.store.password=${{ secrets.KEYSTORE_PASSWORD }} \
+ -Pandroid.injected.signing.key.alias=${{ secrets.KEY_ALIAS }} \
+ -Pandroid.injected.signing.key.password=${{ secrets.KEY_PASSWORD }};
+ else
+ ./gradlew assembleGoogleAlpha;
+ fi
+
- name: Upload a Build Artifact
+ if: ${{ env.SKIP_BUILD != 'true' }}
uses: actions/upload-artifact@v4
with:
name: Dantotsu
@@ -94,7 +108,6 @@ jobs:
path: "app/build/outputs/apk/google/alpha/app-google-alpha.apk"
- name: Upload APK to Discord and Telegram
- if: ${{ github.repository == 'rebelonion/Dantotsu' }}
shell: bash
run: |
# Prepare Discord embed
@@ -103,55 +116,96 @@ jobs:
user_details=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/users/$login")
name=$(echo "$user_details" | jq -r '.name // .login')
+ login=$(echo "$user_details" | jq -r '.login')
avatar_url=$(echo "$user_details" | jq -r '.avatar_url')
echo "$name|$login|$avatar_url"
}
# Additional information for the goats
declare -A additional_info
- additional_info["ibo"]=" Discord: <@951737931159187457>\n AniList: [takarealist112]()\n"
- additional_info["aayush262"]=" Discord: <@918825160654598224>\n AniList: [aayush262]()\n"
- additional_info["rebelonion"]=" Discord: <@714249925248024617>\n AniList: [rebelonion]()\n PornHub: [rebelonion]()\n"
- # Extract contributor names from commit log and make unique list
- committers=$(echo "$COMMIT_LOG" | sed 's/%0A/\n/g' | grep -oP '(?<=~)[^%]*')
- committers=$(echo "$committers" | sort | uniq)
+ additional_info["ibo"]="\n Discord: <@951737931159187457>\n AniList: [takarealist112]()"
+ additional_info["aayush262"]="\n Discord: <@918825160654598224>\n AniList: [aayush262]()"
+ additional_info["rebelonion"]="\n Discord: <@714249925248024617>\n AniList: [rebelonion]()\n PornHub: [rebelonion]()"
+
+ # Count recent commits and create an associative array
+ declare -A recent_commit_counts
+ while read -r count name; do
+ recent_commit_counts["$name"]=$count
+ done < <(echo "$COMMIT_LOG" | sed 's/%0A/\n/g' | grep -oP '(?<=~)[^[]*' | sort | uniq -c | sort -rn)
# Fetch contributors from GitHub
contributors=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
- "https://api.github.com/repos/rebelonion/Dantotsu/contributors")
+ "https://api.github.com/repos/${{ github.repository }}/contributors")
+
+ # Create a sorted list of contributors based on recent commit counts
+ sorted_contributors=$(for login in $(echo "$contributors" | jq -r '.[].login'); do
+ user_info=$(fetch_user_details "$login")
+ name=$(echo "$user_info" | cut -d'|' -f1)
+ count=${recent_commit_counts["$name"]:-0}
+ echo "$count|$login"
+ done | sort -rn | cut -d'|' -f2)
+
# Initialize needed variables
developers=""
committers_count=0
- thumbnail_url="https://i.imgur.com/5o3Y9Jb.gif"
- # Process contributors and filter by committers
- while read -r login commits; do
+ max_commits=0
+ top_contributor=""
+ top_contributor_count=0
+ top_contributor_avatar=""
+
+ # Process contributors in the new order
+ while read -r login; do
user_info=$(fetch_user_details "$login")
name=$(echo "$user_info" | cut -d'|' -f1)
login=$(echo "$user_info" | cut -d'|' -f2)
avatar_url=$(echo "$user_info" | cut -d'|' -f3)
- if echo "$committers" | grep -qw "$name"; then
+
+ # Only process if they have recent commits
+ commit_count=${recent_commit_counts["$name"]:-0}
+ if [ $commit_count -gt 0 ]; then
+ # Update top contributor information
+ if [ $commit_count -gt $max_commits ]; then
+ max_commits=$commit_count
+ top_contributor="$login"
+ top_contributor_count=1
+ top_contributor_avatar="$avatar_url"
+ elif [ $commit_count -eq $max_commits ]; then
+ top_contributor_count=$((top_contributor_count + 1))
+ fi
+
+ # Get commit count for this contributor on the dev branch
+ branch_commit_count=$(git rev-list --count dev --author="$login")
+
extra_info="${additional_info[$name]}"
if [ -n "$extra_info" ]; then
- extra_info=$(echo -e "$extra_info" | sed 's/^/- /')
+ extra_info=$(echo "$extra_info" | sed 's/\\n/\n- /g')
fi
- developers="${developers}◗ **${name}**
- ${extra_info} Github: [${login}](https://github.com/${login})
- - Commits: ${commits}
- "
- committers_count=$((committers_count + 1))
- if [ $committers_count -eq 1 ]; then
- thumbnail_url="$avatar_url"
+
+ # Construct the developer entry
+ developer_entry="◗ **${name}** ${extra_info}
+ - Github: [${login}](https://github.com/${login})
+ - Commits: ${branch_commit_count}"
+
+ # Add the entry to developers, with a newline if it's not the first entry
+ if [ -n "$developers" ]; then
+ developers="${developers}
+ ${developer_entry}"
else
- thumbnail_url="https://i.imgur.com/5o3Y9Jb.gif"
+ developers="${developer_entry}"
fi
- fi
- done < <(echo "$contributors" | jq -r '.[] | "\(.login) \(.contributions)"')
-
-
- # Remove trailing newline
- developers=$(echo "$developers" | sed '$ s/$//')
- commit_messages=$(echo "$COMMIT_LOG" | sed 's/%0A/\n/g; s/^/\n/')
+ committers_count=$((committers_count + 1))
+ fi
+ done <<< "$sorted_contributors"
+
+ # Set the thumbnail URL based on top contributor(s)
+ if [ $top_contributor_count -eq 1 ]; then
+ thumbnail_url="$top_contributor_avatar"
+ else
+ thumbnail_url="https://i.imgur.com/5o3Y9Jb.gif"
+ fi
+
# Truncate field values
max_length=1000
+ commit_messages=$(echo "$COMMIT_LOG" | sed 's/%0A/\n/g; s/^/\n/')
if [ ${#developers} -gt $max_length ]; then
developers="${developers:0:$max_length}... (truncated)"
fi
@@ -195,22 +249,47 @@ jobs:
],
"attachments": []
}')
+
# Send Discord message
curl -H "Content-Type: application/json" \
-d "$discord_data" \
${{ secrets.DISCORD_WEBHOOK }}
+ echo "You have only send an embed to discord due to SKIP_BUILD being set to true"
# Upload APK to Discord
- curl -F "payload_json=${contentbody}" \
- -F "dantotsu_debug=@app/build/outputs/apk/google/alpha/app-google-alpha.apk" \
- ${{ secrets.DISCORD_WEBHOOK }}
+ if [ "$SKIP_BUILD" != "true" ]; then
+ curl -F "payload_json=${contentbody}" \
+ -F "dantotsu_debug=@app/build/outputs/apk/google/alpha/app-google-alpha.apk" \
+ ${{ secrets.DISCORD_WEBHOOK }}
+ else
+ echo "Skipping APK upload to Discord due to SKIP_BUILD being set to true"
+ fi
+
+ # Format commit messages for Telegram
+ telegram_commit_messages=$(echo "$COMMIT_LOG" | sed 's/%0A/\n/g' | while read -r line; do
+ message=$(echo "$line" | sed -E 's/● (.*) ~(.*) \[֍\]\((.*)\)/● \1 ~\2 ֍<\/a>/')
+ message=$(echo "$message" | sed -E 's/\[#([0-9]+)\]\((https:\/\/github\.com\/[^)]+)\)/#\1<\/a>/g')
+ echo "$message"
+ done)
+ telegram_commit_messages="${telegram_commit_messages}
"
+
+ # Upload APK to Telegram
+ if [ "$SKIP_BUILD" != "true" ]; then
+ APK_PATH="app/build/outputs/apk/google/alpha/app-google-alpha.apk"
+ response=$(curl -sS -f -X POST \
+ "https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendDocument" \
+ -F "chat_id=${{ secrets.TELEGRAM_CHANNEL_ID }}" \
+ -F "document=@$APK_PATH" \
+ -F "caption=New Alpha-Build dropped 🔥
+
+ Commits:
+ ${telegram_commit_messages}
+ version: ${VERSION}" \
+ -F "parse_mode=HTML")
+ else
+ echo "Skipping Telegram message and APK upload due to SKIP_BUILD being set to true"
+ fi
- # Send Telegram message and upload APK
- curl -F "chat_id=${{ secrets.TELEGRAM_CHANNEL_ID }}" \
- -F "document=@app/build/outputs/apk/google/alpha/app-google-alpha.apk" \
- -F "caption=Alpha-Build: ${VERSION}: ${commit_messages}" \
- https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendDocument
-
env:
COMMIT_LOG: ${{ env.COMMIT_LOG }}
VERSION: ${{ env.VERSION }}