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.
		
		
		
		
		
			
		
			
				
					
					
						
							71 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							71 lines
						
					
					
						
							2.1 KiB
						
					
					
				| #!/bin/bash | |
|  | |
| # Copyright (c) 2024, crasowas. | |
| # | |
| # Use of this source code is governed by a MIT-style license | |
| # that can be found in the LICENSE file or at | |
| # https://opensource.org/licenses/MIT. | |
| 
 | |
| set -e | |
| 
 | |
| # Check if at least one argument (project_path) is provided | |
| if [[ "$#" -lt 1 ]]; then | |
|     echo "Usage: $0 <project_path> [options...]" | |
|     exit 1 | |
| fi | |
| 
 | |
| project_path="$1" | |
| 
 | |
| shift | |
| 
 | |
| options=() | |
| install_builds_only=false | |
| 
 | |
| # Check if the `--install-builds-only` option is provided and separate it from other options | |
| for arg in "$@"; do | |
|   if [ "$arg" == "--install-builds-only" ]; then | |
|     install_builds_only=true | |
|   else | |
|     options+=("$arg") | |
|   fi | |
| done | |
| 
 | |
| # Verify Ruby installation | |
| if ! command -v ruby &>/dev/null; then | |
|     echo "Ruby is not installed. Please install Ruby and try again." | |
|     exit 1 | |
| fi | |
| 
 | |
| # Check if xcodeproj gem is installed | |
| if ! gem list -i xcodeproj &>/dev/null; then | |
|     echo "The 'xcodeproj' gem is not installed." | |
|     read -p "Would you like to install it now? [Y/n] " response | |
|     if [[ "$response" =~ ^[Nn]$ ]]; then | |
|         echo "Please install 'xcodeproj' manually and re-run the script." | |
|         exit 1 | |
|     fi | |
|     gem install xcodeproj || { echo "Failed to install 'xcodeproj'."; exit 1; } | |
| fi | |
| 
 | |
| # Convert project path to an absolute path if it is relative | |
| if [[ ! "$project_path" = /* ]]; then | |
|     project_path="$(realpath "$project_path")" | |
| fi | |
| 
 | |
| # Absolute path of the script and the tool's root directory | |
| script_path="$(realpath "$0")" | |
| tool_root_path="$(dirname "$script_path")" | |
| 
 | |
| tool_portable_path="$tool_root_path" | |
| # If the tool's root directory is inside the project path, make the path portable | |
| if [[ "$tool_root_path" == "$project_path"* ]]; then | |
|     # Extract the path of the tool's root directory relative to the project path | |
|     tool_relative_path="${tool_root_path#$project_path}" | |
|     # Formulate a portable path using the `PROJECT_DIR` environment variable provided by Xcode | |
|     tool_portable_path="\${PROJECT_DIR}${tool_relative_path}" | |
| fi | |
| 
 | |
| run_script_content="\"$tool_portable_path/fixer.sh\" ${options[@]}" | |
| 
 | |
| # Execute the Ruby helper script | |
| ruby "$tool_root_path/Helper/xcode_install_helper.rb" "$project_path" "$run_script_content" "$install_builds_only"
 | |
| 
 |