Module:Sandbox/BDavis (WMF)/Version

This is an old revision of this page, as edited by BDavis (WMF) (talk | contribs) at 03:11, 30 June 2016 (Copy from Module:Version&oldid=2174531). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

local p = {}
local releases = {}

-- HEY YOU, UPDATE THESE
releases["1.27.0"] = "2016-06-28"
releases["1.26.3"] = "2016-05-20"
releases["1.23.14"] = "2016-05-20"

-- Is there a beta branch that isn't a proper release yet?
p.isthereabeta = false
-- OKAY YOU CAN STOP NOW

p.releases = releases

-- get trimmed version like "1.XX"
function p.branch( version )
	return string.sub(version, 0,4)
end

-- git branch like REL1_XX
function p.git_branch( version )
	return "REL1_" .. string.sub(p.branch(version), 3)
end

function p.islts( version )
	local branch = p.branch( version )
	-- yeah don't do this
	return branch == "1.19" or branch == "1.23" or branch == "1.27"
end

function p.get( frame )
	return p.version( frame.args[1], frame.args[2] )
end

-- main function
-- release: stable, legacy, lts, alpha
-- format: version, branch, git, date
function p.version( release, format )
	local versions = {}
	for k,v in pairs(p.releases) do
		table.insert(versions,k)
	end
	table.sort(versions)
	--mw.logObject(versions)
	--mw.log(#versions)
	local version = "0.0.0"
	if release == "stable" then
		version = versions[#versions]
	elseif release == "legacy" then
		version = versions[#versions-1]
	elseif release == "lts" then
		for i,v in ipairs(versions) do
			-- this might not be right.
			if p.islts(v) then
				version = v
			end
		end
	elseif release == "alpha" then
		-- alpha only works with "branch" output
		
		version = tonumber(p.branch(versions[#versions]))+0.01
		if p.isthereabeta then
			version = version + 0.01
		end
		version = tostring(version)
	end

	local out = "WRONG"
	if format == "version" then
		out = version
	elseif format == "branch" then
		out = p.branch( version )
	elseif format == "git" then
		out = p.git_branch( version )
	elseif format == "date" then
		out = p.releases[version]
	end

	return out
end

return p