OXRUN - Das CLI Tool zum Shop

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 :slight_smile:

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 :slight_smile:

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 :slight_smile:

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

1 Like

Hey Tobi :slight_smile: 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