Improve Xcode CLI Tools installation flow
- Add interactive waiting for Xcode CLI tools installation
- User can press Enter after installation completes to continue
- For non-interactive execution: auto-detect installation completion
- Add timeout protection (10 minutes max wait)
- Add retry mechanism with verification
- Better user guidance and progress feedback
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
			
			
This commit is contained in:
		
							parent
							
								
									faa6c58d90
								
							
						
					
					
						commit
						661d86d17a
					
				
							
								
								
									
										57
									
								
								install.sh
									
									
									
									
									
								
							
							
						
						
									
										57
									
								
								install.sh
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -59,8 +59,61 @@ install_xcode_tools() {
 | 
			
		|||
    else
 | 
			
		||||
        print_message "📥 安装 Xcode Command Line Tools..." "$YELLOW"
 | 
			
		||||
        xcode-select --install
 | 
			
		||||
        print_message "⏳ 请在弹出的窗口中完成安装,然后重新运行此脚本" "$YELLOW"
 | 
			
		||||
        exit 0
 | 
			
		||||
        
 | 
			
		||||
        # 检测是否为交互式执行
 | 
			
		||||
        if [[ -t 0 ]]; then
 | 
			
		||||
            # 交互式执行 - 等待用户确认
 | 
			
		||||
            print_message "⏳ Xcode Command Line Tools 安装进行中..." "$YELLOW"
 | 
			
		||||
            print_message "   1. 请在弹出的对话框中点击 '安装'" "$YELLOW"
 | 
			
		||||
            print_message "   2. 等待安装完成(通常需要几分钟)" "$YELLOW"
 | 
			
		||||
            print_message "   3. 安装完成后按回车键继续..." "$YELLOW"
 | 
			
		||||
            echo ""
 | 
			
		||||
            
 | 
			
		||||
            # 等待用户确认安装完成
 | 
			
		||||
            read -p "⚡ 安装完成后请按回车键继续..." -r
 | 
			
		||||
            echo ""
 | 
			
		||||
        else
 | 
			
		||||
            # 非交互式执行 - 自动等待
 | 
			
		||||
            print_message "⏳ 等待 Xcode Command Line Tools 安装完成..." "$YELLOW"
 | 
			
		||||
            print_message "   正在自动检测安装状态..." "$YELLOW"
 | 
			
		||||
            
 | 
			
		||||
            # 自动等待安装完成(最多等待10分钟)
 | 
			
		||||
            local wait_count=0
 | 
			
		||||
            while [[ $wait_count -lt 120 ]]; do
 | 
			
		||||
                if xcode-select -p &>/dev/null; then
 | 
			
		||||
                    print_message "✅ Xcode Command Line Tools 安装完成!" "$GREEN"
 | 
			
		||||
                    return 0
 | 
			
		||||
                fi
 | 
			
		||||
                sleep 5
 | 
			
		||||
                ((wait_count++))
 | 
			
		||||
                if [[ $((wait_count % 12)) -eq 0 ]]; then
 | 
			
		||||
                    print_message "   仍在等待安装完成... ($((wait_count * 5 / 60))分钟)" "$YELLOW"
 | 
			
		||||
                fi
 | 
			
		||||
            done
 | 
			
		||||
            
 | 
			
		||||
            print_message "❌ Xcode Command Line Tools 安装超时" "$RED"
 | 
			
		||||
            print_message "   请手动完成安装后重新运行脚本" "$RED"
 | 
			
		||||
            exit 1
 | 
			
		||||
        fi
 | 
			
		||||
        
 | 
			
		||||
        # 再次验证安装是否成功
 | 
			
		||||
        local retry_count=0
 | 
			
		||||
        while [[ $retry_count -lt 3 ]]; do
 | 
			
		||||
            if xcode-select -p &>/dev/null; then
 | 
			
		||||
                print_message "✅ Xcode Command Line Tools 安装成功!" "$GREEN"
 | 
			
		||||
                return 0
 | 
			
		||||
            else
 | 
			
		||||
                print_message "⚠️  检测到 Xcode Command Line Tools 尚未安装完成" "$YELLOW"
 | 
			
		||||
                read -p "   请等待安装完成后按回车键重试... " -r
 | 
			
		||||
                echo ""
 | 
			
		||||
                ((retry_count++))
 | 
			
		||||
            fi
 | 
			
		||||
        done
 | 
			
		||||
        
 | 
			
		||||
        # 如果多次重试仍未成功,提示用户
 | 
			
		||||
        print_message "❌ Xcode Command Line Tools 安装验证失败" "$RED"
 | 
			
		||||
        print_message "   请确保安装已完成,或手动验证:xcode-select -p" "$RED"
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user