Skip to content

chore: bump version for release #872

chore: bump version for release

chore: bump version for release #872

Workflow file for this run

name: instances
on:
push:
branches:
- develop
workflow_dispatch:
jobs:
instances:
name: Instances
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Query Instances
run: |
# Query the list of Lemmy instances
curl -H 'Content-Type: application/json' -X POST \
-d '{"query": "query {nodes(softwarename: \"lemmy\") {domain active_users_monthly}}"}' https://api.fediverse.observer 2> /dev/null | \
jq -r '.data.nodes | .[] | select(.active_users_monthly > 50) | .domain' | sort | uniq -i > lemmy-instances.txt
# Query the list of PieFed instances
curl -H 'Content-Type: application/json' -X POST \
-d '{"query": "query {nodes(softwarename: \"piefed\") {domain active_users_monthly}}"}' https://api.fediverse.observer 2> /dev/null | \
jq -r '.data.nodes | .[] | select(.active_users_monthly > 50) | .domain' | sort | uniq -i > piefed-instances.txt
# Combine both lemmy and piefed instances into a single sorted list for Android/Safari
cat lemmy-instances.txt piefed-instances.txt | sort | uniq -i > instances.txt
# Convert to a dart file with a map of domain -> platform
cat << EOF > lib/instances.dart
import 'package:thunder/src/core/enums/threadiverse_platform.dart';
const Map<String, ThreadiversePlatform> instances = {
$(awk '{ print " \047"$0"\047: ThreadiversePlatform.lemmy," }' lemmy-instances.txt)
$(awk '{ print " \047"$0"\047: ThreadiversePlatform.piefed," }' piefed-instances.txt)
};
EOF
# Put the instances in the Android manifest file
manifestInstances="$(awk '{ print " <data android:host=\""$0"\" />" }' instances.txt)"
inSection=false
while IFS= read -r line; do
if [[ $line == *"#AUTO_GEN_INSTANCE_LIST_DO_NOT_TOUCH#"* ]]; then
inSection=true
fi
if [[ $line == *"#INSTANCE_LIST_END#"* ]]; then
echo "$manifestInstances" >> android/app/src/main/AndroidManifest-new.xml
inSection=false
fi
if [[ $line == *"android:host"* ]]; then
if [ "$inSection" = true ]; then
continue
fi
fi
echo "$line" >> android/app/src/main/AndroidManifest-new.xml
done < android/app/src/main/AndroidManifest.xml
mv android/app/src/main/AndroidManifest-new.xml android/app/src/main/AndroidManifest.xml
# ---------- Safari Extension ----------
totalLines=$(wc -l < instances.txt)
currentLine=0
safariManifestInstances=""
safariContentInstances=""
# Generate the Safari extension domains used in manifest.json and content.js
# It ignores the last comma in the list to generate proper json
while IFS= read -r instance; do
currentLine=$((currentLine + 1))
if [ "$currentLine" -eq 1 ]; then
# First line
safariManifestInstances=" \"*://$instance/*\""
safariContentInstances=" \"$instance\""
elif [ "$currentLine" -eq "$totalLines" ]; then
# Last line
safariManifestInstances="$safariManifestInstances,\n \"*://$instance/*\"\n"
safariContentInstances="$safariContentInstances,\n \"$instance\"\n"
else
safariManifestInstances="$safariManifestInstances,\n \"*://$instance/*\""
safariContentInstances="$safariContentInstances,\n \"$instance\""
fi
done < instances.txt
# Generates the new manifest.json with the updated instances
inSection=false
while IFS= read -r line; do
if [[ $line == *"matches\": ["* ]]; then
inSection=true
fi
if [[ $line == " ]" ]]; then
printf "$safariManifestInstances" >> "ios/Open In Thunder/Resources/manifest-new.json"
inSection=false
fi
if [[ $line == *"*://"* ]]; then
if [ "$inSection" = true ]; then
continue
fi
fi
echo "$line" >> "ios/Open In Thunder/Resources/manifest-new.json"
done < "ios/Open In Thunder/Resources/manifest.json"
mv "ios/Open In Thunder/Resources/manifest-new.json" "ios/Open In Thunder/Resources/manifest.json"
# Generates the new content.js with the updated instances
inSection=false
while IFS= read -r line; do
if [[ $line == *"let instances = ["* ]]; then
inSection=true
fi
if [[ $line == "];" ]]; then
printf "$safariContentInstances" >> "ios/Open In Thunder/Resources/content-new.js"
inSection=false
fi
if [[ $line == *" \""* ]]; then
if [ "$inSection" = true ]; then
continue
fi
fi
echo "$line" >> "ios/Open In Thunder/Resources/content-new.js"
done < "ios/Open In Thunder/Resources/content.js"
mv "ios/Open In Thunder/Resources/content-new.js" "ios/Open In Thunder/Resources/content.js"
# Clean up temporary txt files
rm lemmy-instances.txt piefed-instances.txt instances.txt
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6.0.1
with:
commit-message: Update instances
title: Update instances
body: This PR is updating `instances.dart`, `AndroidManifest.xml`, `manifest.json` and `content.js` with the latest list of Lemmy and PieFed instances retrieved from fediverse.observer.
branch: update-instances
delete-branch: true
author: GitHub <noreply@github.com>