Current section

Files

Jump to
project lib mix tasks project remove topbar.ex
Raw

lib/mix/tasks/project/remove/topbar.ex

defmodule Mix.Tasks.Project.Remove.Topbar do
@shortdoc "Removes topbar progress indicator"
@moduledoc "Removes the topbar progress indicator."
use Igniter.Mix.Task
alias Mix.Tasks.Project.Helpers
@impl Igniter.Mix.Task
def igniter(igniter) do
igniter
|> Igniter.rm("assets/vendor/topbar.js")
|> edit_app_js()
|> edit_package_json()
end
defp edit_app_js(igniter) do
Helpers.update_file_content(igniter, "assets/js/app.js", fn content ->
content
|> String.split("\n")
|> Enum.reject(&String.contains?(&1, ["topbar", "progress bar"]))
|> Enum.join("\n")
|> then(&Regex.replace(~r/\n{3,}/, &1, "\n\n"))
end)
end
defp edit_package_json(igniter) do
if Igniter.exists?(igniter, "assets/package.json") do
Helpers.update_file_content(igniter, "assets/package.json", fn content ->
content
|> Jason.decode!()
|> Map.delete("topbar")
|> Jason.encode!(pretty: true)
end)
else
igniter
end
end
end