Modules
GreenAsh — une console de test « écran vert » (LiveView, 100 % clavier, style AS400) générée par introspection depuis vos resources Ash, sans code d'UI.
Gestion de l'« acteur » de la console : l'enregistrement Ash au nom duquel les
actions sont exécutées (pour éprouver les policies). Stocké en session HTTP
(une LiveView ne peut pas écrire la session via le socket : cf.
GreenAsh.ActorController) et rethreadé dans tous les appels Ash.
Écrit/efface l'acteur de la console en session, puis redirige.
Sollicité par la commande :actor des LiveViews (qui ne peuvent pas écrire la
session via le socket).
Parseur + application de la ligne de commande : (façon Vim), partagé par
tous les écrans. Les chemins sont construits à partir de la base de montage
(base) fournie par l'hôte, et les resources résolues parmi domains.
Composants d'UI auto-contenus de la console : la feuille de style « terminal
vert » plein écran, un <.input> générique (piloté par un champ de formulaire
AshPhoenix) et un <.button>. Aucune dépendance aux composants de l'hôte.
Introspection d'une action Ash -> specs de champs -> type de widget HTML.
Menu principal, façon AS400 : plein écran, options numérotées, ligne de
commande Option ===> et navigation clavier. Deux niveaux découverts
automatiquement (resources -> actions). Une action :create ouvre l'écran de
saisie, :read une liste ; :update/:destroy renvoient vers une liste.
Moteur générique : rend un écran de saisie exécutable pour UNE action Ash,
entièrement par introspection. La resource/action viennent de la route ; les
champs sont déduits par GreenAsh.Field et le formulaire par AshPhoenix.Form.
Un :id (token de PK) charge un enregistrement pour une action update.
Subfile AS400 : liste des enregistrements d'une action :read, avec colonne
"Opt" par ligne (codes dérivés des actions : update/destroy/afficher), filtre
(arguments de la read action, côté requête), tri de colonne et pagination.
Toutes les lectures/suppressions passent l'acteur courant.
on_mount posé par la macro de routeur : injecte dans chaque LiveView la liste
de domaines, la base de montage et l'acteur courant (résolu depuis la session).
Découverte, au runtime, des resources / actions Ash à partir de la liste de domaines fournie par l'hôte (via la macro de routeur), et résolution module <-> slug / clé primaire pour les routes de la console.
Intégration au routeur de l'hôte.
Point d'entrée use GreenAsh.Web, :live_view pour les LiveViews de la console.
N'importe rien de l'application hôte : uniquement Phoenix.LiveView, les
composants de la lib et un helper de chemin relatif à la base de montage.
Mix Tasks
Installs GreenAsh: mounts the console in your router