Geschichte
Ich habe diese Script erstellt weil ich eine neue Version der Flagbit FilterUrls Extension veröffentlichen wollte. Leider hatte ich nach dem ersten klicken das Archiv gelöscht und hatte wenig Lust das noch mal zu machen. Und so einen Ausflug in den Magento Core macht doch jeder mal gerne oder?
Was kann es bis jetzt?
Das Script basiert auf dem originalen Packager Code. Der Unterschied liegt lediglich in der Quelle der Informationen. Diese werden aus einer Composer Konfiguration gelesen. Was Composer ist und warum man es unbedingt auch für Magento verwenden sollte, lest ihr am besten im Türchen 02: Composer für Magento von Vinai nach.
Das Script liest aus einer composer.json
alle Daten aus und füllt die Packager Klassen mit Informationen. Anschließend wird das Paket gebaut. Dazu muss das Script in Ordner shell
einer Magento-Installation liegen und es benötigt als Parameter den Pfad zur composer.json
. Sollte wichtige Informationen fehlen, reagiert der Packager mit Exceptions.
Ein Beispielaufruf lautet wie folgt:
php packager.php --composer <path to composer.json>
Das fertige Archiv wird in Form einer *.tgz
Datei in Pfad zu Magento/var/connect
abgelegt. Diese Pakete sind allerdings nur mit Magento Connect 2.0 kompatibel.
Wie muss eine composer.json aussehen?
{
"name":"module_vendor/module_name",
"type":"magento-module",
"license":"GPL-3.0",
"description":"",
"homepage":"http://example.com",
"minimum-stability":"beta",
"authors":[
{
"name":"Author 1",
"email":"author1@example.de"
},
{
"name":"Author 2",
"email":"author2@example.de"
}
],
"extras":{
"magento_connect":{
"channel":"community",
"php_min":"5.3.0",
"php_max":"6.0.0",
"content":[
{
"type":"magecommunity",
"structure":"dir",
"path":"module_vendor/module_name"
},
{
"type":"mageetc",
"structure":"file",
"path":"modules/module_config_file_name.xml"
},
{
"type":"mage",
"structure":"file",
"path":"just a random file path"
}
]
}
}
}
Der aufwendigste Teil ist der content Bereich. Hier müssen die Zielpfade der Quellen des Moduls im Bezug zu Magento hinterlegt werden. Das ist sehr ähnlich zo modman und es drängt sich der Gedanke auf daraus einfach eine modman Datei generieren zu lassen.
Was steht auf der Roadmap?
- Generierung einer modman Datei
- Batchverarbeitung für mehrere composer.json Dateien
- Unterstützung der fehlenden Optionen Felder aus dem Backend
Ich würde mich über Kommentare und Pullrequests freuen. Viel Spaß beim Packages erzeugen.
Den Quellcode findet ihr GitHub unter: Magento Packager