Current section
Files
Jump to
Current section
Files
lib/mix/tasks/tex.uninstall.ex
defmodule Mix.Tasks.Teex.Uninstall do
@moduledoc false
use Mix.Task
alias Teex.Types.Workspace
alias Teex.Util
alias Teex.Util.Messages
alias Teex.Util.Configuration
def run(args) do
OptionParser.parse!(args, strict: [workspace: :string, name: :string, version: :string])
|> case do
{[workspace: workspace_name], [name]} -> kickoff_uninstall(workspace_name, name)
_ ->
IO.puts("Not sure what you mean!\n")
IO.puts("\tUsage:\n\tteex uninstall jason --workspace [target_workspace name]")
end
end
defp kickoff_uninstall(workspace_name, name) do
Messages.info("Going to uninstall '#{name}' from workspace #{workspace_name}")
Messages.wrench("Deleting...")
workspace_name = Util.clean_workspace_name(workspace_name)
full_path = Util.compute_workspace_path(workspace_name)
if !File.dir?(full_path) do
Messages.error("Workspace #{workspace_name} does not exist!")
exit(-1)
end
{:ok, %Workspace{} = workspace} = Workspace.build(
name: workspace_name,
path: full_path
) |> Configuration.load_workspace()
installed = Enum.find(workspace.installed_libraries, nil, fn item ->
item.name == name
end)
if installed == nil do
Messages.error("Workspace '#{workspace_name}' does not have the library '#{name}' installed!")
else
new_libs_list = Enum.reject(workspace.installed_libraries, fn item ->
item.name == name
end)
workspace = struct(workspace, installed_libraries: new_libs_list)
{:ok, _} = Configuration.save_workspace(workspace)
Messages.sparkle("Uninstalled '#{name}' from workspace '#{workspace.name}'")
end
end
end