- Introduced support for file attachments in test inputs using the `file://` protocol, allowing images, audio, and documents to be loaded and converted to appropriate formats. - Updated `ParseInput` and related functions to handle file references, ensuring seamless integration of file content into messages. - Enhanced error handling and path resolution for file loading, considering both relative paths and the `YAO_ROOT` environment variable. - Expanded documentation to include examples of file attachments and their usage in test cases, improving clarity for users.
61 lines
1.9 KiB
Bash
Executable file
61 lines
1.9 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# yao-dev - Run yao from source for real-time debugging
|
|
# Uses go -C to compile from source while keeping current directory as app root
|
|
|
|
# Get the real path of this script (resolve symlinks)
|
|
SCRIPT_PATH="${BASH_SOURCE[0]}"
|
|
while [ -L "$SCRIPT_PATH" ]; do
|
|
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)"
|
|
SCRIPT_PATH="$(readlink "$SCRIPT_PATH")"
|
|
# If the link is relative, resolve it relative to the directory
|
|
[[ "$SCRIPT_PATH" != /* ]] && SCRIPT_PATH="$SCRIPT_DIR/$SCRIPT_PATH"
|
|
done
|
|
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)"
|
|
|
|
# YAO source directory is the parent of bin/
|
|
YAO_SOURCE_DIR="$(dirname "$SCRIPT_DIR")"
|
|
|
|
if [ ! -d "$YAO_SOURCE_DIR" ]; then
|
|
echo "Error: yao source directory not found at $YAO_SOURCE_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "$YAO_SOURCE_DIR/go.mod" ]; then
|
|
echo "Error: go.mod not found in $YAO_SOURCE_DIR, not a valid yao source directory"
|
|
exit 1
|
|
fi
|
|
|
|
# Find app root by looking for app.yao in current directory or parent directories
|
|
find_app_root() {
|
|
local dir="$(pwd)"
|
|
while [ "$dir" != "/" ]; do
|
|
if [ -f "$dir/app.yao" ] || [ -f "$dir/app.json" ] || [ -f "$dir/app.jsonc" ]; then
|
|
echo "$dir"
|
|
return 0
|
|
fi
|
|
dir="$(dirname "$dir")"
|
|
done
|
|
# If not found, use current directory as fallback
|
|
pwd
|
|
}
|
|
|
|
# Set YAO_ROOT to app root directory
|
|
export YAO_ROOT="$(find_app_root)"
|
|
|
|
# Convert relative file paths in arguments to absolute paths
|
|
# This is needed because go -C changes the working directory
|
|
ARGS=()
|
|
for arg in "$@"; do
|
|
# Check if it looks like a relative path
|
|
if [[ "$arg" == ./* ]] || [[ "$arg" == ../* ]]; then
|
|
# Always convert to absolute path based on current directory
|
|
ARGS+=("$(pwd)/${arg#./}")
|
|
else
|
|
ARGS+=("$arg")
|
|
fi
|
|
done
|
|
|
|
# Use go -C to run from source directory while staying in current directory
|
|
exec go -C "$YAO_SOURCE_DIR" run . "${ARGS[@]}"
|
|
|