You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							62 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							62 lines
						
					
					
						
							1.8 KiB
						
					
					
				| #!/bin/bash | |
| # clean-android.sh | |
| # Author: Matthew Raymer | |
| # Date: 2025-08-19 | |
| # Description: Clean Android app with timeout protection to prevent hanging | |
| # This script safely uninstalls the TimeSafari app from connected Android devices | |
| # with a 30-second timeout to prevent indefinite hanging. | |
| 
 | |
| # Exit on any error | |
| set -e | |
| 
 | |
| # Source common utilities | |
| source "$(dirname "$0")/common.sh" | |
| 
 | |
| # Function to implement timeout for systems without timeout command | |
| timeout_command() { | |
|     local timeout_seconds="$1" | |
|     shift | |
|      | |
|     # Check if timeout command exists | |
|     if command -v timeout &> /dev/null; then | |
|         timeout "$timeout_seconds" "$@" | |
|     else | |
|         # Fallback for systems without timeout (like macOS) | |
|         # Use perl to implement timeout | |
|         perl -e ' | |
|             eval { | |
|                 local $SIG{ALRM} = sub { die "timeout" }; | |
|                 alarm shift; | |
|                 system @ARGV; | |
|                 alarm 0; | |
|             }; | |
|             if ($@) { exit 1; } | |
|         ' "$timeout_seconds" "$@" | |
|     fi | |
| } | |
| 
 | |
| log_info "Starting Android cleanup process..." | |
| 
 | |
| # Check if adb is available | |
| if ! command -v adb &> /dev/null; then | |
|     log_error "adb command not found. Please install Android SDK Platform Tools." | |
|     exit 1 | |
| fi | |
| 
 | |
| # Check for connected devices | |
| log_info "Checking for connected Android devices..." | |
| if adb devices | grep -q 'device$'; then | |
|     log_info "Android device(s) found. Attempting to uninstall app..." | |
|      | |
|     # Try to uninstall with timeout | |
|     if timeout_command 30 adb uninstall app.timesafari.app; then | |
|         log_success "Successfully uninstalled TimeSafari app" | |
|     else | |
|         log_warn "Uninstall failed or timed out after 30 seconds" | |
|         log_info "This is normal if the app wasn't installed or device is unresponsive" | |
|     fi | |
| else | |
|     log_info "No Android devices connected. Skipping uninstall." | |
| fi | |
| 
 | |
| log_success "Android cleanup process completed"
 | |
| 
 |