Packages
excoveralls
0.15.0
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.1
0.17.0
0.16.1
0.16.0
0.15.3
0.15.2
0.15.1
0.15.0
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.3
0.12.2
0.12.1
0.12.0
0.11.2
0.11.1
0.11.0
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
Coverage report tool for Elixir with coveralls.io integration.
Current section
Files
Jump to
Current section
Files
lib/excoveralls/github.ex
defmodule ExCoveralls.Github do
@moduledoc """
Handles GitHub Actions integration with coveralls.
"""
alias ExCoveralls.Poster
def execute(stats, options) do
json = generate_json(stats, Enum.into(options, %{}))
if options[:verbose] do
IO.puts(json)
end
Poster.execute(json)
end
def generate_json(stats, options \\ %{})
def generate_json(stats, options) do
%{
repo_token: get_env("GITHUB_TOKEN"),
service_name: "github",
source_files: stats,
parallel: options[:parallel],
flag_name: options[:flagname],
git: git_info()
}
|> Map.merge(job_data())
|> Jason.encode!
end
defp get_env(env) do
env
|> System.get_env
end
defp job_data() do
get_env("GITHUB_EVENT_NAME")
|> case do
"pull_request" ->
%{
service_pull_request: get_pr_id(),
service_job_id: "#{get_sha("pull_request")}-PR-#{get_pr_id()}",
}
event ->
%{service_job_id: get_sha(event)}
end
end
defp get_pr_id do
event_info()
|> Map.get("number")
|> Integer.to_string
end
defp get_committer_name do
event_info()
|> Map.get("sender")
|> Map.get("login")
end
defp get_sha("pull_request") do
event_info()
|> Map.get("pull_request")
|> Map.get("head")
|> Map.get("sha")
end
defp get_sha(_) do
get_env("GITHUB_SHA")
end
defp get_message("pull_request") do
{message, _} = System.cmd("git", ["log", get_sha("pull_request"), "-1", "--pretty=format:%s"])
message
end
defp get_message(_) do
{message, _} = System.cmd("git", ["log", "-1", "--pretty=format:%s"])
message
end
defp event_info do
get_env("GITHUB_EVENT_PATH")
|> File.read!()
|> Jason.decode!()
end
defp git_info do
event = get_env("GITHUB_EVENT_NAME")
%{
head: %{
id: get_sha(event),
committer_name: get_committer_name(),
message: get_message(event)
},
branch: get_branch()
}
end
defp get_branch do
get_env("GITHUB_REF")
end
end