Current section

Files

Jump to
phoenix_live_view lib prettier.ex
Raw

lib/prettier.ex

if Mix.env() == :dev do
defmodule Prettier do
@moduledoc false
@behaviour Phoenix.LiveView.HTMLFormatter.TagFormatter
require Logger
@impl true
def render_tag({"script", attrs, content}, _opts)
when not is_map_key(attrs, "runtime") do
manifest = Map.get(attrs, "manifest", "index.js")
tmp_file =
Path.join(System.tmp_dir!(), "prettier_#{System.unique_integer([:positive])}_#{manifest}")
try do
File.write!(tmp_file, content)
case System.cmd("npx", ["prettier", tmp_file], stderr_to_stdout: true) do
{output, 0} ->
{:ok, String.trim(output)}
{error, _} ->
Logger.error("Failed to format with prettier: #{error}")
:skip
end
after
File.rm(tmp_file)
end
end
def render_tag({_other, _attrs, _content}, _opts) do
:skip
end
end
end