Borealis-Legacy/Rebuild_ReactJS_App.ps1
2025-03-20 19:06:46 -06:00

79 lines
3.4 KiB
PowerShell

# Start_Windows - WebServer.ps1
# Run this script with:
# Set-ExecutionPolicy Unrestricted -Scope Process; .\Start_Windows -WebServer.ps1
Write-Output " =============================== "
Write-Output " Re-Building ReactJS App "
Write-Output " =============================== "
# --- Define paths ---
$venvFolder = "Borealis-Workflow-Automation-Tool" # Virtual environment root.
$dataSource = "Data" # Contains server.py and optionally WebUI.
$dataDestination = "$venvFolder\Borealis" # Data folder copy destination in the venv.
$customUIPath = "$dataSource\WebUI" # Custom UI folder source in the project root.
$webUIDestination = "$venvFolder\web-interface" # Destination for the React UI in the venv.
# If a custom UI folder exists at <ProjectRoot>\Data\WebUI, copy its contents over (overwrite defaults).
if (Test-Path $customUIPath) {
Write-Output "Borealis ReactJS Data Found at '$customUIPath'. Overwriting ReactJS App Files..."
Copy-Item -Path "$customUIPath\*" -Destination $webUIDestination -Recurse -Force
} else {
Write-Output "No custom UI folder found at '$customUIPath'. Using default ReactJS app."
}
# --- Activate virtual environment ---
Write-Output "Activating Virtual Python Environment..."
. "$venvFolder\Scripts\Activate"
# --- Remove Existing / Previous ReactJS App Build folder ---
if (Test-Path $dataDestination) {
Remove-Item -Recurse -Force $venvFolder\web-interface\build
}
# --- Build the React (UI) app in the web-interface folder if needed ---
$packageJsonPath = Join-Path $webUIDestination "package.json"
$buildFolder = Join-Path $webUIDestination "build"
if (-not (Test-Path $buildFolder)) {
if (Test-Path $packageJsonPath) {
Write-Output "React UI build not found in '$webUIDestination'. Installing dependencies and building the React app..."
Push-Location $webUIDestination
Write-Output " =============================== "
Write-Output " Installing NPM Packages "
Write-Output " =============================== "
npm install --no-fund --audit=false
# Ensure react-flow-renderer is installed
Write-Output "Installing React Flow..."
npm install reactflow --no-fund --audit=false
# Install Material UI Library
Write-Output "Installing Material UI Library..."
npm install @mui/material @emotion/react @emotion/styled --no-fund --audit=false
npm run build
Pop-Location
}
else {
Write-Output "No package.json found in '$webUIDestination'; skipping npm install/build."
}
} else {
Write-Output "React UI build found. Skipping npm install/build."
}
# --- Change directory to the virtual environment root ---
Push-Location $venvFolder
Write-Output "Current working directory: $(Get-Location)"
$expectedBuildPath = Join-Path (Get-Location) "web-interface\build"
Write-Output "Looking for build folder at: $expectedBuildPath"
# --- Start the Flask server (server.py is inside Borealis folder) ---
Write-Output " =============================== "
Write-Output " Launching Borealis "
Write-Output " =============================== "
Write-Output "Starting the Flask server..."
python "Borealis\server.py"
# --- Return to original directory and deactivate virtual environment ---
Pop-Location
deactivate