diff --git a/scripts/publish-to-main.ps1 b/scripts/publish-to-main.ps1 deleted file mode 100644 index 2a472eb..0000000 --- a/scripts/publish-to-main.ps1 +++ /dev/null @@ -1,185 +0,0 @@ -#Requires -Version 5.1 -<# -.SYNOPSIS - Erstellt einen Production-Build und veroeffentlicht ihn auf den Branch main. - -.DESCRIPTION - 1. Wechselt auf main und setzt ihn auf den Stand von dev - 2. Entfernt Kommentare, minifiziert CSS, obfuskiert JavaScript - 3. Committet und pusht main (optional) - 4. Wechselt zurueck auf dev (Quellcode bleibt unveraendert) - -.PARAMETER Push - Pusht main nach origin (Standard: nur lokaler Commit) - -.PARAMETER DryRun - Fuehrt Git-Schritte nur simuliert aus (Build wird trotzdem erstellt) - -.PARAMETER AllowDirty - Erlaubt uncommittete Aenderungen - -.PARAMETER Message - Commit-Nachricht fuer den Production-Build - -.EXAMPLE - .\scripts\publish-to-main.ps1 - -.EXAMPLE - .\scripts\publish-to-main.ps1 -Push -#> -[CmdletBinding()] -param( - [switch]$Push, - [switch]$DryRun, - [switch]$AllowDirty, - [string]$Message = "" -) - -$ErrorActionPreference = "Stop" -$Root = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path -$BuildDir = Join-Path $Root "scripts\build" -$OriginalBranch = "" - -function Write-Step([string]$Text) { - Write-Host "" - Write-Host "==> $Text" -ForegroundColor Cyan -} - -function Ensure-GitClean { - $status = git -C $Root status --porcelain - if ($status) { - throw "Uncommittete Aenderungen im Repository. Bitte zuerst committen oder stashen." - } -} - -function Resolve-NodeTool([string]$ToolName) { - $command = Get-Command $ToolName -ErrorAction SilentlyContinue - if ($command) { - return $command.Source - } - - $candidates = @( - (Join-Path $env:ProgramFiles "nodejs\$ToolName.cmd"), - (Join-Path ${env:ProgramFiles(x86)} "nodejs\$ToolName.cmd"), - (Join-Path $env:LOCALAPPDATA "Programs\nodejs\$ToolName.cmd"), - "c:\Program Files\cursor\resources\app\resources\helpers\node.exe" - ) - - foreach ($candidate in $candidates) { - if ($ToolName -eq "node" -and (Test-Path $candidate)) { - return $candidate - } - if ($ToolName -ne "node" -and (Test-Path $candidate)) { - return $candidate - } - } - - return $null -} - -function Ensure-Node { - $script:NodeExe = Resolve-NodeTool "node" - $script:NpmExe = Resolve-NodeTool "npm" - - if (-not $script:NodeExe) { - throw "Node.js ist nicht installiert. Bitte Node.js 18+ installieren: https://nodejs.org/" - } - if (-not $script:NpmExe) { - throw "npm wurde nicht gefunden. Bitte Node.js inkl. npm installieren und PATH setzen." - } -} - -try { - Set-Location $Root - Ensure-Node - if (-not $AllowDirty) { - Ensure-GitClean - } else { - Write-Warning "AllowDirty aktiv - uncommittete Aenderungen werden mit veroeffentlicht." - } - - $OriginalBranch = (git branch --show-current).Trim() - if ($OriginalBranch -ne "dev") { - Write-Warning "Empfohlen: Auf Branch 'dev' starten (aktuell: $OriginalBranch)" - } - - if ([string]::IsNullOrWhiteSpace($Message)) { - $Message = "chore(release): production build $(Get-Date -Format 'yyyy-MM-dd HH:mm')" - } - - Write-Step "Installiere Build-Abhaengigkeiten" - Set-Location $BuildDir - if (-not $DryRun) { - & $NpmExe ci --no-fund --no-audit - if ($LASTEXITCODE -ne 0) { throw "npm ci fehlgeschlagen" } - } - - Write-Step "Wechsle auf main und synchronisiere mit dev" - Set-Location $Root - if ($DryRun) { - Write-Host '[DryRun] git checkout main' - Write-Host '[DryRun] git reset --hard dev' - } else { - git checkout main - git reset --hard dev - } - - Write-Step "Production-Build (Kommentare entfernen, JS obfuscaten)" - Set-Location $BuildDir - if ($DryRun) { - Write-Host '[DryRun] npm run build:in-place' - } else { - & $NpmExe run build:in-place - if ($LASTEXITCODE -ne 0) { throw "Production-Build fehlgeschlagen" } - } - - Write-Step "Production-Build committen" - Set-Location $Root - if ($DryRun) { - Write-Host '[DryRun] git add -A' - Write-Host ('[DryRun] git commit -m "' + $Message + '"') - } else { - git add -A - $null = git diff --cached --quiet - if ($LASTEXITCODE -eq 0) { - Write-Warning "Keine Build-Aenderungen - nichts zu committen." - } else { - git commit -m $Message - } - } - - if ($Push) { - Write-Step "Push nach origin/main" - if ($DryRun) { - Write-Host '[DryRun] git push origin main' - } else { - git push origin main - } - } else { - Write-Host "Hinweis: Ohne -Push wurde nur lokal auf main gebaut." -ForegroundColor Yellow - } - - Write-Step "Zurueck auf $OriginalBranch" - if (-not $DryRun) { - if ([string]::IsNullOrWhiteSpace($OriginalBranch)) { - git checkout dev - } else { - git checkout $OriginalBranch - } - } - - Write-Host "" - Write-Host "Production-Release abgeschlossen." -ForegroundColor Green - if (-not $Push -and -not $DryRun) { - Write-Host "Zum Veroeffentlichen: git push origin main" -ForegroundColor Yellow - } -} -catch { - Write-Host "" - Write-Host ('FEHLER: ' + $_.Exception.Message) -ForegroundColor Red - Set-Location $Root - if ($OriginalBranch -and -not $DryRun) { - git checkout $OriginalBranch 2>$null - } - exit 1 -} diff --git a/scripts/publish-to-main.sh b/scripts/publish-to-main.sh deleted file mode 100644 index f2f4aaa..0000000 --- a/scripts/publish-to-main.sh +++ /dev/null @@ -1,187 +0,0 @@ -#!/usr/bin/env bash -# -# Erstellt einen Production-Build und veröffentlicht ihn auf den Branch main. -# -# 1. Wechselt auf main und setzt ihn auf den Stand von dev -# 2. Entfernt Kommentare, minifiziert CSS, obfuskiert JavaScript -# 3. Committet und pusht main (optional) -# 4. Wechselt zurück auf den ursprünglichen Branch (dev bleibt unverändert) -# -# Nutzung: -# ./scripts/publish-to-main.sh -# ./scripts/publish-to-main.sh --push -# ./scripts/publish-to-main.sh --dry-run -# ./scripts/publish-to-main.sh --allow-dirty --message "chore(release): v1.2" -# - -set -euo pipefail - -PUSH=false -DRY_RUN=false -ALLOW_DIRTY=false -MESSAGE="" - -usage() { - cat <<'EOF' -Usage: publish-to-main.sh [OPTIONS] - -Options: - --push Push nach origin/main - --dry-run Git-Schritte nur anzeigen (Build wird ausgeführt) - --allow-dirty Uncommittete Änderungen erlauben - --message TEXT Commit-Nachricht - -h, --help Hilfe anzeigen -EOF -} - -while [[ $# -gt 0 ]]; do - case "$1" in - --push) - PUSH=true - shift - ;; - --dry-run) - DRY_RUN=true - shift - ;; - --allow-dirty) - ALLOW_DIRTY=true - shift - ;; - --message) - MESSAGE="${2:-}" - shift 2 - ;; - -h|--help) - usage - exit 0 - ;; - *) - echo "Unbekannte Option: $1" >&2 - usage >&2 - exit 1 - ;; - esac -done - -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" -BUILD_DIR="$ROOT/scripts/build" -ORIGINAL_BRANCH="" - -step() { - echo "" - echo "==> $1" -} - -require_command() { - if ! command -v "$1" >/dev/null 2>&1; then - echo "FEHLER: '$1' nicht gefunden. Bitte installieren und PATH setzen." >&2 - exit 1 - fi -} - -ensure_git_clean() { - if [[ -n "$(git -C "$ROOT" status --porcelain)" ]]; then - echo "FEHLER: Uncommittete Änderungen. Bitte zuerst committen oder stashen." >&2 - exit 1 - fi -} - -cleanup_on_error() { - echo "" - echo "FEHLER: Abgebrochen." >&2 - cd "$ROOT" || true - if [[ -n "$ORIGINAL_BRANCH" && "$DRY_RUN" == false ]]; then - git checkout "$ORIGINAL_BRANCH" 2>/dev/null || true - fi -} - -trap cleanup_on_error ERR - -require_command node -require_command npm -require_command git - -cd "$ROOT" - -if [[ "$ALLOW_DIRTY" == false ]]; then - ensure_git_clean -else - echo "WARNUNG: --allow-dirty aktiv – uncommittete Änderungen werden mit veröffentlicht." >&2 -fi - -ORIGINAL_BRANCH="$(git branch --show-current | tr -d '[:space:]')" -if [[ "$ORIGINAL_BRANCH" != "dev" ]]; then - echo "WARNUNG: Empfohlen auf Branch 'dev' zu starten (aktuell: ${ORIGINAL_BRANCH:-detached})" >&2 -fi - -if [[ -z "$MESSAGE" ]]; then - MESSAGE="chore(release): production build $(date '+%Y-%m-%d %H:%M')" -fi - -step "Installiere Build-Abhängigkeiten" -cd "$BUILD_DIR" -if [[ "$DRY_RUN" == false ]]; then - npm ci --no-fund --no-audit -fi - -step "Wechsle auf main und synchronisiere mit dev" -cd "$ROOT" -if [[ "$DRY_RUN" == true ]]; then - echo "[DryRun] git checkout main" - echo "[DryRun] git reset --hard dev" -else - git checkout main - git reset --hard dev -fi - -step "Production-Build (Kommentare entfernen, JS obfuscaten)" -cd "$BUILD_DIR" -if [[ "$DRY_RUN" == true ]]; then - echo "[DryRun] npm run build:in-place" -else - npm run build:in-place -fi - -step "Production-Build committen" -cd "$ROOT" -if [[ "$DRY_RUN" == true ]]; then - echo "[DryRun] git add -A" - echo "[DryRun] git commit -m \"$MESSAGE\"" -else - git add -A - if git diff --cached --quiet; then - echo "WARNUNG: Keine Build-Änderungen – nichts zu committen." >&2 - else - git commit -m "$MESSAGE" - fi -fi - -if [[ "$PUSH" == true ]]; then - step "Push nach origin/main" - if [[ "$DRY_RUN" == true ]]; then - echo "[DryRun] git push origin main" - else - git push origin main - fi -else - echo "Hinweis: Ohne --push wurde nur lokal auf main gebaut." -fi - -step "Zurück auf ${ORIGINAL_BRANCH:-dev}" -if [[ "$DRY_RUN" == false ]]; then - if [[ -n "$ORIGINAL_BRANCH" ]]; then - git checkout "$ORIGINAL_BRANCH" - else - git checkout dev - fi -fi - -trap - ERR - -echo "" -echo "Production-Release abgeschlossen." -if [[ "$PUSH" == false && "$DRY_RUN" == false ]]; then - echo "Zum Veröffentlichen: git push origin main" -fi diff --git a/scripts/run-build.ps1 b/scripts/run-build.ps1 deleted file mode 100644 index b60b860..0000000 --- a/scripts/run-build.ps1 +++ /dev/null @@ -1,46 +0,0 @@ -#Requires -Version 5.1 -<# -.SYNOPSIS - Erstellt ein Production-Bundle unter dist/ (ohne Branch-Wechsel). -#> -[CmdletBinding()] -param( - [switch]$InPlace -) - -$ErrorActionPreference = "Stop" -$Root = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path -$BuildDir = Join-Path $Root "scripts\build" - -function Resolve-NodeTool([string]$ToolName) { - $command = Get-Command $ToolName -ErrorAction SilentlyContinue - if ($command) { return $command.Source } - - $candidates = @( - (Join-Path $env:ProgramFiles "nodejs\$ToolName.cmd"), - (Join-Path ${env:ProgramFiles(x86)} "nodejs\$ToolName.cmd") - ) - - foreach ($candidate in $candidates) { - if (Test-Path $candidate) { return $candidate } - } - - return $null -} - -$npm = Resolve-NodeTool "npm" -if (-not $npm) { - throw "npm nicht gefunden. Bitte Node.js installieren." -} - -Set-Location $BuildDir -& $npm ci --no-fund --no-audit -if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } - -if ($InPlace) { - & $npm run build:in-place -} else { - & $npm run build -} - -exit $LASTEXITCODE diff --git a/scripts/run-build.sh b/scripts/run-build.sh deleted file mode 100644 index 7009c73..0000000 --- a/scripts/run-build.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env bash -# -# Erstellt ein Production-Bundle unter dist/ (ohne Branch-Wechsel). -# -# Nutzung: -# ./scripts/run-build.sh -# ./scripts/run-build.sh --in-place -# - -set -euo pipefail - -IN_PLACE=false - -usage() { - cat <<'EOF' -Usage: run-build.sh [OPTIONS] - -Options: - --in-place Build direkt im Repository (statt dist/) - -h, --help Hilfe anzeigen -EOF -} - -while [[ $# -gt 0 ]]; do - case "$1" in - --in-place) - IN_PLACE=true - shift - ;; - -h|--help) - usage - exit 0 - ;; - *) - echo "Unbekannte Option: $1" >&2 - usage >&2 - exit 1 - ;; - esac -done - -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" -BUILD_DIR="$ROOT/scripts/build" - -if ! command -v npm >/dev/null 2>&1; then - echo "FEHLER: npm nicht gefunden. Bitte Node.js installieren." >&2 - exit 1 -fi - -cd "$BUILD_DIR" -npm ci --no-fund --no-audit - -if [[ "$IN_PLACE" == true ]]; then - npm run build:in-place -else - npm run build -fi diff --git a/scripts/test-email.php b/scripts/test-email.php deleted file mode 100644 index e3feb43..0000000 --- a/scripts/test-email.php +++ /dev/null @@ -1,48 +0,0 @@ -', - 'MIME-Version: 1.0', - 'Content-Type: text/plain; charset=UTF-8', - 'X-Mailer: HexaHost Test Email', - ]; - - return mail($config['to_email'], $subject, $message, implode("\r\n", $headers)); -} - -if (PHP_SAPI === 'cli') { - echo testEmail() ? "Test-E-Mail gesendet.\n" : "Fehler beim Senden.\n"; - exit; -} - -if (isset($_GET['test'])) { - echo testEmail() - ? 'Test-E-Mail wurde gesendet.' - : 'Fehler beim Senden der Test-E-Mail.'; -} else { - echo '

HexaHost.de E-Mail Test

'; - echo '

Test-E-Mail senden

'; -}