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"
							 | 
						|
								
							 |