Highlight last tapped post on feed (#1525) #613
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 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' > lemmy-instances.txt.tmp | |
# Combine the output with the existing instances.txt file. | |
sort lemmy-instances.txt lemmy-instances.txt.tmp | uniq -i > lemmy-instances.txt | |
# Delete the temp file | |
rm lemmy-instances.txt.tmp | |
# Convert the text file to a dart file | |
cat << EOF > lib/instances.dart | |
const List<String> instances = [ | |
$(awk '{ print " \047"$0"\047," }' lemmy-instances.txt) | |
]; | |
EOF | |
# Put the instances in the Android manifest file | |
manifestInstances="$(awk '{ print " <data android:host=\""$0"\" />" }' lemmy-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 < lemmy-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 < lemmy-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" | |
- 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 `lemmy-instances.txt`, `instances.dart`, `AndroidManifest.xml`, `manifest.json` and `content.js` with the latest list of instances retrieved from fediverse.observer. | |
branch: update-instances | |
delete-branch: true | |
author: GitHub <noreply@github.com> |