n8n_node_librebooking/install.ps1

251 lines
6.0 KiB
PowerShell
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#
# 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 ""