Changes between Version 25 and Version 26 of skripte-als-webservice
- Timestamp:
- Aug 11, 2011, 2:57:44 PM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
skripte-als-webservice
v25 v26 130 130 3. falls das Skript als Textfilter läuft, eine zusätzliche Datei in Filter_parameters/$name.txt. Schritt 3 ist nötig, weil man einem Textfilter keine Parameter übergeben kann. Beispiel: `Text Filters/Filter_5_01_insert_reg.pl` sucht in `Text Filters/Filter_parameters/Filter_5_01_insert_reg.txt`. 131 131 132 Ich verwende jetzt, im Gegensatz zu vorher, einen relativen Pfad, weil es sonst nicht ohne Änderungen funktioniert, nachdem man das Verzeichnis 133 [source:trunk/schema/scripts/workflow] 134 aus dem Repository in das Textfilter-Verzeichnis kopiert hat. Siehe [wiki:workflow_tutorial], insbesondere den [wiki:workflow_tutorial#Variante3:ArbeitmitTextwranglerBBEditaufAppleMacOS Abschnitt für BBEdit]. 132 Ich verwende hier einen relativen Pfad, weil das Skript das Verzeichnis `trunk/texts/aux` sonst gar nicht finden würde. Siehe auch [wiki:workflow_tutorial], insbesondere den [wiki:workflow_tutorial#Variante3:ArbeitmitTextwranglerBBEditaufAppleMacOS Abschnitt für BBEdit]. Im Unterverzeichnis `Filter_parameters` sind nur Dateien, in denen die Parameter so stehen, wie man sie auch in die Commandline schreiben würde. Die Dateien `reg-wordlist-lat-alvarus.txt` etc., auf die sich die Parameter-Werte beziehen könne, sind weiterhin in `trunk/texts/aux`. 135 133 136 Die Dateien `reg-wordlist-lat-alvarus.txt` etc. würde man dann wohl nicht mehr in `trunk/texts/aux`, sondern in `Filter_parameters` haben.134 Für den Webservice ist Schritt 3 nicht relevant. 137 135 138 136 === Unterschiedliche Parameter-Formate 139 137 140 Der Parameter "wordlist" heißt "reg.wordlist" in <parameters>, etc. Wenn man das nicht will, muss man auf namespaces verzichten und hoffen, dass die Skript-Parameter-Namen sich nicht beißen. Und es gibt (wenige) Parameter, die zu mehr als einem Skript gehören. Unterelemente von <parameters> finde ich übertrieben. Oder <parameters skript="Filter_insert-reg">, etc.? Dann kann man die namespaces weglassen.138 Zu Schritt 2: Der Parameter "wordlist" heißt "reg.wordlist" in <parameters>, etc. Wenn man das nicht will, muss man auf namespaces verzichten und hoffen, dass die Skript-Parameter-Namen sich nicht beißen. Und es gibt (wenige) Parameter, die zu mehr als einem Skript gehören. Unterelemente von <parameters> finde ich übertrieben. Oder <parameters skript="Filter_insert-reg">, etc.? Dann kann man die namespaces weglassen. 141 139 142 140 Und alle Parameter in einem <parameters> ohne @skript würden sich auf alle Skripte beziehen. Außerdem könnte man den Inhalt von <parameters> ebenfalls mit Getopt::Long einlesen, um ein einheitliches Parameter-Format zu haben. Ein einzelnes Skript würde dann den Inhalt von <parameters> und <parameters script="name"> übergeben. Oder vielleicht doch kein <parameters> ohne @script, denn in `Filter_parameters` gibt es auch keine Datei, die für alle Skripte gilt. Dann muss man allgemeine Parameter eben für alle relevanten Skripte wiederholen. Kein großer Aufwand. 143 141 144 142 Vorschlag also: <parameters> kann mehrfach verwendet werden, mit obligatorischem @script. Darin das gleiche Optionen-Format wie auf der Commandline, einlesen mit `GetOptionsFromString`. 143 144 Meeting 2011-08-11: Wir einigen uns darauf, dass diese Art, die Parameter zu übergeben, nicht so wichtig ist. Da es bereits eine Implementierung gibt, lohnt es sich erstmal nicht, hier weiteren Aufwand zu treiben. Es sollte nur dokumentiert sein. (Parameter in den Metadaten ganz weglassen? Dann: Commandline liest ihre Parameter, Textfilter liest seine Parameter-Datei, sonst nichts.) 145 146 Meeting 2011-08-09: Abhängigkeiten der Skripte genauer dokumentieren! Bisher geht der Workflow davon aus, dass alle Skripte aus dem Workflow-Schritt 1 durchgelaufen sind, bevor man zu Schritt 2 geht, etc. Das kann beim Webservice anders sein. Idealerweise merkt ein Skript von allein, wenn das Input-File nicht die richtige Form hat. Ein Skript kann auch zum Beispiel intern erst ein Prüfskript wie [wiki:workflow#a2.07prüfetags 2.07 Prüfe tags] aufrufen, oder der Webservice weiß, dass dieses Skript vorher verwendet werden muss. 145 147 146 148 === Commandline versus Textfilter … … 154 156 Alternative wäre, zum Beispiel zu prüfen, ob in Schritt 1 und 2 irgendwelche Optionen gesetzt wurden. Dann würden beim Aufruf auf der Commandline ohne jeden Parameter wie bei der Verwendung als Textfilter die Standard-Parameter aus der zusätzlichen Datei verwendet werden, aber sobald man irgendeinen Parameter setzt, wird die zusätzliche Datei nicht mehr eingelesen. Welche Variante führt zu möglichst wenig Verwirrung? 155 157 158 Meeting 2011-08-11: Erstmal bei BB_DOC_NAME bleiben. Die Parameter aus Schritt 3 werden also nur dann eingelesen, wenn das Skript als (BBEdit-)Textfilter läuft. Wenn ein Skript auf der Commandline ohne Parameter aufgerufen wird, muss es entscheiden, ob es trotzdem durchläuft oder ob es USAGE ausgibt. Das reg-Skript zeigt dann zum Beispiel USAGE. 159 156 160 Nachbilden der Möglichkeit, den Textfilter mit einem Ausschnitt einer Datei aufzurufen: Optionen wie "startzeile" und "endzeile" oder gar die genauen Spalten haben wir ja erstmal verschoben. Vielleicht könnte man das auch sowieso besser im Webservice-Wrapper machen. Dann muss es nicht in jedem Skript einzeln stehen. (BBEDIT übergibt übrigens runtime environment variables für Startzeile und -spalte etc. an den Textfilter. Diese Information wird jedoch zurzeit nicht verwendet.)