Current section

Files

Jump to
nvim installer lib remove.ex
Raw

installer/lib/remove.ex

defmodule Mix.Tasks.Nvim.Remove do
use Mix.Task
@shortdoc "Removes the host(include ALL installed plugins) for provided nvim config path."
def run(argv) do
{_opts, argv} = OptionParser.parse!(argv)
case argv do
[] ->
Mix.raise "Expected NVIM_CONFIG_PATH to be given, please use \"mix nvim.remove NVIM_CONFIG_PATH\""
[nvim_config_path | _] ->
File.rm Path.join(nvim_config_path, "plugin/elixir_host.vim")
File.rm Path.join(nvim_config_path, "rplugin/elixir/mix.exs")
safely_remove_directory(Path.join(nvim_config_path, "rplugin/elixir/scripts"))
File.rm_rf Path.join(nvim_config_path, "rplugin/elixir/_build")
File.rm_rf Path.join(nvim_config_path, "rplugin/elixir/config")
File.rm_rf Path.join(nvim_config_path, "rplugin/elixir/apps/host")
safely_remove_directory(Path.join(nvim_config_path, "rplugin/elixir/apps"))
Mix.shell.info "Elixir host succesfully removed."
end
end
defp safely_remove_directory(path) do
if directory_empty?(path) do
File.rm_rf(path)
else
Mix.shell.info "#{path} is not removed because is not empty."
end
end
defp directory_empty?(path) do
Path.join(path, "*") |> Path.wildcard |> Enum.empty?
end
end