Files
Repo/update.sh
2025-05-03 13:24:01 +02:00

119 lines
5.0 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
# 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 first with nosign to prevent signature verification issues
echo "Updating F-Droid repository with nosign first..."
fdroid update --allow-disabled-algorithms --use-date-from-apk --nosign
# Now 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
# Final update to ensure everything is included
echo "Running final update with metadata creation..."
fdroid update --allow-disabled-algorithms --use-date-from-apk --create-metadata --clean --nosign
echo "Update complete!"