% Hacky means to extract API version from fdbcli protocol version output
% See https://github.com/apple/foundationdb/blob/master/flow/ProtocolVersion.h
MaxAPIVersion =
    begin
        VsnInfo = os:cmd("fdbcli --version"),
        case re:run(VsnInfo, "protocol ([a-f0-9]*)", [{capture, [1], list}]) of
            {match, [ProtocolStr]} ->
                ProtocolVsn = list_to_integer(ProtocolStr, 16),
                APIVersionBytes = (ProtocolVsn band 16#0000000FFF00000) bsr 20,
                integer_to_list(APIVersionBytes, 16);
            nomatch ->
                undefined
        end
    end.

% https://github.com/markusn/coveralls-erl#example-usage-rebar3-and-github-actions
CoverallConfig =
    case {os:getenv("GITHUB_ACTIONS"), os:getenv("GITHUB_TOKEN")} of
        {"true", Token} when is_list(Token) ->
        CONFIG1 = [{coveralls_repo_token, Token},
                    {coveralls_service_job_id, os:getenv("GITHUB_RUN_ID")},
                    {coveralls_service_number, os:getenv("GITHUB_RUN_NUMBER")},
                    {coveralls_commit_sha, os:getenv("GITHUB_SHA")},
                    {coveralls_flag_name, os:getenv("COVERALLS_FLAG_NAME")} | CONFIG],
        case os:getenv("GITHUB_EVENT_NAME") =:= "pull_request"
            andalso string:tokens(os:getenv("GITHUB_REF"), "/") of
            [_, "pull", PRNO, _] ->
                [{coveralls_service_pull_request, PRNO} | CONFIG1];
            _ ->
                CONFIG1
        end;
        _ ->
        CONFIG
    end.

[{port_env, [
    {
        "(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)",
        "CFLAGS",
        "$CFLAGS -I/usr/local/include -Ic_src/ -g -Wall -Werror " ++ (case MaxAPIVersion of undefined -> ""; _ -> "-DFDB_API_VERSION=" ++ MaxAPIVersion end)
    },
    {
        "win32",
        "CFLAGS",
        "$CFLAGS /I\"c:/Program Files/foundationdb/include\" /O2 /DNDEBUG " ++ (case MaxAPIVersion of undefined -> ""; _ -> "/DFDB_API_VERSION=" ++ MaxAPIVersion end)
    },

    {
        "(linux|solaris|freebsd|netbsd|openbsd|dragonfly|gnu)",
        "LDFLAGS",
        "$LDFLAGS -L/usr/local/lib -lfdb_c"
    },
    {
        "(darwin)",
        "LDFLAGS",
        "$LDFLAGS -rpath /usr/local/lib -L/usr/local/lib -lfdb_c"
    },
    {
        "win32",
        "LDFLAGS",
        "$LDFLAGS /LIBPATH:\"c:/Program Files/foundationdb/lib/foundationdb\" fdb_c.lib"
    }
]}] ++ CoverallConfig.
