Add check to ensure plugin version matches cargo version (#794)

This modifies Rojo's build script to throw a fit if we're building a
plugin with a semver incompatible version. In the process, it moves the
version of the plugin to a file named `Version.txt` that's parsed at
runtime. This should be minimally invasive but it's technically worse
for performance than the hardcoded table and string we had before.

This feels better than a CI check or just manually verifying because it
makes it physically impossible for us to forget since Rojo won't build
with it being wrong.
This commit is contained in:
Micah
2023-10-03 07:29:47 -07:00
committed by GitHub
parent eab7c607cd
commit 010e50a25d
6 changed files with 60 additions and 28 deletions

View File

@@ -2,11 +2,23 @@ local strict = require(script.Parent.strict)
local isDevBuild = script.Parent.Parent:FindFirstChild("ROJO_DEV_BUILD") ~= nil
local Version = script.Parent.Parent.Version
local realVersion = Version.Value:split(".")
for i = 1, 3 do
local num = tonumber(realVersion[i])
if num then
realVersion[i] = num
else
error(("invalid version `%s` (field %d)"):format(realVersion[i], i))
end
end
return strict("Config", {
isDevBuild = isDevBuild,
codename = "Epiphany",
version = { 7, 3, 0 },
expectedServerVersionString = "7.2 or newer",
version = realVersion,
expectedServerVersionString = ("%d.%d or newer"):format(realVersion[1], realVersion[2]),
protocolVersion = 4,
defaultHost = "localhost",
defaultPort = "34872",