From 4185eff1131c5bcdf27f2b1f7ab7495dd6a52851 Mon Sep 17 00:00:00 2001 From: Eric Scouten Date: Sat, 5 Oct 2019 09:28:30 -0700 Subject: [PATCH 1/2] Clean up issues flagged by ElixirLS. --- lib/xgit/repository/on_disk.ex | 32 ++++++++++++++++----- test/support/test/on_disk_repo_test_case.ex | 3 +- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/lib/xgit/repository/on_disk.ex b/lib/xgit/repository/on_disk.ex index 31d8d0e..cf3a3b0 100644 --- a/lib/xgit/repository/on_disk.ex +++ b/lib/xgit/repository/on_disk.ex @@ -34,11 +34,14 @@ defmodule Xgit.Repository.OnDisk do ## Return Value See `GenServer.start_link/3`. + + `{:error, :work_dir_invalid}` if `work_dir` is missing or not a String. """ @spec start_link(work_dir: Path.t()) :: GenServer.on_start() def start_link(opts) do - with {:ok, repo} <- Repository.start_link(__MODULE__, opts, opts), - {:ok, working_tree} <- WorkingTree.start_link(repo, Keyword.get(opts, :work_dir)), + with {:ok, work_dir} <- get_work_dir_opt(opts), + {:ok, repo} <- Repository.start_link(__MODULE__, work_dir, opts), + {:ok, working_tree} <- WorkingTree.start_link(repo, work_dir), :ok <- Repository.set_default_working_tree(repo, working_tree) do cover {:ok, repo} else @@ -46,19 +49,34 @@ defmodule Xgit.Repository.OnDisk do end end + defp get_work_dir_opt(opts) do + with {:has_opt?, true} <- {:has_opt?, Keyword.has_key?(opts, :work_dir)}, + _ <- IO.puts("@54"), + work_dir <- Keyword.get(opts, :work_dir), + _ <- IO.puts("@56"), + true <- is_binary(work_dir) do + {:ok, work_dir} + else + {:has_opt?, _} -> + {:error, :missing_arguments} + + x -> + IO.inspect(x, label: "WD WTF") + {:error, :work_dir_invalid} + # _ -> {:error, :work_dir_invalid} + end + end + @impl true - def init(opts) when is_list(opts) do + def init(work_dir) when is_binary(work_dir) do # TO DO: Be smarter about bare repos and non-standard git_dir locations. # https://github.com/elixir-git/xgit/issues/44 - with {:work_dir_arg, work_dir} when is_binary(work_dir) <- - {:work_dir_arg, Keyword.get(opts, :work_dir)}, - {:work_dir, true} <- {:work_dir, File.dir?(work_dir)}, + with {:work_dir, true} <- {:work_dir, File.dir?(work_dir)}, git_dir <- Path.join(work_dir, ".git"), {:git_dir, true} <- {:git_dir, File.dir?(git_dir)} do cover {:ok, %{work_dir: work_dir, git_dir: git_dir}} else - {:work_dir_arg, _} -> cover {:stop, :missing_arguments} {:work_dir, _} -> cover {:stop, :work_dir_doesnt_exist} {:git_dir, _} -> cover {:stop, :git_dir_doesnt_exist} end diff --git a/test/support/test/on_disk_repo_test_case.ex b/test/support/test/on_disk_repo_test_case.ex index ba0be66..8091647 100644 --- a/test/support/test/on_disk_repo_test_case.ex +++ b/test/support/test/on_disk_repo_test_case.ex @@ -4,7 +4,6 @@ defmodule Xgit.Test.OnDiskRepoTestCase do """ use ExUnit.CaseTemplate - alias Xgit.Repository alias Xgit.Repository.OnDisk alias Xgit.Test.TempDirTestCase @@ -15,7 +14,7 @@ defmodule Xgit.Test.OnDiskRepoTestCase do @doc ~S""" Returns a context with an on-disk repository set up. """ - @spec repo!() :: %{tmp_dir: Path.t(), xgit_repo: Repository.t()} + @spec repo!() :: %{tmp_dir: Path.t(), xgit_path: Path.t(), xgit_repo: Repository.t()} def repo! do %{tmp_dir: xgit_path} = context = TempDirTestCase.tmp_dir!() From e3421b1033fd009964b713630b8c3c79729711cc Mon Sep 17 00:00:00 2001 From: Eric Scouten Date: Sat, 5 Oct 2019 11:31:09 -0700 Subject: [PATCH 2/2] Remove IO.puts calls. --- lib/xgit/repository/on_disk.ex | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/xgit/repository/on_disk.ex b/lib/xgit/repository/on_disk.ex index cf3a3b0..fec96cc 100644 --- a/lib/xgit/repository/on_disk.ex +++ b/lib/xgit/repository/on_disk.ex @@ -51,9 +51,7 @@ defmodule Xgit.Repository.OnDisk do defp get_work_dir_opt(opts) do with {:has_opt?, true} <- {:has_opt?, Keyword.has_key?(opts, :work_dir)}, - _ <- IO.puts("@54"), work_dir <- Keyword.get(opts, :work_dir), - _ <- IO.puts("@56"), true <- is_binary(work_dir) do {:ok, work_dir} else