lib/mix/tasks/template.uninstall.ex

defmodule Mix.Tasks.Template.Uninstall do

  @moduledoc(
    Path.join([__DIR__, "../../../README.md"])
    |> File.read!
    |> String.replace(~r/\A.*^### Use\w+/m, "")
    |> String.replace(~r/^###.*/m, ""))


  use Private
  use Mix.Task
  alias MixTemplates.Cache

  def run([ source ]) do
    case uninstall(source) do
      { :error, reason } ->
        Mix.shell.error([ :red, "Error: ",
                          :reset, "uninstalling template “#{source}:” #{reason}" ])
      { :ok, project } ->
        Mix.shell.info("template “#{project}” uninstalled")

      other ->
        raise inspect other
    end
  end


  defp uninstall(project) do
    if MixTemplates.find(project) do
      Cache.uninstall_template(project)
    else
      { :error, "template “#{project}” is not installed" }
    end
  end
  
end