add ios social-app
This commit is contained in:
183
ios/setup.zsh
Executable file
183
ios/setup.zsh
Executable file
@@ -0,0 +1,183 @@
|
||||
#!/bin/zsh
|
||||
|
||||
cd ${0:a:h}
|
||||
|
||||
# iOS Social App Patch Setup Script
|
||||
# Usage: ./ios/setup.zsh [patch|reset]
|
||||
|
||||
# Arrays for patch management
|
||||
typeset -a FAILED_PATCHES
|
||||
|
||||
# Patch file lists for iOS
|
||||
typeset -a PATCH_FILES_IOS
|
||||
PATCH_FILES_IOS=(
|
||||
"001-social-app-ios-config.patch"
|
||||
"002-social-app-ios-lib.patch"
|
||||
"003-social-app-ios-view.patch"
|
||||
"004-social-app-ios-core.patch"
|
||||
"005-social-app-ios-screens.patch"
|
||||
"006-social-app-ios-shell.patch"
|
||||
"007-social-app-ios-misc.patch"
|
||||
"008-social-app-ios-policy-tos-error.patch"
|
||||
"009-social-app-ios-license.patch"
|
||||
"010-social-app-ios-remove-contact-support.patch"
|
||||
"011-social-app-ios-splash-license-footer.patch"
|
||||
"012-social-app-ios-settings-about-help.patch"
|
||||
"013-social-app-ios-settings-remove-help.patch"
|
||||
"019-social-app-ios-entitlements-plugin.patch"
|
||||
"020-social-app-ios-bypass-age-assurance.patch"
|
||||
"021-social-app-ios-clean-feed.patch"
|
||||
)
|
||||
|
||||
function ios-env() {
|
||||
d=${0:a:h:h}
|
||||
patching_dir=${0:a:h}/patching
|
||||
target_dir=$d/repos/social-app
|
||||
}
|
||||
|
||||
# Common patch function with status detection
|
||||
function apply-patch() {
|
||||
local patch_name=$1
|
||||
local target_dir=$2
|
||||
local patch_file=$3
|
||||
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo "📝 Patch: ${patch_name}"
|
||||
echo " Target: ${target_dir}"
|
||||
echo " File: ${patch_file}"
|
||||
|
||||
pushd ${target_dir} > /dev/null
|
||||
|
||||
# Check if patch is already applied (reverse dry-run succeeds)
|
||||
if patch -f --dry-run -p1 -R < ${patch_file} > /dev/null 2>&1; then
|
||||
echo "✅ Already applied - skipping"
|
||||
popd > /dev/null
|
||||
echo ""
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Check if patch can be applied (forward dry-run succeeds)
|
||||
if patch --dry-run -p1 < ${patch_file} > /dev/null 2>&1; then
|
||||
echo "🔧 Applying patch..."
|
||||
if patch -p1 < ${patch_file}; then
|
||||
echo "✅ Applied successfully"
|
||||
popd > /dev/null
|
||||
echo ""
|
||||
return 0
|
||||
else
|
||||
echo "❌ Failed to apply"
|
||||
FAILED_PATCHES+=("${patch_name} (${patch_file})")
|
||||
popd > /dev/null
|
||||
echo ""
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
echo "⚠️ Cannot apply - file may have been modified"
|
||||
echo " Please check manually"
|
||||
FAILED_PATCHES+=("${patch_name} (${patch_file}) - file modified")
|
||||
popd > /dev/null
|
||||
echo ""
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function show-failed-patches() {
|
||||
if [ ${#FAILED_PATCHES[@]} -eq 0 ]; then
|
||||
echo ""
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo "✅ All patches applied successfully!"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo ""
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo "⚠️ FAILED PATCHES SUMMARY"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo ""
|
||||
echo "The following patches could not be applied:"
|
||||
echo ""
|
||||
for failed_patch in "${FAILED_PATCHES[@]}"; do
|
||||
echo " ❌ ${failed_patch}"
|
||||
done
|
||||
echo ""
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Helper function for applying patches
|
||||
function patch-apply() {
|
||||
local name=$1
|
||||
local patch_file=$2
|
||||
apply-patch "${name}" "$target_dir" "$patching_dir/${patch_file}"
|
||||
}
|
||||
|
||||
# Auto-apply patches from list
|
||||
function ios-patch-apply-all() {
|
||||
for filename in "${PATCH_FILES_IOS[@]}"; do
|
||||
local title="${filename%.*}"
|
||||
patch-apply "$title" "$filename"
|
||||
done
|
||||
}
|
||||
|
||||
# Copy new files that aren't in patches
|
||||
function ios-copy-new-files() {
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo "📁 Copying new files..."
|
||||
|
||||
# Copy all assets from ios/assets/ to repos/social-app/assets/
|
||||
if [ -d "$d/ios/assets" ]; then
|
||||
cp -rf "$d/ios/assets/"* "$target_dir/assets/"
|
||||
echo "✅ Copied all assets (including logo.png, app-icons)"
|
||||
fi
|
||||
|
||||
# Copy License.tsx
|
||||
if [ -f "$patching_dir/License.tsx" ]; then
|
||||
mkdir -p "$target_dir/src/view/screens"
|
||||
cp "$patching_dir/License.tsx" "$target_dir/src/view/screens/License.tsx"
|
||||
echo "✅ Copied License.tsx"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
function ios-setup-clone() {
|
||||
if [ ! -d $target_dir ]; then
|
||||
echo "Error: social-app repository not found at $target_dir"
|
||||
echo "Please run install.zsh first to clone repositories"
|
||||
return 1
|
||||
fi
|
||||
echo "Repository found: $target_dir"
|
||||
}
|
||||
|
||||
function ios-setup-reset() {
|
||||
echo "Resetting social-app repository..."
|
||||
cd $target_dir
|
||||
git stash
|
||||
git checkout .
|
||||
echo "Reset complete"
|
||||
}
|
||||
|
||||
# Main execution
|
||||
ios-env
|
||||
|
||||
case "$1" in
|
||||
patch)
|
||||
ios-setup-clone
|
||||
ios-patch-apply-all
|
||||
ios-copy-new-files
|
||||
show-failed-patches
|
||||
exit
|
||||
;;
|
||||
reset)
|
||||
ios-setup-reset
|
||||
exit
|
||||
;;
|
||||
*)
|
||||
ios-setup-clone
|
||||
ios-patch-apply-all
|
||||
ios-copy-new-files
|
||||
show-failed-patches
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user