mirror of
https://github.com/arc53/DocsGPT.git
synced 2026-02-22 12:21:39 +00:00
343
setup.ps1
343
setup.ps1
@@ -286,6 +286,301 @@ function Prompt-OllamaOptions {
|
||||
$script:ollama_choice = Read-Host "Choose option (1-2, or b)"
|
||||
}
|
||||
|
||||
# ========================
|
||||
# Advanced Settings Functions
|
||||
# ========================
|
||||
|
||||
# Vector Store configuration
|
||||
function Configure-VectorStore {
|
||||
Write-Host ""
|
||||
Write-ColorText "Vector Store Configuration" -ForegroundColor "White" -Bold
|
||||
Write-ColorText "Choose your vector store:" -ForegroundColor "White"
|
||||
Write-ColorText "1) FAISS (default, local)" -ForegroundColor "Yellow"
|
||||
Write-ColorText "2) Elasticsearch" -ForegroundColor "Yellow"
|
||||
Write-ColorText "3) Qdrant" -ForegroundColor "Yellow"
|
||||
Write-ColorText "4) Milvus" -ForegroundColor "Yellow"
|
||||
Write-ColorText "5) LanceDB" -ForegroundColor "Yellow"
|
||||
Write-ColorText "6) PGVector" -ForegroundColor "Yellow"
|
||||
Write-ColorText "b) Back" -ForegroundColor "Yellow"
|
||||
Write-Host ""
|
||||
$vs_choice = Read-Host "Choose option (1-6, or b)"
|
||||
|
||||
switch ($vs_choice) {
|
||||
"1" {
|
||||
"VECTOR_STORE=faiss" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
Write-ColorText "Vector store set to FAISS." -ForegroundColor "Green"
|
||||
}
|
||||
"2" {
|
||||
"VECTOR_STORE=elasticsearch" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
$elastic_url = Read-Host "Enter Elasticsearch URL (e.g. http://localhost:9200)"
|
||||
if ($elastic_url) { "ELASTIC_URL=$elastic_url" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
$elastic_cloud_id = Read-Host "Enter Elasticsearch Cloud ID (leave empty if using URL)"
|
||||
if ($elastic_cloud_id) { "ELASTIC_CLOUD_ID=$elastic_cloud_id" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
$elastic_user = Read-Host "Enter Elasticsearch username (leave empty if none)"
|
||||
if ($elastic_user) { "ELASTIC_USERNAME=$elastic_user" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
$elastic_pass = Read-Host "Enter Elasticsearch password (leave empty if none)"
|
||||
if ($elastic_pass) { "ELASTIC_PASSWORD=$elastic_pass" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
$elastic_index = Read-Host "Enter Elasticsearch index name (default: docsgpt)"
|
||||
if ([string]::IsNullOrEmpty($elastic_index)) { $elastic_index = "docsgpt" }
|
||||
"ELASTIC_INDEX=$elastic_index" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
Write-ColorText "Vector store set to Elasticsearch." -ForegroundColor "Green"
|
||||
}
|
||||
"3" {
|
||||
"VECTOR_STORE=qdrant" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
$qdrant_url = Read-Host "Enter Qdrant URL (e.g. http://localhost:6333)"
|
||||
if ($qdrant_url) { "QDRANT_URL=$qdrant_url" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
$qdrant_key = Read-Host "Enter Qdrant API key (leave empty if none)"
|
||||
if ($qdrant_key) { "QDRANT_API_KEY=$qdrant_key" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
$qdrant_collection = Read-Host "Enter Qdrant collection name (default: docsgpt)"
|
||||
if ([string]::IsNullOrEmpty($qdrant_collection)) { $qdrant_collection = "docsgpt" }
|
||||
"QDRANT_COLLECTION_NAME=$qdrant_collection" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
Write-ColorText "Vector store set to Qdrant." -ForegroundColor "Green"
|
||||
}
|
||||
"4" {
|
||||
"VECTOR_STORE=milvus" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
$milvus_uri = Read-Host "Enter Milvus URI (default: ./milvus_local.db)"
|
||||
if ([string]::IsNullOrEmpty($milvus_uri)) { $milvus_uri = "./milvus_local.db" }
|
||||
"MILVUS_URI=$milvus_uri" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
$milvus_token = Read-Host "Enter Milvus token (leave empty if none)"
|
||||
if ($milvus_token) { "MILVUS_TOKEN=$milvus_token" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
$milvus_collection = Read-Host "Enter Milvus collection name (default: docsgpt)"
|
||||
if ([string]::IsNullOrEmpty($milvus_collection)) { $milvus_collection = "docsgpt" }
|
||||
"MILVUS_COLLECTION_NAME=$milvus_collection" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
Write-ColorText "Vector store set to Milvus." -ForegroundColor "Green"
|
||||
}
|
||||
"5" {
|
||||
"VECTOR_STORE=lancedb" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
$lancedb_path = Read-Host "Enter LanceDB path (default: ./data/lancedb)"
|
||||
if ([string]::IsNullOrEmpty($lancedb_path)) { $lancedb_path = "./data/lancedb" }
|
||||
"LANCEDB_PATH=$lancedb_path" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
$lancedb_table = Read-Host "Enter LanceDB table name (default: docsgpts)"
|
||||
if ([string]::IsNullOrEmpty($lancedb_table)) { $lancedb_table = "docsgpts" }
|
||||
"LANCEDB_TABLE_NAME=$lancedb_table" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
Write-ColorText "Vector store set to LanceDB." -ForegroundColor "Green"
|
||||
}
|
||||
"6" {
|
||||
"VECTOR_STORE=pgvector" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
$pgvector_conn = Read-Host "Enter PGVector connection string (e.g. postgresql://user:pass@host:5432/db)"
|
||||
if ($pgvector_conn) { "PGVECTOR_CONNECTION_STRING=$pgvector_conn" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
Write-ColorText "Vector store set to PGVector." -ForegroundColor "Green"
|
||||
}
|
||||
{$_ -eq "b" -or $_ -eq "B"} { return }
|
||||
default {
|
||||
Write-Host ""
|
||||
Write-ColorText "Invalid choice." -ForegroundColor "Red"
|
||||
Start-Sleep -Seconds 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Embeddings configuration
|
||||
function Configure-Embeddings {
|
||||
Write-Host ""
|
||||
Write-ColorText "Embeddings Configuration" -ForegroundColor "White" -Bold
|
||||
Write-ColorText "Choose your embeddings provider:" -ForegroundColor "White"
|
||||
Write-ColorText "1) HuggingFace (default, local)" -ForegroundColor "Yellow"
|
||||
Write-ColorText "2) OpenAI Embeddings" -ForegroundColor "Yellow"
|
||||
Write-ColorText "3) Custom Remote Embeddings (OpenAI-compatible API)" -ForegroundColor "Yellow"
|
||||
Write-ColorText "b) Back" -ForegroundColor "Yellow"
|
||||
Write-Host ""
|
||||
$emb_choice = Read-Host "Choose option (1-3, or b)"
|
||||
|
||||
switch ($emb_choice) {
|
||||
"1" {
|
||||
"EMBEDDINGS_NAME=huggingface_sentence-transformers/all-mpnet-base-v2" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
Write-ColorText "Embeddings set to HuggingFace (local)." -ForegroundColor "Green"
|
||||
}
|
||||
"2" {
|
||||
"EMBEDDINGS_NAME=openai_text-embedding-ada-002" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
$emb_key = Read-Host "Enter Embeddings API key (leave empty to reuse LLM API_KEY)"
|
||||
if ($emb_key) { "EMBEDDINGS_KEY=$emb_key" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
Write-ColorText "Embeddings set to OpenAI." -ForegroundColor "Green"
|
||||
}
|
||||
"3" {
|
||||
$emb_name = Read-Host "Enter embeddings model name"
|
||||
if ($emb_name) { "EMBEDDINGS_NAME=$emb_name" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
$emb_url = Read-Host "Enter remote embeddings API base URL"
|
||||
if ($emb_url) { "EMBEDDINGS_BASE_URL=$emb_url" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
$emb_key = Read-Host "Enter embeddings API key (leave empty if none)"
|
||||
if ($emb_key) { "EMBEDDINGS_KEY=$emb_key" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
Write-ColorText "Custom remote embeddings configured." -ForegroundColor "Green"
|
||||
}
|
||||
{$_ -eq "b" -or $_ -eq "B"} { return }
|
||||
default {
|
||||
Write-Host ""
|
||||
Write-ColorText "Invalid choice." -ForegroundColor "Red"
|
||||
Start-Sleep -Seconds 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Authentication configuration
|
||||
function Configure-Auth {
|
||||
Write-Host ""
|
||||
Write-ColorText "Authentication Configuration" -ForegroundColor "White" -Bold
|
||||
Write-ColorText "Choose authentication type:" -ForegroundColor "White"
|
||||
Write-ColorText "1) None (default, no authentication)" -ForegroundColor "Yellow"
|
||||
Write-ColorText "2) Simple JWT" -ForegroundColor "Yellow"
|
||||
Write-ColorText "3) Session JWT" -ForegroundColor "Yellow"
|
||||
Write-ColorText "b) Back" -ForegroundColor "Yellow"
|
||||
Write-Host ""
|
||||
$auth_choice = Read-Host "Choose option (1-3, or b)"
|
||||
|
||||
switch ($auth_choice) {
|
||||
"1" {
|
||||
Write-ColorText "Authentication disabled (default)." -ForegroundColor "Green"
|
||||
}
|
||||
"2" {
|
||||
"AUTH_TYPE=simple_jwt" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
$jwt_key = Read-Host "Enter JWT secret key (leave empty to auto-generate)"
|
||||
if ([string]::IsNullOrEmpty($jwt_key)) {
|
||||
$bytes = New-Object byte[] 32
|
||||
[System.Security.Cryptography.RandomNumberGenerator]::Fill($bytes)
|
||||
$jwt_key = [System.BitConverter]::ToString($bytes).Replace("-", "").ToLower()
|
||||
Write-ColorText "Auto-generated JWT secret key." -ForegroundColor "Yellow"
|
||||
}
|
||||
"JWT_SECRET_KEY=$jwt_key" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
Write-ColorText "Authentication set to Simple JWT." -ForegroundColor "Green"
|
||||
}
|
||||
"3" {
|
||||
"AUTH_TYPE=session_jwt" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
$jwt_key = Read-Host "Enter JWT secret key (leave empty to auto-generate)"
|
||||
if ([string]::IsNullOrEmpty($jwt_key)) {
|
||||
$bytes = New-Object byte[] 32
|
||||
[System.Security.Cryptography.RandomNumberGenerator]::Fill($bytes)
|
||||
$jwt_key = [System.BitConverter]::ToString($bytes).Replace("-", "").ToLower()
|
||||
Write-ColorText "Auto-generated JWT secret key." -ForegroundColor "Yellow"
|
||||
}
|
||||
"JWT_SECRET_KEY=$jwt_key" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
Write-ColorText "Authentication set to Session JWT." -ForegroundColor "Green"
|
||||
}
|
||||
{$_ -eq "b" -or $_ -eq "B"} { return }
|
||||
default {
|
||||
Write-Host ""
|
||||
Write-ColorText "Invalid choice." -ForegroundColor "Red"
|
||||
Start-Sleep -Seconds 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Integrations configuration
|
||||
function Configure-Integrations {
|
||||
Write-Host ""
|
||||
Write-ColorText "Integrations Configuration" -ForegroundColor "White" -Bold
|
||||
Write-ColorText "1) Google Drive" -ForegroundColor "Yellow"
|
||||
Write-ColorText "2) GitHub" -ForegroundColor "Yellow"
|
||||
Write-ColorText "b) Back" -ForegroundColor "Yellow"
|
||||
Write-Host ""
|
||||
$int_choice = Read-Host "Choose option (1-2, or b)"
|
||||
|
||||
switch ($int_choice) {
|
||||
"1" {
|
||||
$google_id = Read-Host "Enter Google OAuth Client ID"
|
||||
if ($google_id) { "GOOGLE_CLIENT_ID=$google_id" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
$google_secret = Read-Host "Enter Google OAuth Client Secret"
|
||||
if ($google_secret) { "GOOGLE_CLIENT_SECRET=$google_secret" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
Write-ColorText "Google Drive integration configured." -ForegroundColor "Green"
|
||||
}
|
||||
"2" {
|
||||
$github_token = Read-Host "Enter GitHub Personal Access Token (with repo read access)"
|
||||
if ($github_token) { "GITHUB_ACCESS_TOKEN=$github_token" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
Write-ColorText "GitHub integration configured." -ForegroundColor "Green"
|
||||
}
|
||||
{$_ -eq "b" -or $_ -eq "B"} { return }
|
||||
default {
|
||||
Write-Host ""
|
||||
Write-ColorText "Invalid choice." -ForegroundColor "Red"
|
||||
Start-Sleep -Seconds 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Document Processing configuration
|
||||
function Configure-DocProcessing {
|
||||
Write-Host ""
|
||||
Write-ColorText "Document Processing Configuration" -ForegroundColor "White" -Bold
|
||||
$pdf_image = Read-Host "Parse PDF pages as images for better table/chart extraction? (y/N)"
|
||||
if ($pdf_image -eq "y" -or $pdf_image -eq "Y") {
|
||||
"PARSE_PDF_AS_IMAGE=true" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
Write-ColorText "PDF-as-image parsing enabled." -ForegroundColor "Green"
|
||||
}
|
||||
|
||||
$ocr_enabled = Read-Host "Enable OCR for document processing (Docling)? (y/N)"
|
||||
if ($ocr_enabled -eq "y" -or $ocr_enabled -eq "Y") {
|
||||
"DOCLING_OCR_ENABLED=true" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
Write-ColorText "Docling OCR enabled." -ForegroundColor "Green"
|
||||
}
|
||||
}
|
||||
|
||||
# Text-to-Speech configuration
|
||||
function Configure-TTS {
|
||||
Write-Host ""
|
||||
Write-ColorText "Text-to-Speech Configuration" -ForegroundColor "White" -Bold
|
||||
Write-ColorText "Choose TTS provider:" -ForegroundColor "White"
|
||||
Write-ColorText "1) Google TTS (default, free)" -ForegroundColor "Yellow"
|
||||
Write-ColorText "2) ElevenLabs" -ForegroundColor "Yellow"
|
||||
Write-ColorText "b) Back" -ForegroundColor "Yellow"
|
||||
Write-Host ""
|
||||
$tts_choice = Read-Host "Choose option (1-2, or b)"
|
||||
|
||||
switch ($tts_choice) {
|
||||
"1" {
|
||||
"TTS_PROVIDER=google_tts" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
Write-ColorText "TTS set to Google TTS." -ForegroundColor "Green"
|
||||
}
|
||||
"2" {
|
||||
"TTS_PROVIDER=elevenlabs" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
$elevenlabs_key = Read-Host "Enter ElevenLabs API key"
|
||||
if ($elevenlabs_key) { "ELEVENLABS_API_KEY=$elevenlabs_key" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
Write-ColorText "TTS set to ElevenLabs." -ForegroundColor "Green"
|
||||
}
|
||||
{$_ -eq "b" -or $_ -eq "B"} { return }
|
||||
default {
|
||||
Write-Host ""
|
||||
Write-ColorText "Invalid choice." -ForegroundColor "Red"
|
||||
Start-Sleep -Seconds 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Main advanced settings menu
|
||||
function Prompt-AdvancedSettings {
|
||||
Write-Host ""
|
||||
$configure_advanced = Read-Host "Would you like to configure advanced settings? (y/N)"
|
||||
if ($configure_advanced -ne "y" -and $configure_advanced -ne "Y") {
|
||||
return
|
||||
}
|
||||
|
||||
while ($true) {
|
||||
Write-Host ""
|
||||
Write-ColorText "Advanced Settings" -ForegroundColor "White" -Bold
|
||||
Write-ColorText "1) Vector Store (default: faiss)" -ForegroundColor "Yellow"
|
||||
Write-ColorText "2) Embeddings (default: HuggingFace local)" -ForegroundColor "Yellow"
|
||||
Write-ColorText "3) Authentication (default: none)" -ForegroundColor "Yellow"
|
||||
Write-ColorText "4) Integrations (Google Drive, GitHub)" -ForegroundColor "Yellow"
|
||||
Write-ColorText "5) Document Processing (PDF as image, OCR)" -ForegroundColor "Yellow"
|
||||
Write-ColorText "6) Text-to-Speech (default: Google TTS)" -ForegroundColor "Yellow"
|
||||
Write-ColorText "s) Save and Continue with Docker setup" -ForegroundColor "Yellow"
|
||||
Write-Host ""
|
||||
$adv_choice = Read-Host "Choose option (1-6, or s)"
|
||||
|
||||
switch ($adv_choice) {
|
||||
"1" { Configure-VectorStore }
|
||||
"2" { Configure-Embeddings }
|
||||
"3" { Configure-Auth }
|
||||
"4" { Configure-Integrations }
|
||||
"5" { Configure-DocProcessing }
|
||||
"6" { Configure-TTS }
|
||||
{$_ -eq "s" -or $_ -eq "S"} { break }
|
||||
default {
|
||||
Write-Host ""
|
||||
Write-ColorText "Invalid choice." -ForegroundColor "Red"
|
||||
Start-Sleep -Seconds 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# 1) Use DocsGPT Public API Endpoint (simple and free)
|
||||
function Use-DocsPublicAPIEndpoint {
|
||||
Write-Host ""
|
||||
@@ -297,6 +592,8 @@ function Use-DocsPublicAPIEndpoint {
|
||||
|
||||
Write-ColorText ".env file configured for DocsGPT Public API." -ForegroundColor "Green"
|
||||
|
||||
Prompt-AdvancedSettings
|
||||
|
||||
# Start Docker if needed
|
||||
$dockerRunning = Check-AndStartDocker
|
||||
if (-not $dockerRunning) {
|
||||
@@ -369,6 +666,7 @@ function Serve-LocalOllama {
|
||||
break
|
||||
}
|
||||
elseif ($confirm_gpu -eq "b" -or $confirm_gpu -eq "B") {
|
||||
$script:ollama_choice = "b"
|
||||
Clear-Host
|
||||
return
|
||||
}
|
||||
@@ -406,6 +704,8 @@ function Serve-LocalOllama {
|
||||
Write-ColorText ".env file configured for Ollama ($($docker_compose_file_suffix.ToUpper()))." -ForegroundColor "Green"
|
||||
Write-ColorText "Note: MODEL_NAME is set to '$model_name'. You can change it later in the .env file." -ForegroundColor "Yellow"
|
||||
|
||||
Prompt-AdvancedSettings
|
||||
|
||||
# Start Docker if needed
|
||||
$dockerRunning = Check-AndStartDocker
|
||||
if (-not $dockerRunning) {
|
||||
@@ -569,6 +869,8 @@ function Connect-LocalInferenceEngine {
|
||||
Write-ColorText ".env file configured for $engine_name with OpenAI API format." -ForegroundColor "Green"
|
||||
Write-ColorText "Note: MODEL_NAME is set to '$model_name'. You can change it later in the .env file." -ForegroundColor "Yellow"
|
||||
|
||||
Prompt-AdvancedSettings
|
||||
|
||||
# Start Docker if needed
|
||||
$dockerRunning = Check-AndStartDocker
|
||||
if (-not $dockerRunning) {
|
||||
@@ -665,6 +967,12 @@ function Connect-CloudAPIProvider {
|
||||
$script:llm_name = "azure_openai"
|
||||
$script:model_name = "gpt-4o"
|
||||
Get-APIKey
|
||||
Write-Host ""
|
||||
Write-ColorText "Azure OpenAI requires additional configuration:" -ForegroundColor "White" -Bold
|
||||
$script:azure_api_base = Read-Host "Enter Azure OpenAI API base URL (e.g. https://your-resource.openai.azure.com/)"
|
||||
$script:azure_api_version = Read-Host "Enter Azure OpenAI API version (e.g. 2024-02-15-preview)"
|
||||
$script:azure_deployment = Read-Host "Enter Azure deployment name for chat"
|
||||
$script:azure_emb_deployment = Read-Host "Enter Azure deployment name for embeddings (leave empty to skip)"
|
||||
break
|
||||
}
|
||||
"7" { # Novita
|
||||
@@ -696,9 +1004,19 @@ function Connect-CloudAPIProvider {
|
||||
"LLM_PROVIDER=$llm_name" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
"LLM_NAME=$model_name" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
"VITE_API_STREAMING=true" | Add-Content -Path $ENV_FILE -Encoding utf8
|
||||
|
||||
|
||||
# Azure OpenAI additional settings
|
||||
if ($llm_name -eq "azure_openai") {
|
||||
if ($azure_api_base) { "OPENAI_API_BASE=$azure_api_base" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
if ($azure_api_version) { "OPENAI_API_VERSION=$azure_api_version" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
if ($azure_deployment) { "AZURE_DEPLOYMENT_NAME=$azure_deployment" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
if ($azure_emb_deployment) { "AZURE_EMBEDDINGS_DEPLOYMENT_NAME=$azure_emb_deployment" | Add-Content -Path $ENV_FILE -Encoding utf8 }
|
||||
}
|
||||
|
||||
Write-ColorText ".env file configured for $provider_name." -ForegroundColor "Green"
|
||||
|
||||
Prompt-AdvancedSettings
|
||||
|
||||
# Start Docker if needed
|
||||
$dockerRunning = Check-AndStartDocker
|
||||
if (-not $dockerRunning) {
|
||||
@@ -709,15 +1027,15 @@ function Connect-CloudAPIProvider {
|
||||
try {
|
||||
Write-Host ""
|
||||
Write-ColorText "Starting Docker Compose..." -ForegroundColor "White"
|
||||
|
||||
|
||||
# Run Docker compose commands
|
||||
& docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" pull
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Docker compose pull failed with exit code $LASTEXITCODE"
|
||||
}
|
||||
|
||||
|
||||
& docker compose --env-file "$ENV_FILE" -f "$COMPOSE_FILE" up -d
|
||||
|
||||
|
||||
Write-Host ""
|
||||
Write-ColorText "DocsGPT is now configured to use $provider_name on http://localhost:5173" -ForegroundColor "Green"
|
||||
Write-ColorText "You can stop the application by running: docker compose -f `"$COMPOSE_FILE`" down" -ForegroundColor "Yellow"
|
||||
@@ -734,6 +1052,23 @@ function Connect-CloudAPIProvider {
|
||||
# Main script execution
|
||||
Animate-Dino
|
||||
|
||||
# Check if .env file exists and is not empty
|
||||
if ((Test-Path $ENV_FILE) -and ((Get-Item $ENV_FILE).Length -gt 0)) {
|
||||
Write-Host ""
|
||||
Write-ColorText "Warning: An existing .env file was found with the following settings:" -ForegroundColor "Yellow" -Bold
|
||||
$envLines = Get-Content $ENV_FILE
|
||||
$envLines | Select-Object -First 3 | ForEach-Object { Write-Host " $_" }
|
||||
if ($envLines.Count -gt 3) {
|
||||
Write-Host " ... and $($envLines.Count - 3) more lines"
|
||||
}
|
||||
Write-Host ""
|
||||
$confirm_overwrite = Read-Host "Running setup will overwrite this file. Continue? (y/N)"
|
||||
if ($confirm_overwrite -ne "y" -and $confirm_overwrite -ne "Y") {
|
||||
Write-ColorText "Setup cancelled. Your .env file was not modified." -ForegroundColor "Green"
|
||||
exit 0
|
||||
}
|
||||
}
|
||||
|
||||
while ($true) {
|
||||
Clear-Host
|
||||
Prompt-MainMenu
|
||||
|
||||
Reference in New Issue
Block a user