#!/bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
print_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
print_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
print_error() { echo -e "${RED}[ERROR]${NC} $1"; }
main() {
echo "========================================"
echo "Opencode Hybrid Mode Build Script"
echo "========================================"
echo ""
BUILD_ARGS=""
PUSH=0
while [[ $# -gt 0 ]]; do
case $1 in
--no-cache) BUILD_ARGS="--no-cache"; shift ;;
--push) PUSH=1; shift ;;
--help)
echo "Usage: $0 [options]"
echo " --no-cache Build without cache"
echo " --push Push to Docker Hub"
echo " --help Show help"
exit 0 ;;
*) echo "Unknown: $1"; exit 1 ;;
esac
done
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
echo "Step 1/4: Clean old image (optional)"
read -p "Delete old? (y/N): " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
docker rmi opencode-hybrid:latest 2>/dev/null
print_info "Old image deleted"
fi
echo "Step 2/4: Build Docker image"
docker build $BUILD_ARGS -f Dockerfile -t opencode-hybrid:latest .
if [ $? -ne 0 ]; then
print_error "Build failed!"
exit 1
fi
print_info "Build successful!"
echo "Step 3/4: Verify image"
docker images opencode-hybrid:latest
print_info "Verification successful"
if [ "$PUSH" -eq 1 ]; then
echo "Step 4/4: Push to Docker Hub"
docker login
docker push opencode-hybrid:latest
print_info "Push successful"
else
echo "Step 4/4: Done"
fi
echo ""
echo "========================================"
print_info "Build complete!"
echo "========================================"
echo ""
echo "Usage:"
echo " docker-compose up -d"
echo " docker exec -it opencode-cli bash"
echo " OpenCode Desktop: http://localhost:3000"
echo ""
}
main "$@"