# enerSpace Tool-Sammlung

Dieses Skript bietet eine Vielzahl von Tools zur Automatisierung von Aufgaben wie der Installation von Shopware 6, der Verwaltung moderner Bildformate (WebP/AVIF), der Größenänderung von Bildern, dem Schutz von Entwicklungsumgebungen und mehr. Es ist für die Nutzung über die Kommandozeile ausgelegt und unterstützt verschiedene Optionen und Argumente.

Next Feature: Erstellung einer Staging-Umgebung per Cronjob.

Autor Rico Rothenburger (enerSpace.de)
Erstellt am 15.08.2019
Letzte Änderung 03.04.2025
Version 1.2.4

# Verwendung

# Grundlegende Syntax

estools [command] [options] [arguments]

Wenn keine Argumente angegeben werden, wird die allgemeine Hilfe (usage) angezeigt.

# Verfügbare Befehle

Kategorie Befehl Beschreibung
Allgemein help Zeigt die Hilfe für Kommandos an
changelog Zeigt das Changelog des Skripts an
Shopware es:sw6:install Installiert Shopware 6
es:sw6:firstrun Erstellt das Shopware 6 Template vor dem First Run Wizard
Bildbearbeitung es:modern-image:generate Erstellt oder aktualisiert WebP/AVIF-Dateien
es:modern-image:clear Entfernt alle WebP/AVIF-Dateien
es:modern-image:htaccess-show Zeigt den .htaccess-Code für WebP/AVIF-Unterstützung
es:modern-image:htaccess-update Erweitert .htaccess für WebP/AVIF-Unterstützung
es:image:resize Ändert die Größe von Bilddateien
Admintools es:dev:password Setzt einen Passwortschutz für die DEV-Umgebung
SSH Umgebung es:php:set Setzt die Standard-PHP-Version auf der SSH-Umgebung

# Befehle im Detail

# Allgemeine Befehle

# help

Zeigt die allgemeine Hilfe mit einer Übersicht aller verfügbaren Befehle.

estools help

# Shopware-Befehle

Installiert die aktuelle Version von Shopware 6 im angegebenen Verzeichnis. Zusätzlich wird eine angepasste Konfigurationsdatei unter /config/packages/ abgelegt, welche systemspezifische Einstellungen enthält.

Syntax:

estools es:sw6:install [path] [options]

Argumente:

  • path: Hauptverzeichnis, in das Shopware installiert werden soll (z. B. /httpdocs).

Optionen:

  • -c, --clear: Löscht den Inhalt des Verzeichnisses ohne Rückfrage.
  • -q, --quiet: Unterdrückt Ausgaben und löscht den Inhalt ohne Rückfrage.
  • -h, --help: Zeigt die Hilfe an.

Beispiel:

estools es:sw6:install /httpdocs

Erstellt das Shopware 6 Template vor der Ausführung des First Run Wizards.

Syntax:

estools es:sw6:firstrun [path] [options]

Argumente:

  • path: Hauptverzeichnis von Shopware (z. B. /httpdocs).

Optionen:

  • -q, --quiet: Unterdrückt Ausgaben.
  • -h, --help: Zeigt die Hilfe an.

Beispiel:

estools es:sw6:firstrun /httpdocs

# Bildbearbeitung

Erstellt oder aktualisiert WebP- und/oder AVIF-Bilder aus vorhandenen JPG- oder PNG-Dateien in einem angegebenen Verzeichnis.

Zweck:

Mit diesem Befehl lassen sich moderne Bildformate (WebP und AVIF) aus vorhandenen JPG- oder PNG-Dateien automatisch generieren. Ziel ist eine deutliche Reduzierung der Dateigröße, was zu schnelleren Ladezeiten von Webseiten führt. Bestehende Konvertierungen werden erkannt und übersprungen, um Ressourcen zu sparen. Eine SQLite-Datenbank dokumentiert jede Verarbeitung und sorgt für Nachverfolgbarkeit und Effizienz.

Funktionsweise:

  1. Initialisierung: Beim ersten Start wird im Verzeichnis /.enerspace/filedatabases/ eine SQLite-Datenbank erstellt. Der Datenbankname ist ein MD5-Hash des Zielverzeichnisses. Die Datenbank speichert Dateipfad, Zeitstempel und den Status der WebP-/AVIF-Erstellung.

  2. Farbraumprüfung: Für jede JPG- oder PNG-Datei wird geprüft, ob sie im CMYK-Farbraum vorliegt. Falls ja, erfolgt eine temporäre Konvertierung nach RGB mit convert, da WebP und AVIF nur RGB unterstützen.

  3. Konvertierung: Für jede geeignete Datei werden entsprechende .webp- und/oder .avif-Dateien erzeugt (z. B. bild.jpgbild.jpg.webp, bild.jpg.avif). Die Qualität richtet sich nach der angegebenen Option.

  4. Originaldatei überschreiben: Wird die Option -m/--convert-cmyk verwendet, wird das ursprüngliche CMYK-Bild dauerhaft durch die RGB-Version ersetzt, um künftige Verarbeitungen zu vereinfachen.

  5. Parallelisierung: Mehrere Dateien können gleichzeitig verarbeitet werden. Die Anzahl paralleler Prozesse wird über --jobs gesteuert. Dies reduziert die Gesamtverarbeitungszeit bei großen Bildbeständen erheblich.

  6. Bereinigung: Verwaiste WebP- oder AVIF-Dateien – also Dateien ohne zugehöriges Original – werden bei jedem Aufruf automatisch erkannt und gelöscht.

Syntax:

estools es:modern-image:generate [path] [options]

Argumente:

  • path: Zielverzeichnis für die Bildkonvertierung (z. B. /httpdocs/media/image). Es werden rekursiv alle Bilder durchsucht und verarbeitet.

Optionen:

  • -i, --imagequality <0–100>: Legt die Bildqualität fest (Standard: 80). Höhere Werte = bessere Qualität, größere Dateien.
  • -f, --format <webp|avif|both>: Gibt an, welche Formate erstellt werden. Standard ist webp.
  • -m, --convert-cmyk: Überschreibt CMYK-Bilder dauerhaft mit RGB-Version.
  • -j, --jobs <Anzahl>: Anzahl gleichzeitiger Prozesse (Standard: 1). Abhängig von der CPU-Leistung.
  • -q, --quiet: Unterdrückt Ausgaben wie Fortschrittsanzeige und Statistik.
  • -h, --help: Zeigt die Hilfe an.

Beispiele:

# Nur WebP mit Standardqualität
estools es:modern-image:generate /httpdocs/media/image

# WebP und AVIF mit Qualität 90, vier parallele Prozesse
estools es:modern-image:generate /httpdocs/media/image -f both -i 90 -j 4

# Nur AVIF, CMYK-Originale werden ersetzt
estools es:modern-image:generate /httpdocs/media/image -f avif -m

# Silent-Modus
estools es:modern-image:generate /httpdocs/media/image -q

Einsatzmöglichkeiten:

  • Webseitenoptimierung: Reduziert die Dateigröße von Bildern, um Ladezeiten zu verbessern, ohne dass ein separates Plugin erforderlich ist.
  • Browserkompatibilität: In Kombination mit .htaccess-Regeln (siehe es:modern-image:htaccess-update) wird das passende Format (AVIF, WebP oder Original) je nach Browserunterstützung ausgeliefert.
  • Automatisierung: Ideal für regelmäßige Updates per Cronjob, da neue Bilder automatisch erkannt und alte, nicht mehr benötigte Dateien gelöscht werden.
  • Farbraumkorrektur: Mit -m/--convert-cmyk können problematische CMYK-Bilder direkt korrigiert werden, was nützlich ist, wenn Originale in einem webtauglichen Format benötigt werden.

Entfernt alle WebP- und AVIF-Dateien aus einem Verzeichnis.

Syntax:

estools es:modern-image:clear [path] [options]

Argumente:

  • path: Hauptverzeichnis (z. B. /httpdocs/media/image).

Optionen:

  • -q, --quiet: Unterdrückt Ausgaben.
  • -h, --help: Zeigt die Hilfe an.

Beispiel:

estools es:modern-image:clear /httpdocs/media/image

Zeigt den .htaccess-Code für die Unterstützung von WebP/AVIF an.

Syntax:

estools es:modern-image:htaccess-show

Erweitert eine .htaccess-Datei um WebP/AVIF-Unterstützung.

Syntax:

estools es:modern-image:htaccess-update [path] [options]

Argumente:

  • path: Hauptverzeichnis (z. B. /httpdocs).

Optionen:

  • -r, --remove: Entfernt die Anpassungen.
  • -q, --quiet: Unterdrückt Ausgaben.
  • -h, --help: Zeigt die Hilfe an.

Beispiel:

estools es:modern-image:htaccess-update /httpdocs

Ändert die Größe von Bilddateien (JPG/PNG). Zudem werden überflüüsige Informationen aus den Bildern entfernt um die Dateigröße weiter zu komprimieren.

Syntax:

estools es:image:resize [path] [options]

Argumente:

  • path: Hauptverzeichnis der Bilder (z. B. /httpdocs/media/image).

Optionen:

  • -h, --height <value>: Maximale Höhe (Standard: 1920).
  • -w, --width <value>: Maximale Breite (Standard: 1920).
  • -i, --imagequality <value>: Bildqualität (Standard: 80).
  • -q, --quiet: Unterdrückt Ausgaben.
  • -h, --help: Zeigt die Hilfe an.

Beispiel:

estools es:image:resize /httpdocs/media/image -h 1080 -w 1080

# Admintools

Setzt einen Passwortschutz für eine Entwicklungsumgebung via .htaccess.

Syntax:

estools es:dev:password [path] [options]

Argumente:

  • path: Hauptverzeichnis (z. B. /httpdocs).

Optionen:

  • -r, --remove: Entfernt den Passwortschutz.
  • -h, --help: Zeigt die Hilfe an.

Beispiel:

estools es:dev:password /httpdocs

Ausgabe (Beispiel):

Login
-------------------------
User: admin
Pass: Xk7$mP9q
-------------------------

# Tools für die SSH Umgebung

Setzt die Standard-PHP-Version für die SSH-Umgebung.

Syntax:

estools es:php:set [version]

Argumente:

  • version: PHP-Version (z. B. 7.4, 8.1). Unterstützte Versionen: 7.1 bis 8.4.

Beispiel:

estools es:php:set 8.1