diff --git a/tools/etm-powersync-gen-protocol-doc b/tools/etm-powersync-gen-protocol-doc index 59e72c3..2ed8603 100755 --- a/tools/etm-powersync-gen-protocol-doc +++ b/tools/etm-powersync-gen-protocol-doc @@ -17,7 +17,9 @@ est écrit à la main. `` : - `table:.params` — les params d'une méthode ; - `table:.result` — son résultat ; - `table:` — un schéma de `components.schemas` (un `oneOf` donne une table par branche) ; -- `rules` — `x-etm-semantic-rules` ; `reason-codes` — codes émissibles et leurs clés de paramètres. +- `rules` — `x-etm-semantic-rules` ; `reason-codes` — codes émissibles et leurs clés de paramètres ; +- `errors` — les erreurs que renvoie l'optimiseur : `methods[].errors`, puis `x-etm-message-errors` + (protocole 1.2), et ce que le moteur fait d'une réponse error (`x-etm-errors-engine`). Une table déroule les objets EN LIGNE (`declared.minPowerW`) ; un `$ref` renvoie à la table de son composant. Un `` inconnu, une balise sans fin, un bloc imbriqué : erreur (code 2). @@ -222,7 +224,28 @@ class Rendu: out.append(f'| `{code}` | {", ".join(f"`{k}`" for k in cles.get(code, [])) or "—"} |') return out + def erreurs(self): + messages = self.doc.get('x-etm-message-errors', {}) + out = ['| Code | Méthode | `message` | Connexion après l\'erreur | Quand |', '|---|---|---|---|---|'] + moteur = [] + for m in self.doc.get('methods', []): + for e in m.get('errors', []): + out.append(f'| `{e["code"]}` | {m["name"]} | {self.sens({"description": e.get("message", "")})} | ' + f'{e.get("x-etm-connection", "—")} | {self.sens({"description": e.get("data", "")})} |') + if m.get('x-etm-errors-engine'): + moteur.append(f'- **{m["name"]}** : {self.sens({"description": m["x-etm-errors-engine"]})}') + for e in messages.get('items', []): + out.append(f'| `{e["code"]}` | toute | {self.sens({"description": e.get("message", "")})} | ' + f'{e.get("x-etm-connection", "—")} | {self.sens({"description": e.get("data", "")})} |') + if messages.get('description'): + out += ['', self.sens(messages)] + if moteur: + out += ['', 'Ce que fait le moteur d\'une réponse error :', ''] + moteur + return out + def bloc(self, quoi): + if quoi == 'errors': + return self.erreurs() if quoi == 'rules': return self.regles() if quoi == 'reason-codes':