Fehler wurden bisher ignoriert, falls sie nach einem AttrTemplate "Replace" Dialog aufgetreten sind, das habe ich jetzt gefixt.
Syntax der Datei:
- leere Zeilen werden ignoriert
- Zeilen die mit # anfangen sind Kommentare (s.u. desc:)
- speziell werden Zeilen interpretiert die mit einem der folgenden Woerter beginnen: name: filter: prereq: par: desc: farewell: order:
- alle anderen Zeilen werden als auszufuehrende Befehle interpretiert, wenn man "set XX attrTemplate TemplateName" ausfuehrt.
- name: Name des Templates, markiert gleichzeitig das Ende des vorherigen Templates
- filter: devspec2array Ausdruck, der beschreibt, fuer welche Geraete dieses Template anwendbar ist. Wird erst beim "set ?" ausgefuehrt.
- prereq: ist entweder ein Perl-Ausdruck {}, oder ein devspec2array, was genau ein Geraet spezifiziert. Wird beim Einlesen des template Files ausgefuehrt. Falls nicht wahr ist, wird das Template entfernt. Ist fuer sowas wie "setze zusaetzlich Attribut XY falls die Installation HomeAssistant kennt" gedacht.
- par: kann mehrfach vorkommen, Syntax: par:<ParamaterName>:<Kommentar>:<Perl-Code>. Perl-Code versucht den Wert zu finden, falls nicht moeglich (return undef), wird ein Dialog mit "Replace" angezeigt (bzw. Usage:... im telnet). ParameterName wird in jeder Befehlzeile ersetzt mit dem Wert. Zusaetzlich: DEVICE wird mit dem Namen des Geraetes ersetzt.
- desc: Kommentar fuer "set attrTemplate help ?". Die letzte Zeile mit # vor name: wird als desc: interpretiert, falls kein desc: vorhanden ist.
- farewell: wird zum Schluss als Dialog (oder Text in telnet) angezeigt, falls beim Anwenden der Befehle kein Fehler aufgetreten ist
- order: bestimmt die Reihenfolge der Templates fuers Frontend, falls nicht vorhanden, wird name: genommen.