diff --git a/package.json b/package.json index fe5c8b12f..57fec743a 100644 --- a/package.json +++ b/package.json @@ -7,11 +7,13 @@ "android:reverse": "adb reverse tcp:8081 tcp:8081 && adb reverse tcp:9875 tcp:9875", "android:sendApk": "./scripts/android/sendApk.sh", "build": "node scripts/build/build.js", + "clean": "./scripts/reactNativeCleanBuild.sh", "commit": "git show --format=\"%h\" --no-patch", "db": "ts-node scripts/migrations/db.ts", "lint": "eslint --max-warnings 2500", "lint:errors": "eslint --quiet", "ios": "expo run:ios", + "ios:checkBuildDeps": "./scripts/ios/checkBuildDeps.sh", "run:ios": "EXPO_ENV=dev expo run:ios", "postinstall": "patch-package && node scripts/wasm.js && husky install && cross-os postinstall", "start": "EXPO_ENV=dev expo start --scheme converse-dev", diff --git a/scripts/ios/checkBuildDeps.sh b/scripts/ios/checkBuildDeps.sh new file mode 100755 index 000000000..eb07ba298 --- /dev/null +++ b/scripts/ios/checkBuildDeps.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +# ANSI color codes +GREEN='\033[0;32m' +RED='\033[0;31m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color +BOLD='\033[1m' + +# Function to check if a command exists +command_exists() { + command -v "$1" >/dev/null 2>&1 +} + +# Function to print status +print_status() { + local name=$1 + local version=$2 + local path=$3 + local status=$4 + + printf "${BOLD}%-12s${NC}" "$name" + + if [ "$status" = "OK" ]; then + printf "${GREEN}✓${NC} " + else + printf "${RED}✗${NC} " + fi + + printf "%-45s" "$version" + echo "$path" +} + +echo -e "\n${BOLD}Checking iOS build dependencies...${NC}\n" + +# Check Ruby +if command_exists ruby; then + RUBY_VERSION=$(ruby -v) + RUBY_PATH=$(which ruby) + print_status "RUBY" "$RUBY_VERSION" "$RUBY_PATH" "OK" +else + print_status "RUBY" "Not installed" "N/A" "ERROR" +fi + +# Check Bundler +if command_exists bundle; then + BUNDLER_VERSION=$(bundle -v) + BUNDLER_PATH=$(which bundle) + print_status "BUNDLER" "$BUNDLER_VERSION" "$BUNDLER_PATH" "OK" +else + print_status "BUNDLER" "Not installed" "N/A" "ERROR" +fi + +# Check CocoaPods +if command_exists pod; then + POD_VERSION=$(pod --version) + POD_PATH=$(which pod) + print_status "COCOAPODS" "v$POD_VERSION" "$POD_PATH" "OK" +else + print_status "COCOAPODS" "Not installed" "N/A" "ERROR" +fi + +# Print Gem environment +echo -e "\n${BOLD}Ruby Gem Environment:${NC}" +echo "GEM HOME: $(gem env home)" +echo "GEM PATH: $(gem env gempath)" + +# Check Gemfile configuration +if [ -f "ios/Gemfile" ]; then + echo -e "\n${BOLD}Gemfile Configuration:${NC}" + echo "Ruby Version: $(grep "ruby '" ios/Gemfile | cut -d"'" -f2)" + echo "Bundler Version: $(grep "bundler" ios/Gemfile | grep -v "#" | head -n1)" +else + echo -e "\n${RED}Warning: ios/Gemfile not found${NC}" +fi + +echo -e "\nDone checking dependencies.\n" \ No newline at end of file diff --git a/scripts/reactNativeCleanBuild.sh b/scripts/reactNativeCleanBuild.sh new file mode 100755 index 000000000..65356ad51 --- /dev/null +++ b/scripts/reactNativeCleanBuild.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +############################################################### +# Quickly cleans and rebuilds a React Native project by moving +# build directories to Trash and reinstalling dependencies. +# +# Uses AppleScript for fast native Trash operations, similar +# to Cmd+Delete in Finder. This is much faster than rm -rf. +# +# Side Effects: +# - Moves node_modules, ios/build, ios/Pods to Trash +# - Runs yarn install +# - Runs pod install for iOS +# - Prints status messages to terminal +# +# Example: +# In terminal from project root: +# ./scripts/reactNativeCleanBuild.sh +# +# Output: +# Moving node_modules to trash... +# Moving ios/build to trash... +# Moving ios/Pods to trash... +# Running yarn install... +# Running pod install... +# Clean and rebuild complete! +############################################################### + +echo "Moving node_modules to trash..." +osascript -e "tell app \"Finder\" to delete POSIX file \"$PWD/node_modules\"" + +echo "Moving ios/build to trash..." +osascript -e "tell app \"Finder\" to delete POSIX file \"$PWD/ios/build\"" + +echo "Moving ios/Pods to trash..." +osascript -e "tell app \"Finder\" to delete POSIX file \"$PWD/ios/Pods\"" + +echo "Running yarn install..." +yarn install + +echo "Running pod install..." +cd ios && pod install && cd .. + +echo "Clean and rebuild complete!" \ No newline at end of file