FrappeUIPhx.Installer (frappe_ui_phx v0.3.1)

Copy Markdown View Source

Edições idempotentes nos arquivos do app host (CSS, JS, mix.exs), em funções puras conteúdo -> {:ok, novo, mudou?} | {:error, motivo}. A task mix frappe_ui_phx.install só lê/escreve arquivos em volta delas.

Idempotência é a pós-condição principal: aplicar duas vezes devolve o mesmo conteúdo e mudou? == false na segunda.

Summary

Functions

O mix.exs do host compila com :phoenix_live_view (necessário para extrair os hooks colocated)? Não edita o arquivo; devolve :ok ou {:missing, instrução}.

Acrescenta os @import do CSS de tokens e o @source dos componentes logo depois de @import "tailwindcss". rel é o caminho da dependência a partir do app.css (ex.: "../../deps/frappe_ui_phx").

Importa os hooks colocated da biblioteca e os junta ao objeto hooks: do LiveSocket (acompanha o colocatedHooks do Phoenix 1.8 quando existe).

Caminho da dependência relativo a from_dir (ambos absolutos).

Types

result()

@type result() :: {:ok, String.t(), boolean()} | {:error, atom()}

Functions

check_compilers(mix_exs)

@spec check_compilers(String.t()) :: :ok | {:missing, String.t()}

O mix.exs do host compila com :phoenix_live_view (necessário para extrair os hooks colocated)? Não edita o arquivo; devolve :ok ou {:missing, instrução}.

patch_css(content, rel)

@spec patch_css(String.t(), String.t()) :: result()

Acrescenta os @import do CSS de tokens e o @source dos componentes logo depois de @import "tailwindcss". rel é o caminho da dependência a partir do app.css (ex.: "../../deps/frappe_ui_phx").

patch_js(content)

@spec patch_js(String.t()) :: result()

Importa os hooks colocated da biblioteca e os junta ao objeto hooks: do LiveSocket (acompanha o colocatedHooks do Phoenix 1.8 quando existe).

relative(dep_path, from_dir)

@spec relative(String.t(), String.t()) :: String.t()

Caminho da dependência relativo a from_dir (ambos absolutos).