local serverUtils = {}

serverUtils.versionCheck = function(repository)
	local resource = GetInvokingResource() or GetCurrentResourceName()

	local currentVersion = "v1.0.9"

	if currentVersion then
		currentVersion = currentVersion:match("%d+%.%d+%.%d+")
	end

	if not currentVersion then
		return print(("^1Unable to determine current resource version for '%s' ^0"):format(resource))
	end

	SetTimeout(1000, function()
		PerformHttpRequest(
			("https://api.github.com/repos/%s/releases/latest"):format(repository),
			function(status, response)
				if status ~= 200 then
					return
				end

				response = json.decode(response)
				if response.prerelease then
					return
				end

				local latestVersion = response.tag_name:match("%d+%.%d+%.%d+")
				if not latestVersion or latestVersion == currentVersion then
					return
				end

				local cv = { string.strsplit(".", currentVersion) }
				local lv = { string.strsplit(".", latestVersion) }

				for i = 1, #cv do
					local current, minimum = tonumber(cv[i]), tonumber(lv[i])

					if current ~= minimum then
						if current < minimum then
							return print(
								("^3An update is available for %s (current version: %s)\r\n%s^0"):format(
									resource,
									currentVersion,
									response.html_url
								)
							)
						else
							break
						end
					end
				end
			end,
			"GET"
		)
	end)
end

serverUtils.isInterfaceCompiled = function()
	local fileCheck = LoadResourceFile(GetCurrentResourceName(), "dist/index.html")
	return fileCheck and true or false
end

return serverUtils
