Files
Repo/update.sh
2025-05-03 13:04:52 +02:00

119 lines
4.9 KiB
Bash
Executable File

#!/bin/bash
cd /var/www/html || exit 1
# Fix permissions on config.yml if it exists
if [ -f config.yml ]; then
chmod 0600 config.yml
fi
# Create repo icon directory if it doesn't exist
mkdir -p repo/icons
# Create a basic repo icon if missing
if [ ! -f repo/icons/icon.png ]; then
echo "Creating placeholder repo icon..."
# Try to download a simple icon
wget -q -O repo/icons/icon.png "https://f-droid.org/assets/favicon-256.png" || echo "Could not create icon, please add one manually"
fi
# Function to extract version from APK (if aapt is available)
get_version() {
apk_file=$1
if command -v aapt >/dev/null 2>&1; then
version=$(aapt dump badging "$apk_file" 2>/dev/null | grep versionName | awk -F"'" '{print $4}')
echo "$version"
else
echo "unknown (aapt not installed)"
fi
}
# Function to download and update only if changed
update_app() {
app_name=$1
app_url=$2
echo "Processing $app_name..."
# Create temp directory
mkdir -p ./temp
# Download to temp file
wget -q -O "./temp/${app_name}.apk.new" "$app_url"
# Check if download was successful
if [ ! -s "./temp/${app_name}.apk.new" ]; then
echo " ✗ Failed to download $app_name, skipping"
rm -f "./temp/${app_name}.apk.new"
return
fi
# Extract version info from the new APK
new_version=$(get_version "./temp/${app_name}.apk.new")
echo " Downloaded version: $new_version"
# Check if app exists and if it's different
if [ -f "./repo/${app_name}.apk" ]; then
# Extract version info from the existing APK
current_version=$(get_version "./repo/${app_name}.apk")
echo " Current version: $current_version"
# Compare files (binary comparison to be absolutely sure)
if ! cmp -s "./temp/${app_name}.apk.new" "./repo/${app_name}.apk"; then
echo "$app_name: New version detected ($current_version$new_version), updating..."
mv "./temp/${app_name}.apk.new" "./repo/${app_name}.apk"
touch -d "$(date +%Y-%m-%d)" "./repo/${app_name}.apk"
else
echo "$app_name: No changes detected (version $current_version), keeping existing version"
rm "./temp/${app_name}.apk.new"
fi
else
echo "$app_name: File does not exist yet, adding version $new_version..."
mv "./temp/${app_name}.apk.new" "./repo/${app_name}.apk"
touch -d "$(date +%Y-%m-%d)" "./repo/${app_name}.apk"
fi
}
# Make sure archive directory exists
mkdir -p archive/
# Process each app
update_app "YouTube" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/youtube-revanced-extended.apk"
update_app "Reddit" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/reddit-revanced-extended.apk"
update_app "SoundCloud" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/soundcloud-revanced.apk"
update_app "Duolingo" "https://git.felo.gg/FeloStore/Data/releases/download/latest/duolingo.apk"
update_app "GoogleNews" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/googlenews-arm64-v8a-revanced.apk"
update_app "Instagram" "https://git.felo.gg/FeloStore/Data/releases/download/latest/instagram.apk"
update_app "Twitter" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/twitter-stable-piko.apk"
update_app "NovaLauncher" "https://github.com/FiorenMas/Revanced-And-Revanced-Extended-Non-Root/releases/download/all/nova-launcher-indrastorms.apk"
update_app "Busuu" "https://git.felo.gg/FeloStore/Data/releases/download/latest/busuu.apk"
update_app "Quizlet" "https://git.felo.gg/FeloStore/Data/releases/download/latest/quizlet.apk"
update_app "Telegram" "https://git.felo.gg/FeloStore/Data/releases/download/latest/telegram.apk"
# Clean up temp directory
rm -rf ./temp
# Check for archived APKs and restore them to repo
echo "Checking for archived APKs to restore..."
for app in YouTube Reddit SoundCloud Duolingo GoogleNews Instagram Twitter NovaLauncher Busuu Quizlet Telegram; do
if [ -f "archive/${app}.apk" ]; then
echo "Restoring ${app}.apk from archive to repo"
cp "archive/${app}.apk" "repo/${app}.apk"
touch -d "$(date +%Y-%m-%d)" "repo/${app}.apk"
fi
done
# Add option to config to accept unsigned APKs
if [ -f config.yml ]; then
if ! grep -q "allow_disabled_algorithms:" config.yml; then
echo "allow_disabled_algorithms: True" >> config.yml
fi
fi
# Update F-Droid repository with only supported flags
echo "Updating F-Droid repository..."
fdroid update --allow-disabled-algorithms --use-date-from-apk --create-metadata --clean
# Final update to ensure everything is included
echo "Running final update with simpler flags..."
fdroid update --allow-disabled-algorithms --use-date-from-apk --nosign
echo "Update complete!"