Batch-Verarbeitung von Modulen mit der Bash

in  Basics , , , ,

Batch-Verarbeitung von Modulen mit der Bash

In diesem Beitrag wird gezeigt, wie man eine ganze Reihe von Modulen automatisch mit Hilfe eines Bash-Skriptes neu generieren kann. Auch die Übersetzungen der Module können automatisch neu generiert werden. Das spart mühsame Handarbeit, insbesondere wenn die Anzahl der Module in größeren Projekten zunimmt.

Das erste Skript verwendet den Standalone Generator von ModuleStudio und aktualisiert damit die Implementierung der Module. Dateien, die in den Modellen in der markFiles-Direktive angegeben sind, werden entfernt - das ist aber Geschmackssache und kann je nach Vorliebe anders ausgestaltet werden.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash

vendor="Acme"

 

echo "Create work directory and download generator"
mkdir -p work
cd work
wget https://updates.modulestudio.de/standalone/ModuleStudio-generator.jar

# iterate over all modules
for fullModulePath in `find ../modules/${vendor} -mindepth 1 -maxdepth 1 -type d`
do
    moduleName=${fullModulePath/../modules/${vendor}/}
    fullModuleName="${vendor}${moduleName}"
    modulePath="${vendor}/${moduleName}"

    echo "Processing ${moduleName} ..."

    echo "Fetch model and regenerate it"
    modelName="${moduleName/Module/}.mostapp"
    cp ${fullModulePath}/Resources/docs/model/${modelName} ./${modelName}
    java -jar ModuleStudio-generator.jar ${modelName} output

    echo "Remove unrequired files and copy new version into the module directory"
    outputPath="output/${modulePath}"
    #rm ${outputPath}/Resources/public/images/*.png
    find ${outputPath} -type f -name '*.generated.*' -delete
    cp -R ${outputPath} ../modules/${vendor}

    echo "Cleanup"
    rm -rf output
done

echo "Final cleanup"
cd ..
rm -rf work

echo "All done"

Im zweiten Skript sollen die Übersetzungskataloge für alle Module neu erzeugt werden. Dabei werden die überschriebenen Templates und JavaScript-Dateien aus app/Resources/Modulname/ mit berücksichtigt. Vom Vorgehen her sieht das dem ersten Skript sehr ähnlich, man könnte auch beides in einem Skript durchführen.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/bash

vendor="Acme"

for fullModulePath in `find modules/${vendor} -mindepth 1 -maxdepth 1 -type d`
do
    moduleName=${fullModulePath/modules/${vendor}/}
    fullModuleName="${vendor}${moduleName}"
    modulePath="${vendor}/${moduleName}"
    php app/console translation:extract en --bundle=$fullModuleName --enable-extractor=jms_i18n_routing --output-format=po --dir=./modules/$modulePath --dir=./app/Resources/$fullModuleName
done

Weitere Beiträge in Kategorie Basics

CSS-Konzepte spielerisch lernen
- Die Cascading Style Sheets zum Gestalten von Internetseiten und Webanwendungen gibt es schon eine ganze Ewigkeit. Elementare Dinge ändern sich hier vergleichsweise selten. Mit der Umstellung von …
Twig: kleine Syntax-Anpassung mit deutlichem Einspareffekt
- Der folgende Tipp hilft dabei, den Code-Umfang häufiger Abfragen in Twig-Templates zu reduzieren. Dies verbessert die Lesbarkeit enorm und hilft dabei, die Logik in den Templates intuitiver zu …
Funktionale Programmierung in Twig: Collections deklarativ verarbeiten
- Seit kurzem haben neue Funktionen in die Template-Engine Twig Einzug gehalten. Diese verändern die Art und Weise, wie mit mehrwertigen Daten umgegangen wird, fundamental. Aus diesem Grund soll dieser …
Prägnante und strukturierte Stylesheets mit SCSS
- Auch wenn es für einige Leser ein alter Hut ist, so gibt es dennoch sicherlich andere, die noch keine Erfahrungen mit Less oder Sass haben. Daher sei einmal das sehr leicht zu erlernende SCSS (Sassy …
Kategorien in Zikula - weit mehr als nur Themen
- Der Zikula Core enthält eine zentrale Verwaltung für Kategorien, mit denen man vielfältige Lösungen umsetzen kann. Die häufigste Verwendung von Kategorien ist sicherlich eine thematische Zuordnung von …