Skip to content

Commit 9de9bfe

Browse files
committed
Respect HEX_REPO_IDENTIFIER environment variable
The new variable allows users to opt-out of identification by setting the value to anything other than `1` or `true`. It remains enabled by default.
1 parent 6515b14 commit 9de9bfe

File tree

3 files changed

+19
-8
lines changed

3 files changed

+19
-8
lines changed

lib/hex/http.ex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ defmodule Hex.HTTP do
4949
default_headers = %{"user-agent" => user_agent()}
5050

5151
default_headers
52-
|> add_client_identifier_header()
52+
|> add_repo_identifier_header()
5353
|> Map.merge(headers)
5454
end
5555

@@ -273,8 +273,8 @@ defmodule Hex.HTTP do
273273
host
274274
end
275275

276-
defp add_client_identifier_header(headers) do
277-
case Hex.Utils.client_identifier() do
276+
defp add_repo_identifier_header(headers) do
277+
case Hex.Utils.repo_identifier() do
278278
nil -> headers
279279
identifier -> Map.put(headers, "x-hex-repo-id", identifier)
280280
end

lib/hex/utils.ex

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -333,8 +333,9 @@ defmodule Hex.Utils do
333333
334334
Returns `nil` if git is not available or the directory is not a git repository.
335335
"""
336-
def client_identifier do
337-
with path when is_binary(path) <- System.find_executable("git"),
336+
def repo_identifier do
337+
with flag when flag in ["1", "true"] <- System.get_env("HEX_REPO_IDENTIFIER", "1"),
338+
path when is_binary(path) <- System.find_executable("git"),
338339
{output, 0} <- System.cmd("git", ["rev-list", "--max-parents=0", "HEAD"]) do
339340
output
340341
|> String.trim()

test/hex/utils_test.exs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
defmodule Hex.UtilsTest do
22
use ExUnit.Case
33

4-
describe "client_identifier/0" do
4+
describe "repo_identifier/0" do
55
test "an identifier is included within a repository" do
6-
assert Hex.Utils.client_identifier() =~ ~r/^[a-f0-9]{64}$/
6+
assert Hex.Utils.repo_identifier() =~ ~r/^[a-f0-9]{64}$/
77
end
88

99
test "identifier is nil outside of a repository" do
@@ -18,10 +18,20 @@ defmodule Hex.UtilsTest do
1818
try do
1919
File.mkdir!(dir)
2020

21-
File.cd!(dir, fn -> refute Hex.Utils.client_identifier() end)
21+
File.cd!(dir, fn -> refute Hex.Utils.repo_identifier() end)
2222
after
2323
File.rmdir(dir)
2424
end
2525
end
26+
27+
test "identifier is nil when disabled by an environment variable" do
28+
System.put_env("HEX_REPO_IDENTIFIER", "0")
29+
refute Hex.Utils.repo_identifier()
30+
31+
System.put_env("HEX_REPO_IDENTIFIER", "false")
32+
refute Hex.Utils.repo_identifier()
33+
after
34+
System.delete_env("HEX_REPO_IDENTIFIER")
35+
end
2636
end
2737
end

0 commit comments

Comments
 (0)