diff --git a/INSTALL.sh b/INSTALL.sh new file mode 100644 index 0000000..2c7504f --- /dev/null +++ b/INSTALL.sh @@ -0,0 +1,179 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +############################################# +# RAG SYSTEM SAFE INSTALLER +# Idempotent • Non-destructive • Production-safe +############################################# + +BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +cd "$BASE_DIR" + +echo "======================================" +echo "RAG System Installer" +echo "Location: $BASE_DIR" +echo "======================================" + +############################################# +# Utility +############################################# + +fail() { + echo "ERROR: $1" + exit 1 +} + +info() { + echo "→ $1" +} + +command_exists() { + command -v "$1" >/dev/null 2>&1 +} + +############################################# +# 1. Project Validation +############################################# + +[ -f "composer.json" ] || fail "composer.json not found. Run installer from project root." + +[ -f "bin/console" ] || fail "Symfony bin/console not found." + +############################################# +# 2. PHP Check +############################################# + +command_exists php || fail "PHP not installed." + +PHP_VERSION=$(php -r "echo PHP_VERSION;") +PHP_MAJOR=$(php -r "echo PHP_MAJOR_VERSION;") +PHP_MINOR=$(php -r "echo PHP_MINOR_VERSION;") + +if [ "$PHP_MAJOR" -lt 8 ] || { [ "$PHP_MAJOR" -eq 8 ] && [ "$PHP_MINOR" -lt 2 ]; }; then + fail "PHP 8.2+ required. Current: $PHP_VERSION" +fi + +info "PHP version OK ($PHP_VERSION)" + +############################################# +# 3. Composer Handling (local-safe) +############################################# + +if command_exists composer; then + COMPOSER_BIN="composer" +else + info "Composer not found globally → installing locally (project only)" + curl -sS https://getcomposer.org/installer | php >/dev/null + mv composer.phar composer + chmod +x composer + COMPOSER_BIN="$BASE_DIR/composer" +fi + +info "Installing PHP dependencies (safe)…" +$COMPOSER_BIN install --no-interaction --prefer-dist --optimize-autoloader + +############################################# +# 4. Environment File (non-destructive) +############################################# + +if [ ! -f ".env" ]; then + if [ -f ".env.example" ]; then + info "Creating .env from .env.example" + cp .env.example .env + else + info "No .env.example found → skipping" + fi +else + info ".env already exists → preserved" +fi + +############################################# +# 5. Runtime Directories (safe) +############################################# + +info "Ensuring runtime directories exist" + +mkdir -p var +mkdir -p var/log +mkdir -p var/run +mkdir -p var/vector + +############################################# +# 6. Database Migration (safe & conditional) +############################################# + +if php bin/console list | grep -q doctrine:migrations:migrate; then + info "Running database migrations (safe)" + php bin/console doctrine:migrations:migrate --no-interaction || \ + info "Migration skipped or already applied" +else + info "Doctrine migrations not detected → skipping" +fi + +############################################# +# 7. Python Virtual Environment (idempotent) +############################################# + +command_exists python3 || fail "python3 not installed." + +VENV_DIR="$BASE_DIR/.venv" + +if [ ! -d "$VENV_DIR" ]; then + info "Creating Python virtual environment" + python3 -m venv "$VENV_DIR" +else + info "Using existing Python virtual environment" +fi + +PIP="$VENV_DIR/bin/pip" + +info "Upgrading pip (safe)" +"$PIP" install --upgrade pip >/dev/null + +if [ -f "vector/requirements.txt" ]; then + info "Installing Python dependencies" + "$PIP" install -r vector/requirements.txt +else + info "No vector/requirements.txt found → skipping" +fi + +############################################# +# 8. Vector Command Validation +############################################# + +if php bin/console list | grep -q mto:agent:vector:control; then + info "Vector control command detected" +else + info "Vector control command not found (may be optional)" +fi + +############################################# +# 9. Index Validation (non-destructive) +############################################# + +if [ -f "var/vector/index.ndjson" ]; then + info "index.ndjson detected" +else + info "No index.ndjson yet (normal for fresh install)" +fi + +############################################# +# 10. Final Status +############################################# + +echo "" +echo "======================================" +echo "INSTALLATION COMPLETE" +echo "======================================" +echo "" +echo "You may now:" +echo "" +echo " php -S 127.0.0.1:8000 -t public" +echo "" +echo "Vector service:" +echo "" +echo " php bin/console mto:agent:vector:control --reload" +echo "" +echo "Re-running this installer is safe." +echo "" +echo "======================================" \ No newline at end of file diff --git a/templates/admin/ingest_profile/create.html.twig b/templates/admin/ingest_profile/create.html.twig index fed0034..6de92fa 100644 --- a/templates/admin/ingest_profile/create.html.twig +++ b/templates/admin/ingest_profile/create.html.twig @@ -100,9 +100,6 @@