fix: more alignments still
This commit is contained in:
@@ -171,6 +171,26 @@ defmodule BDS.Git do
|
||||
end
|
||||
end
|
||||
|
||||
def remote_state(project_id, opts \\ []) when is_binary(project_id) and is_list(opts) do
|
||||
with {:ok, project_dir} <- project_dir(project_id),
|
||||
{:ok, local_branch} <- current_branch(project_dir, opts) do
|
||||
case upstream_branch(project_dir, opts) do
|
||||
{:ok, nil} ->
|
||||
{:ok, %{local_branch: local_branch, upstream_branch: nil, has_upstream: false, ahead: 0, behind: 0}}
|
||||
|
||||
{:ok, upstream_branch} ->
|
||||
{:ok,
|
||||
%{
|
||||
local_branch: local_branch,
|
||||
upstream_branch: upstream_branch,
|
||||
has_upstream: true,
|
||||
ahead: revision_count(project_dir, "#{upstream_branch}..HEAD", opts),
|
||||
behind: revision_count(project_dir, "HEAD..#{upstream_branch}", opts)
|
||||
}}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
defp project_dir(project_id) do
|
||||
case Projects.get_project(project_id) do
|
||||
nil -> {:error, :not_found}
|
||||
@@ -274,6 +294,13 @@ defmodule BDS.Git do
|
||||
]
|
||||
end
|
||||
|
||||
defp upstream_branch(project_dir, opts) do
|
||||
case run_git(project_dir, ["rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{upstream}"], opts) do
|
||||
{:ok, output} -> {:ok, blank_to_nil(output)}
|
||||
{:error, {:git_failed, _message}} -> {:ok, nil}
|
||||
end
|
||||
end
|
||||
|
||||
defp parse_status(output) do
|
||||
output
|
||||
|> String.split("\n", trim: true)
|
||||
@@ -334,6 +361,20 @@ defmodule BDS.Git do
|
||||
end
|
||||
end
|
||||
|
||||
defp revision_count(project_dir, revision_range, opts) do
|
||||
case run_git(project_dir, ["rev-list", "--count", revision_range], opts) do
|
||||
{:ok, output} -> parse_count(output)
|
||||
{:error, {:git_failed, _message}} -> 0
|
||||
end
|
||||
end
|
||||
|
||||
defp parse_count(value) do
|
||||
case Integer.parse(to_string(value || "")) do
|
||||
{count, _rest} -> count
|
||||
:error -> 0
|
||||
end
|
||||
end
|
||||
|
||||
defp category_for_path("posts/" <> _rest), do: :posts
|
||||
defp category_for_path("scripts/" <> _rest), do: :scripts
|
||||
defp category_for_path("templates/" <> _rest), do: :templates
|
||||
|
||||
Reference in New Issue
Block a user