Use LÖVE new versionning scheme. Drop semver dependency. #53

This commit is contained in:
Antonin Décimo
2018-04-20 19:49:26 +02:00
parent 621d1da327
commit 28380122f6
7 changed files with 83 additions and 46 deletions

View File

@@ -19,7 +19,6 @@ dependencies = {
"luafilesystem", "luafilesystem",
"lua-zip", "lua-zip",
"middleclass", "middleclass",
"semver",
} }
build = { build = {
type = "builtin", type = "builtin",

View File

@@ -4,10 +4,8 @@
local fs = require 'luarocks.fs' local fs = require 'luarocks.fs'
local loadconf = require 'loadconf' local loadconf = require 'loadconf'
local semver = require 'semver'
local utils = require 'love-release.utils' local utils = require 'love-release.utils'
local ver = utils.love.ver
local pipe = {} local pipe = {}
@@ -37,7 +35,7 @@ function pipe.pipe(project)
local function setLoveVersion(v) local function setLoveVersion(v)
if type(v) == "string" and v ~= "" then if type(v) == "string" and v ~= "" then
local version = semver(v) local version = ver(v)
if not utils.love.isSupported(version) then if not utils.love.isSupported(version) then
local scriptLoveVersion = project.loveVersion local scriptLoveVersion = project.loveVersion
err("CONF: Your LÖVE conf version ("..v err("CONF: Your LÖVE conf version ("..v

View File

@@ -3,14 +3,14 @@
-- @usage env(project) -- @usage env(project)
local fs = require 'luarocks.fs' local fs = require 'luarocks.fs'
local semver = require 'semver'
local utils = require 'love-release.utils' local utils = require 'love-release.utils'
local ver = utils.love.ver
local pipe = {} local pipe = {}
--- Gets the version of the installed LÖVE. --- Gets the version of the installed LÖVE.
-- @treturn semver LÖVE version. -- @treturn ver LÖVE version.
-- @local -- @local
local function getSystemLoveVersion() local function getSystemLoveVersion()
local handle = io.popen('love --version') local handle = io.popen('love --version')
@@ -18,12 +18,12 @@ local function getSystemLoveVersion()
handle:close() handle:close()
local version = result:match('%d+%.%d+%.%d+') local version = result:match('%d+%.%d+%.%d+')
if version then if version then
return semver(version) return ver(version)
end end
end end
--- Gets the latest LÖVE version from the web. --- Gets the latest LÖVE version from the web.
-- @treturn semver LÖVE version. -- @treturn ver LÖVE version.
-- @local -- @local
local function getWebLoveVersion() local function getWebLoveVersion()
local releasesPath = utils.cache.."/releases.xml" local releasesPath = utils.cache.."/releases.xml"
@@ -35,17 +35,17 @@ local function getWebLoveVersion()
local releasesXml = io.open(releasesPath, "rb") local releasesXml = io.open(releasesPath, "rb")
local version = releasesXml:read("*a"):match("<title>(%d+%.%d+%.%d+)") local version = releasesXml:read("*a"):match("<title>(%d+%.%d+%.%d+)")
releasesXml:close() releasesXml:close()
return semver(version) return ver(version)
else else
return nil, err return nil, err
end end
end end
--- Gets the latest LÖVE version from the script, the system and the web. --- Gets the latest LÖVE version from the script, the system and the web.
-- @tparam semver script script version. -- @tparam ver script script version.
-- @tparam semver system system version. -- @tparam ver system system version.
-- @tparam semver web web version. -- @tparam ver web web version.
-- @treturn semver the latest version. -- @treturn ver the latest version.
-- @local -- @local
local function getLatestLoveVersion(script, system, web) local function getLatestLoveVersion(script, system, web)
local version = script local version = script
@@ -79,7 +79,7 @@ function pipe.pipe(project)
local systemLoveVersion = getSystemLoveVersion() local systemLoveVersion = getSystemLoveVersion()
local webLoveVersion = getWebLoveVersion() local webLoveVersion = getWebLoveVersion()
local scriptLoveVersion = utils.love.lastVersion() local scriptLoveVersion = utils.love.lastVersion
local isSupported = utils.love.isSupported local isSupported = utils.love.isSupported
if systemLoveVersion and not isSupported(systemLoveVersion) then if systemLoveVersion and not isSupported(systemLoveVersion) then

View File

@@ -217,7 +217,7 @@ function Project:setPackage(package)
end end
--- Sets the LÖVE version used. --- Sets the LÖVE version used.
-- @tparam semver version the LÖVE version. -- @tparam ver version the LÖVE version.
-- @treturn project self. -- @treturn project self.
function Project:setLoveVersion(version) function Project:setLoveVersion(version)
self.loveVersion = version self.loveVersion = version

View File

@@ -3,10 +3,10 @@
-- @usage macosx(project) -- @usage macosx(project)
local fs = require "luarocks.fs" local fs = require "luarocks.fs"
local semver = require "semver"
local zip = require "brimworks.zip" local zip = require "brimworks.zip"
local Script = require "love-release.script" local Script = require "love-release.script"
local utils = require "love-release.utils" local utils = require "love-release.utils"
local ver = utils.love.ver
local s = {} local s = {}
@@ -26,12 +26,14 @@ function s.script(project)
script:createLoveFile() script:createLoveFile()
fs.change_dir(project.releaseDirectory) fs.change_dir(project.releaseDirectory)
local prefix = "love-"..tostring(project.loveVersion).."-macosx-" local prefix = "love-"..tostring(project.loveVersion).."-macos"
local bin local bin
if project.loveVersion >= semver'0.9.0' then if project.loveVersion >= ver'11.0.0' then
bin = prefix.."x64.zip" bin = prefix..".zip"
elseif project.loveVersion >= ver'0.9.0' then
bin = prefix.."x-x64.zip"
else else
bin = prefix.."ub.zip" bin = prefix.."x-ub.zip"
end end
local url = "https://bitbucket.org/rude/love/downloads/"..bin local url = "https://bitbucket.org/rude/love/downloads/"..bin
local cache = utils.cache.."/"..bin local cache = utils.cache.."/"..bin
@@ -78,7 +80,7 @@ function s.script(project)
assert(ar:replace(infoPlistIndex, "string", infoPlist)) assert(ar:replace(infoPlistIndex, "string", infoPlist))
ar:close() ar:close()
os.rename(bin, project.title.."-macosx.zip") os.rename(bin, project.title.."-macos.zip")
fs.pop_dir() fs.pop_dir()
end end

View File

@@ -3,10 +3,10 @@
-- @usage windows(project) -- @usage windows(project)
local fs = require "luarocks.fs" local fs = require "luarocks.fs"
local semver = require "semver"
local zip = require "brimworks.zip" local zip = require "brimworks.zip"
local Script = require "love-release.script" local Script = require "love-release.script"
local utils = require "love-release.utils" local utils = require "love-release.utils"
local ver = utils.love.ver
local s = {} local s = {}
@@ -14,7 +14,11 @@ local s = {}
local function release(script, project, arch) local function release(script, project, arch)
local prefix = "love-"..tostring(project.loveVersion).."-win" local prefix = "love-"..tostring(project.loveVersion).."-win"
local dir, bin local dir, bin
if project.loveVersion >= semver'0.9.0' then if project.loveVersion.major == 11 then
bin = prefix..arch..".zip"
prefix = "love-"..tostring(project.loveVersion)..".0-win"
dir = prefix..arch.."/"
elseif project.loveVersion >= ver'0.9.0' then
bin = prefix..arch..".zip" bin = prefix..arch..".zip"
dir = prefix..arch.."/" dir = prefix..arch.."/"
else else
@@ -75,7 +79,7 @@ function s.script(project, arch)
if arch == 32 then if arch == 32 then
release(script, project, 32) release(script, project, 32)
end end
if arch == 64 and project.loveVersion >= semver'0.8.0' then if arch == 64 and project.loveVersion >= ver'0.8.0' then
release(script, project, 64) release(script, project, 64)
end end
fs.pop_dir() fs.pop_dir()

View File

@@ -3,7 +3,6 @@
local cfg = require 'luarocks.cfg' local cfg = require 'luarocks.cfg'
local fs = require 'luarocks.fs' local fs = require 'luarocks.fs'
local semver = require 'semver'
local utils = {} local utils = {}
@@ -30,40 +29,75 @@ end
utils.love = {} utils.love = {}
local ver = {
major = nil,
minor = nil,
patch = nil,
str = nil
}
utils.love.ver = ver
function ver:new(str)
local major, minor, patch = str:match("^(%d+)%.?(%d*)%.?(%d*)$")
assert(type(major) == 'string',
("Could not extract version number(s) from %q"):format(str))
local major, minor, patch = tonumber(major), tonumber(minor), tonumber(patch)
local o = { major = major, minor = minor, patch = patch, str = str }
setmetatable(o, self)
self.__index = self
return o
end
function ver:__eq(other)
return self.major == other.major and self.minor == other.minor and
self.patch == other.patch
end
function ver:__lt(other)
if self.major ~= other.major then return self.major < other.major end
if self.minor ~= other.minor then return self.minor < other.minor end
if self.patch ~= other.patch then return self.patch < other.patch end
return false
end
function ver:__tostring()
local buffer = { ("%d.%d"):format(self.major, self.minor) }
if self.patch then table.insert(buffer, "." .. self.patch) end
return table.concat(buffer)
end
setmetatable(ver, { __call = ver.new })
--- All supported LÖVE versions. --- All supported LÖVE versions.
-- @local -- @local
utils.love.versionTable = { utils.love.versionTable = {
semver'11.0.0', ver'11.1', ver'11.0',
semver'0.10.2', semver'0.10.1', semver'0.10.0', ver'0.10.2', ver'0.10.1', ver'0.10.0',
semver'0.9.2', semver'0.9.1', semver'0.9.0', ver'0.9.2', ver'0.9.1', ver'0.9.0',
semver'0.8.0', ver'0.8.0',
semver'0.7.2', semver'0.7.1', semver'0.7.0', ver'0.7.2', ver'0.7.1', ver'0.7.0',
semver'0.6.2', semver'0.6.1', semver'0.6.0', ver'0.6.2', ver'0.6.1', ver'0.6.0',
--[[ --[[
semver'0.5.0', ver'0.5.0',
semver'0.4.0', ver'0.4.0',
semver'0.3.2', semver'0.3.1', semver'0.3.0', ver'0.3.2', ver'0.3.1', ver'0.3.0',
semver'0.2.1', semver'0.2.0', ver'0.2.1', ver'0.2.0',
semver'0.1.1', ver'0.1.1',
--]] --]]
} }
--- Last script LÖVE version. --- Last script LÖVE version.
function utils.love.lastVersion() utils.love.lastVersion = utils.love.versionTable[1]
return utils.love.versionTable[1]
end
--- First supported LÖVE version. --- First supported LÖVE version.
function utils.love.minVersion() utils.love.minVersion = utils.love.versionTable[#utils.love.versionTable]
return utils.love.versionTable[#utils.love.versionTable]
end
--- Checks if a LÖVE version exists and is supported. --- Checks if a LÖVE version exists and is supported.
-- @tparam semver version LÖVE version. -- @tparam ver version LÖVE version.
-- @treturn bool true is the version is supported. -- @treturn bool true is the version is supported.
function utils.love.isSupported(version) function utils.love.isSupported(version)
if version >= utils.love.minVersion() if version >= utils.love.minVersion
and version <= utils.love.lastVersion() then and version <= utils.love.lastVersion then
for _, v in ipairs(utils.love.versionTable) do for _, v in ipairs(utils.love.versionTable) do
if version == v then if version == v then
return true return true