| | #!/bin/bash |
| | |
| | |
| |
|
| | OUTPUT_DIR="$HOME/Desktop/BSKL_Diagnostic_$(date +%Y%m%d_%H%M%S)" |
| | mkdir -p "$OUTPUT_DIR" |
| |
|
| | echo "=== BSKL AIColorMatch Diagnostic Tool ===" | tee "$OUTPUT_DIR/diagnostic.txt" |
| | echo "Date: $(date)" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | echo "" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| |
|
| | |
| | echo "=== macOS Version ===" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | sw_vers | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | echo "" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| |
|
| | |
| | echo "=== Mac Architecture ===" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | uname -m | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | echo "" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| |
|
| | |
| | echo "=== Render Engine Version ===" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | RE_VERSION_FILE="/Library/Application Support/BSKL/Render Engine/Python 3.10/version.txt" |
| | if [ -f "$RE_VERSION_FILE" ]; then |
| | echo "Version: $(cat "$RE_VERSION_FILE")" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | else |
| | echo "β Render Engine not found" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | fi |
| | echo "" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| |
|
| | |
| | echo "=== AIM Server Process ===" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | AIM_PROCESS=$(ps aux | grep -i "AI MACHINE Server" | grep -v grep) |
| | if [ -n "$AIM_PROCESS" ]; then |
| | echo "β
AIM Server is running" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | echo "$AIM_PROCESS" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | else |
| | echo "β AIM Server is NOT running" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | fi |
| | echo "" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| |
|
| | |
| | echo "=== Server Port (7007) ===" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | PORT_CHECK=$(lsof -i :7007 2>/dev/null | head -5) |
| | if [ -n "$PORT_CHECK" ]; then |
| | echo "β
Port 7007 is in use:" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | echo "$PORT_CHECK" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | else |
| | echo "β Port 7007 is not in use (server not running?)" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | fi |
| | echo "" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| |
|
| | |
| | echo "=== AIM Server Lock File ===" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | LOCK_FILE="$HOME/.AI MACHINE Server.lock" |
| | if [ -f "$LOCK_FILE" ]; then |
| | echo "Lock file exists: $LOCK_FILE" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | else |
| | echo "No lock file found" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | fi |
| | echo "" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| |
|
| | |
| | echo "=== AIM Settings ===" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | SETTINGS_FILE="$HOME/.aim/settings.json" |
| | if [ -f "$SETTINGS_FILE" ]; then |
| | echo "Settings file:" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | cat "$SETTINGS_FILE" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | cp "$SETTINGS_FILE" "$OUTPUT_DIR/" |
| | else |
| | echo "No settings file found at $SETTINGS_FILE" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | fi |
| | echo "" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| |
|
| | |
| | echo "=== AIM Server Files ===" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | AIM_SERVER_DIR="/Library/Application Support/BSKL/AI MACHINE/Server" |
| | if [ -d "$AIM_SERVER_DIR" ]; then |
| | ls -la "$AIM_SERVER_DIR"/*.so 2>/dev/null | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | else |
| | echo "β AIM Server directory not found" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | fi |
| | echo "" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| |
|
| | |
| | echo "=== AI MACHINE Plugins ===" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | PLUGINS_DIR="/Library/Application Support/BSKL/AI MACHINE/Plugins" |
| | if [ -d "$PLUGINS_DIR" ]; then |
| | for plugin_dir in "$PLUGINS_DIR"/*/; do |
| | if [ -d "$plugin_dir" ]; then |
| | plugin_name=$(basename "$plugin_dir") |
| | echo "Plugin: $plugin_name" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | |
| | for so_file in "$plugin_dir"*.so; do |
| | if [ -f "$so_file" ]; then |
| | size=$(ls -lh "$so_file" | awk '{print $5}') |
| | arch=$(file "$so_file" | grep -o "arm64\|x86_64" | head -1) |
| | echo " $(basename "$so_file") ($size, $arch)" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | fi |
| | done |
| | fi |
| | done |
| | else |
| | echo "β AI MACHINE Plugins directory not found" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | fi |
| | echo "" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| |
|
| | |
| | echo "=== Adobe BSKL Plugins ===" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | ADOBE_PLUGINS_DIR="/Library/Application Support/Adobe/Common/Plug-ins/7.0/MediaCore/BSKL" |
| | if [ -d "$ADOBE_PLUGINS_DIR" ]; then |
| | for plugin in "$ADOBE_PLUGINS_DIR"/*.plugin; do |
| | if [ -d "$plugin" ]; then |
| | plugin_name=$(basename "$plugin" .plugin) |
| | plist="$plugin/Contents/Info.plist" |
| | if [ -f "$plist" ]; then |
| | version=$(defaults read "$plist" CFBundleShortVersionString 2>/dev/null || echo "n/a") |
| | build=$(defaults read "$plist" CFBundleVersion 2>/dev/null || echo "n/a") |
| | sdk=$(defaults read "$plist" DTPlatformVersion 2>/dev/null || echo "n/a") |
| | xcode=$(defaults read "$plist" DTXcode 2>/dev/null || echo "n/a") |
| | echo "Plugin: $plugin_name" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | echo " Version: $version (build: $build)" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | echo " SDK: macOS $sdk, Xcode: $xcode" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | else |
| | echo "Plugin: $plugin_name (no plist)" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | fi |
| | fi |
| | done |
| | else |
| | echo "β Adobe BSKL plugins directory not found" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | fi |
| | echo "" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| |
|
| | |
| | echo "=== NumPy Architecture ===" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | NUMPY_FILE="/Library/Application Support/BSKL/Render Engine/Python 3.10/lib/python3.10/site-packages/numpy/core/_multiarray_umath.cpython-310-darwin.so" |
| | if [ -f "$NUMPY_FILE" ]; then |
| | arch=$(file "$NUMPY_FILE" | grep -o "arm64\|x86_64" | head -1) |
| | echo "NumPy architecture: $arch" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | else |
| | echo "β NumPy not found" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | fi |
| | echo "" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| |
|
| | |
| | echo "=== Server Connection Test ===" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | CURL_RESULT=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 3 http://127.0.0.1:7007/ 2>/dev/null) |
| | if [ "$CURL_RESULT" = "200" ] || [ "$CURL_RESULT" = "404" ] || [ "$CURL_RESULT" = "422" ]; then |
| | echo "β
Server responding (HTTP $CURL_RESULT)" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | else |
| | echo "β Server not responding (HTTP $CURL_RESULT)" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | fi |
| | echo "" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| |
|
| | |
| | echo "=== Collecting Logs ===" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| |
|
| | |
| | BSKL_LOGS="/Library/Application Support/BSKL/Logs" |
| | if [ -d "$BSKL_LOGS" ]; then |
| | echo "Found logs:" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | ls -la "$BSKL_LOGS"/*.log 2>/dev/null | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | cp "$BSKL_LOGS"/*.log "$OUTPUT_DIR/" 2>/dev/null |
| | echo "β
Copied BSKL logs" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | else |
| | echo "β BSKL logs directory not found" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | fi |
| |
|
| | |
| | echo "" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | echo "=== Creating ZIP Archive ===" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| |
|
| | ZIP_FILE="$HOME/Desktop/BSKL_Diagnostic_$(date +%Y%m%d_%H%M%S).zip" |
| | cd "$HOME/Desktop" |
| | zip -r "$ZIP_FILE" "$(basename $OUTPUT_DIR)" > /dev/null 2>&1 |
| |
|
| | if [ -f "$ZIP_FILE" ]; then |
| | |
| | rm -rf "$OUTPUT_DIR" |
| |
|
| | echo "" |
| | echo "==========================================" |
| | echo "β
Done! Please send this file to support:" |
| | echo "$ZIP_FILE" |
| | echo "==========================================" |
| | else |
| | echo "β Failed to create ZIP archive" | tee -a "$OUTPUT_DIR/diagnostic.txt" |
| | echo "Diagnostic folder: $OUTPUT_DIR" |
| | fi |
| |
|