local read_tzfile = require"luatz.tzfile".read_tzfile

local base_zoneinfo_path = "/usr/share/zoneinfo/"
local local_zoneinfo_path = "/etc/localtime"
local tz_cache = {}

local function name_to_zoneinfo_path(name)
    if name == nil then
        return local_zoneinfo_path
    elseif name:sub(1, 1) == "/" then
        return name
    else
        return base_zoneinfo_path .. name
    end
end

local function clear_tz_cache(name)
    tz_cache[name_to_zoneinfo_path(name)] = nil
end

local function get_tz(name)
    local path = name_to_zoneinfo_path(name)
    -- TODO: stat path
    local tzinfo = tz_cache[path]
    if tzinfo == nil then
        tzinfo = read_tzfile(path)
        tz_cache[path] = tzinfo
    end
    return tzinfo
end

return {
    get_tz = get_tz,
    clear_tz_cache = clear_tz_cache,
}
