Originally published at: https://oxidforge.org/de/oxrun-das-konsolentool-zum-shop.html
OXRUN ist ein mächtiges Konsolenttool für Entwickler mit vielen Funktionen die das Deployen, Debuggen und Entwickeln mit OXID eShop sehr viel einfacher machen können. Im Blogpost erfährst Du alles Wissenswerte dazu.
Hi Tobi
finde OXRUN sehr gut.
Würde gerne OXRUN um den Befehl erweitern einen Shop neu zu installieren. Glaube dies gab es bereits für die alte OXID Version.
Wenn ich OXRUN als separates Command auf meinem Webserver installiere und oxrun list
vom Root Verzeichnis meines Webservers aufrufe dann sehe ich nur die Commands help und list
Zum Vergleich habe ich mir MAGERUN auf meinem Webserver hinterlegt, wenn ich dort im Root Verzeichnisses meines Webservers n98-magerun.phar list
dann sehe ich eine unglaubliche Menge von Commands
Hättest Du eine Idee woran es liegen könnte? Welche Datei im Repo ist hier relevant? Ich bin für jeden Tipp dankbar
Update: Lese gerade OXID v6 is required. orientiere mich an https://github.com/OXIDprojects/oxrun
Ich bin einen Schritt weiter… Im bin/
Verzeichnis befindet sich oxrun
Skript und dort werden über die Klasse CommandFinder
die Commands angemeldet über die Hauptklasse Aggreator
wofür 4 Unterklassen angelegt wurden sind. 3 dieser Unterklassen benötigen das Shop Verzeichnis vom OXID v6, also probiere ich meinen ersten Command über die letzte Klasse OxrunPass()
bekannt zu machen und habe mich dort an der Beispiel Datei OwnOxrunCommand.php
orientiert, leider führt dies zu keiner Veränderung wenn ich auf meinem Webserver ins bin/
Verzeichnis springe und php oxrun
ausführe…
$commandFinder = (new CommandFinder())
->addRegister(new Aggregator\CommunityPass(), true)
->addRegister(new Aggregator\ModulePass(),true)
->addRegister(new Aggregator\CustomPass(),true)
->addRegister(new Aggregator\OxrunPass());
Ich habe oxrun
geforked und meine neue Command Datei findet man unter https://github.com/Indianer3c/oxrun/blob/master/src/Oxrun/Command/BisWeb/InstallCommand.php
Zusätzlich habe ich mir über Composer mit composer update
das Vendor Verzeichnis mit den benötigten Klassen generieren lassen.
Wenn ich nun auf meinem Webserver php oxrun
im bin/
Verzeichnis ausführe erscheint immer noch kein einziger Befehl…
Erhalte folgende Ausgabe:
oxrun version @package_version@
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--shopDir[=SHOPDIR] Force oxid base dir. No auto detection
-m, --shopId[=SHOPID] Shop Id (EE Relevant)
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Available commands:
help Displays help for a command
list Lists commands
Habe ich bei meinem Vorgehen was übersehen? Oder verwende ich oxrun
anders als es vorgesehen ist? Wie oben bereits geschrieben wäre ich über jeden Tipp dankbar
Update: Lese gerade den Blogeintrag aufmerksam erneut zu OXRUN
OXRUN versucht beim ersten Aufruf, den OXID eShop Code zu finden, indem es die bootstrap.php sucht. Wird diese Datei nicht gefunden, sind alle Commands deaktiviert. Aus diesem Grund ist es wichtig, dass Du Dich beim Aufruf irgendwo im Shopverzeichnis befindest.
Quelle: OXID Forge – Die Knowledge Base rund um den OXID eShop
Dies erklärt natürlich warum auch mein Befehl nicht angezeigt wird…
Hallo indianer3c,
sorry das ich so spät antworte. Es freut mich rießig, dass du oxrun nutzen willst. Nunja wie du es bereits herausgefunden hast muss man sich im Installtaion verzeichnis vom OXID shop befinden. Ich habe es auch auch noch mal inder REDME hinterlegt: https://github.com/OXIDprojects/oxrun#usage
Du kann kannst auch eine Globale Enviremnt Variable hinterlegen: OXID_SHOP_DIR=...
dann funktioniert oxrun
von überall aus.
Um eigene Projekt Commands zu erstellen, gibt es mittlerweie 3 wege wo die Commands abegelegt werden können. Steht hier: https://github.com/OXIDprojects/oxrun#defining-your-own-command
Ich nutze es sehr gerne um Module Command für Cronjobs tätigkeiten zu erstellen. Es ist dadurch sehr komfortafel richtige cli commands zu programieren mit paramerter und so.
Hier bei ist zu achten das die gefunden Commands einmal zwischen gespeichert werden und dannach nicht mehr gesucht werden. Was wiederum bedeutet: fügst du einen neuen Command hinzu wird er nicht angezeigt. Ausser du löscht die Cache Datei vendor/oxidprojects/OxrunCommands.php
. Dann fängt oxrun
erneut nach den commands zu suchen.
Der unterschied zwischen https://github.com/OXIDprojects/oxrun und dem Projekt von marcharding ist, dass OXIDprojects/oxrun auf v6.x geupdatet wurde und weiterentwickelt wird, und das Projekt von marcharding auf v4.x stehen geblieben ist für ältere OXID Version die noch existieren.
Der OXID Installation Prozess habe ich nicht Portiert. Weil zu viele Fragen aufgeworfen sind, die ich nicht beantworten wollte. Gerne kannst du es gerne übernehmen, jedoch achte auf PHPUnit Tests.
Viel freude und Spass mit oxrun. Für Verbesserungen und Bug fix gerne weiter entwickeln. Zusammen bauen wir ein cooles oxrun tool.
Viele Grüße
Tobi
Hey Tobi super dankeschön für die ausführliche Antwort. Das mit der globalen Environment Variable werde ich direkt mal testen und dann mein eigenen Command hinterlegen zum installieren, dazu auch die Cache Datei löschen