251 lines
6.0 KiB
PowerShell
251 lines
6.0 KiB
PowerShell
#
|
||
# LibreBooking n8n Node - Installations-Skript für Windows (PowerShell)
|
||
#
|
||
# Verwendung:
|
||
# .\install.ps1
|
||
#
|
||
# Optionen:
|
||
# -NoLink Überspringt npm link (nur Build)
|
||
# -Global Installiert global statt npm link
|
||
# -Help Zeigt diese Hilfe an
|
||
#
|
||
|
||
param(
|
||
[switch]$NoLink,
|
||
[switch]$Global,
|
||
[switch]$Help
|
||
)
|
||
|
||
# Konfiguration
|
||
$MIN_NODE_VERSION = 18
|
||
$ErrorActionPreference = "Stop"
|
||
|
||
# Funktionen
|
||
function Write-ColorOutput {
|
||
param(
|
||
[string]$Message,
|
||
[string]$Color = "White"
|
||
)
|
||
Write-Host $Message -ForegroundColor $Color
|
||
}
|
||
|
||
function Write-Header {
|
||
Write-ColorOutput "" "Blue"
|
||
Write-ColorOutput "=============================================" "Blue"
|
||
Write-ColorOutput " LibreBooking n8n Node Installer" "Blue"
|
||
Write-ColorOutput "=============================================" "Blue"
|
||
Write-ColorOutput "" "Blue"
|
||
}
|
||
|
||
function Write-Success {
|
||
param([string]$Message)
|
||
Write-ColorOutput "✓ $Message" "Green"
|
||
}
|
||
|
||
function Write-Warning-Msg {
|
||
param([string]$Message)
|
||
Write-ColorOutput "⚠ $Message" "Yellow"
|
||
}
|
||
|
||
function Write-Error-Msg {
|
||
param([string]$Message)
|
||
Write-ColorOutput "✗ $Message" "Red"
|
||
}
|
||
|
||
function Write-Info {
|
||
param([string]$Message)
|
||
Write-ColorOutput "ℹ $Message" "Cyan"
|
||
}
|
||
|
||
function Show-Help {
|
||
Write-Host "Verwendung: .\install.ps1 [OPTIONEN]"
|
||
Write-Host ""
|
||
Write-Host "Optionen:"
|
||
Write-Host " -NoLink Überspringt npm link (nur Build)"
|
||
Write-Host " -Global Installiert global mit npm install -g"
|
||
Write-Host " -Help Zeigt diese Hilfe an"
|
||
Write-Host ""
|
||
Write-Host "Beispiele:"
|
||
Write-Host " .\install.ps1 # Standard-Installation mit npm link"
|
||
Write-Host " .\install.ps1 -NoLink # Nur Dependencies installieren und Build"
|
||
Write-Host " .\install.ps1 -Global # Globale Installation"
|
||
exit 0
|
||
}
|
||
|
||
function Test-Command {
|
||
param([string]$Command)
|
||
try {
|
||
$null = Get-Command $Command -ErrorAction Stop
|
||
return $true
|
||
}
|
||
catch {
|
||
return $false
|
||
}
|
||
}
|
||
|
||
function Get-NodeVersion {
|
||
$version = (node -v) -replace 'v', ''
|
||
return [int]($version.Split('.')[0])
|
||
}
|
||
|
||
# Hilfe anzeigen
|
||
if ($Help) {
|
||
Show-Help
|
||
}
|
||
|
||
# Start
|
||
Write-Header
|
||
|
||
# 1. Node.js prüfen
|
||
Write-Host ""
|
||
Write-Info "Prüfe Voraussetzungen..."
|
||
Write-Host ""
|
||
|
||
if (-not (Test-Command "node")) {
|
||
Write-Error-Msg "Node.js ist nicht installiert!"
|
||
Write-Host " Bitte installiere Node.js v$MIN_NODE_VERSION oder höher:"
|
||
Write-Host " https://nodejs.org/"
|
||
exit 1
|
||
}
|
||
|
||
$nodeVersion = Get-NodeVersion
|
||
if ($nodeVersion -lt $MIN_NODE_VERSION) {
|
||
Write-Error-Msg "Node.js Version $nodeVersion ist zu alt!"
|
||
Write-Host " Mindestens Version $MIN_NODE_VERSION benötigt."
|
||
exit 1
|
||
}
|
||
|
||
$nodeFullVersion = (node -v) -replace 'v', ''
|
||
Write-Success "Node.js v$nodeFullVersion gefunden"
|
||
|
||
# 2. npm prüfen
|
||
if (-not (Test-Command "npm")) {
|
||
Write-Error-Msg "npm ist nicht installiert!"
|
||
exit 1
|
||
}
|
||
|
||
$npmVersion = npm -v
|
||
Write-Success "npm v$npmVersion gefunden"
|
||
|
||
# 3. n8n prüfen (optional)
|
||
if (Test-Command "n8n") {
|
||
try {
|
||
$n8nVersion = n8n --version 2>$null
|
||
Write-Success "n8n $n8nVersion gefunden"
|
||
}
|
||
catch {
|
||
Write-Success "n8n installiert"
|
||
}
|
||
}
|
||
else {
|
||
Write-Warning-Msg "n8n ist nicht global installiert."
|
||
Write-Host " Für npm link muss n8n global installiert sein:"
|
||
Write-Host " npm install -g n8n"
|
||
Write-Host ""
|
||
|
||
if (-not $NoLink -and -not $Global) {
|
||
$response = Read-Host "Möchtest du trotzdem fortfahren? (j/N)"
|
||
if ($response -notmatch '^[Jj]$') {
|
||
exit 1
|
||
}
|
||
}
|
||
}
|
||
|
||
# 4. Dependencies installieren
|
||
Write-Host ""
|
||
Write-Info "Installiere Dependencies..."
|
||
|
||
try {
|
||
npm install
|
||
Write-Success "Dependencies installiert"
|
||
}
|
||
catch {
|
||
Write-Error-Msg "Fehler bei npm install: $_"
|
||
exit 1
|
||
}
|
||
|
||
# 5. TypeScript kompilieren
|
||
Write-Host ""
|
||
Write-Info "Kompiliere TypeScript..."
|
||
|
||
try {
|
||
npm run build
|
||
Write-Success "Build erfolgreich"
|
||
}
|
||
catch {
|
||
Write-Error-Msg "Fehler beim Build: $_"
|
||
exit 1
|
||
}
|
||
|
||
# 6. npm link oder global install
|
||
if ($Global) {
|
||
Write-Host ""
|
||
Write-Info "Installiere global..."
|
||
|
||
try {
|
||
npm install -g .
|
||
Write-Success "Global installiert"
|
||
}
|
||
catch {
|
||
Write-Error-Msg "Fehler bei globaler Installation: $_"
|
||
exit 1
|
||
}
|
||
}
|
||
elseif (-not $NoLink) {
|
||
Write-Host ""
|
||
Write-Info "Verlinke mit npm link..."
|
||
|
||
try {
|
||
npm link
|
||
Write-Success "npm link erfolgreich"
|
||
|
||
# Versuche mit n8n zu verlinken
|
||
if (Test-Command "n8n") {
|
||
$n8nPath = Join-Path (npm root -g) "n8n"
|
||
if (Test-Path $n8nPath) {
|
||
Write-Info "Verlinke mit n8n..."
|
||
Push-Location $n8nPath
|
||
try {
|
||
npm link n8n-nodes-librebooking 2>$null
|
||
Write-Success "Mit n8n verlinkt"
|
||
}
|
||
catch {
|
||
Write-Warning-Msg "Konnte nicht automatisch mit n8n verlinken"
|
||
}
|
||
finally {
|
||
Pop-Location
|
||
}
|
||
}
|
||
}
|
||
}
|
||
catch {
|
||
Write-Error-Msg "Fehler bei npm link: $_"
|
||
exit 1
|
||
}
|
||
}
|
||
|
||
# Abschluss
|
||
Write-Host ""
|
||
Write-ColorOutput "=============================================" "Green"
|
||
Write-ColorOutput " Installation erfolgreich abgeschlossen!" "Green"
|
||
Write-ColorOutput "=============================================" "Green"
|
||
Write-Host ""
|
||
Write-Host "Nächste Schritte:"
|
||
Write-Host ""
|
||
|
||
if ($NoLink) {
|
||
Write-Host " 1. Führe 'npm link' aus, um den Node zu verlinken"
|
||
Write-Host " 2. Starte n8n neu: n8n start"
|
||
}
|
||
else {
|
||
Write-Host " 1. Starte n8n neu: n8n start"
|
||
Write-Host " (oder mit Docker: docker-compose restart)"
|
||
}
|
||
|
||
Write-Host ""
|
||
Write-Host " 2. Öffne n8n im Browser: http://localhost:5678"
|
||
Write-Host " 3. Der LibreBooking Node sollte verfügbar sein"
|
||
Write-Host ""
|
||
Write-Host "Bei Problemen siehe INSTALLATION.md oder README.md"
|
||
Write-Host ""
|