You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
185 lines
6.4 KiB
Lua
185 lines
6.4 KiB
Lua
-- read namespace from global env
|
|
local _G = _G
|
|
local Grichelde = _G.Grichelde or {}
|
|
|
|
local pairs, tClone, find, sub, cGreen, cOrange, cRed, toNumber
|
|
= Grichelde.F.pairs, Grichelde.F.tClone, Grichelde.F.find, Grichelde.F.sub, Grichelde.F.cGreen, Grichelde.F.cOrange, Grichelde.F.cRed, Grichelde.F.toNumber
|
|
|
|
function Grichelde:Upgrade_To_v060()
|
|
self:PrefixedPrint(self.L.Upgrade_ToVersion, cOrange("0.6.0"))
|
|
|
|
local replacements = self.db.profile.replacements or {}
|
|
self:DebugPrint("Upgrade_To_v060 : old database")
|
|
self:DebugPrint(replacements)
|
|
|
|
for _, replTable in pairs(replacements) do
|
|
replTable["ignoreCase"] = not replTable["caseSensitive"]
|
|
replTable["caseSensitive"] = nil
|
|
end
|
|
|
|
self:DebugPrint("Upgrade_To_v060 : new database")
|
|
self:DebugPrint(replacements)
|
|
return 0, 6, 0
|
|
end
|
|
|
|
function Grichelde:Upgrade_To_v070()
|
|
self:PrefixedPrint(self.L.Upgrade_ToVersion, cOrange("0.7.0"))
|
|
|
|
local replacements = self.db.profile.replacements or {}
|
|
self:DebugPrint("Upgrade_To_v070 : old replacements")
|
|
self:DebugPrint(replacements)
|
|
|
|
for _, replTable in pairs(replacements) do
|
|
replTable["exactCase"] = not replTable["ignoreCase"]
|
|
replTable["ignoreCase"] = nil
|
|
end
|
|
|
|
self:DebugPrint("Upgrade_To_v070 : new replacements")
|
|
self:DebugPrint(replacements)
|
|
return 0, 7, 0
|
|
end
|
|
|
|
function Grichelde:Upgrade_To_v072()
|
|
self:PrefixedPrint(self.L.Upgrade_ToVersion, cOrange("0.7.2"))
|
|
|
|
self:DebugPrint("Upgrade_To_v072 : old database")
|
|
self:DebugPrint(self.db.profile)
|
|
|
|
self.db.profile["minimapButton"] = { hide = false }
|
|
|
|
self:DebugPrint("Upgrade_To_v072 : new database")
|
|
self:DebugPrint(self.db.profile)
|
|
return 0, 7, 2
|
|
end
|
|
|
|
function Grichelde:Upgrade_To_v080()
|
|
self:PrefixedPrint(self.L.Upgrade_ToVersion, cOrange("0.8.0"))
|
|
|
|
local replacements = self.db.profile.replacements or {}
|
|
self:DebugPrint("Upgrade_To_v080 : old replacements")
|
|
self:DebugPrint(replacements)
|
|
|
|
for _, replTable in pairs(replacements) do
|
|
replTable["active"] = true
|
|
end
|
|
|
|
self:DebugPrint("Upgrade_To_v080 : new replacements")
|
|
self:DebugPrint(self.db.profile)
|
|
return 0, 8, 0
|
|
end
|
|
|
|
function Grichelde:Upgrade_To_v090()
|
|
self:PrefixedPrint(self.L.Upgrade_ToVersion, cOrange("0.9.0"))
|
|
|
|
local replacements = self.db.profile.replacements or {}
|
|
self:DebugPrint("Upgrade_To_v090 : old replacements")
|
|
self:DebugPrint(replacements)
|
|
|
|
for _, replTable in pairs(replacements) do
|
|
if (replTable["active"] == true) then
|
|
replTable["matchWhen"] = 2
|
|
else
|
|
replTable["matchWhen"] = 1
|
|
end
|
|
replTable["active"] = nil
|
|
end
|
|
|
|
self:DebugPrint("Upgrade_To_v090 : new replacements")
|
|
self:DebugPrint(self.db.profile)
|
|
return 0, 9, 0
|
|
end
|
|
|
|
function Grichelde:UpgradeDatabase()
|
|
local function parseVersion(version)
|
|
local _, _, major, minor, patch, ext = find(version, "(%d+)%.(%d+)%.(%d+)(.*)")
|
|
local preBuild, build = ext, ""
|
|
if (sub(ext, 1, 1) == "-") then
|
|
local b = find(ext, "+", 2)
|
|
if (b ~= nil) then
|
|
preBuild = sub(ext, 1, b)
|
|
build = sub(ext, b + 1)
|
|
else
|
|
preBuild = sub(ext, 1, b)
|
|
end
|
|
end
|
|
return toNumber(major) or 0, toNumber(minor) or 0, toNumber(patch) or 0, preBuild, build
|
|
end
|
|
|
|
local gMajor, gMinor, gPatch = parseVersion(self.version)
|
|
local dbVersion = self.db.global.version
|
|
|
|
if (dbVersion == nil) then
|
|
self:DebugPrint("New installation detected, add sample mappings")
|
|
-- do NOT set self.db.profile.replacements = {} it will break defaults
|
|
local sampleRepl = self.getDefaultSampleMappings()
|
|
for replName, replTable in pairs(sampleRepl) do
|
|
self:TracePrint("UpgradeDatabase : copySampleMappings %s", replName)
|
|
self.db.profile.replacements[replName] = tClone(replTable)
|
|
end
|
|
|
|
self.db.global.version = self:Format("%d.%d.%d", gMajor, gMinor, gPatch)
|
|
self:DebugPrint("Database version %s sucessfully created", self.db.global.version)
|
|
else
|
|
-- detect if upgrade is neccessary or downgrade was done
|
|
self:DebugPrint("Detected database version:", dbVersion)
|
|
|
|
local dbMajor, dbMinor, dbPatch = parseVersion(dbVersion)
|
|
local downGrade = false
|
|
if (dbMajor > gMajor) then
|
|
downGrade = true
|
|
elseif dbMajor == gMajor then
|
|
if (dbMinor > gMinor) then
|
|
downGrade = true
|
|
elseif dbMinor == gMinor then
|
|
if (dbPatch > gPatch) then
|
|
downGrade = true
|
|
end
|
|
end
|
|
end
|
|
|
|
if downGrade then
|
|
self:PrefixedPrint(cRed(self.L.Downgrade_Detected), self.L.AddonName)
|
|
else
|
|
local upgrade = 0
|
|
local error = false
|
|
|
|
if (dbMajor == 0) then
|
|
if (dbMinor < 6) then
|
|
upgrade = upgrade + 1
|
|
dbMajor, dbMinor, dbPatch = self:Upgrade_To_v060(dbVersion)
|
|
end
|
|
if (dbMinor < 7) then
|
|
upgrade = upgrade + 1
|
|
dbMajor, dbMinor, dbPatch = self:Upgrade_To_v070(dbVersion)
|
|
end
|
|
if (dbMinor == 7) then
|
|
if (dbPatch < 2) then
|
|
upgrade = upgrade + 1
|
|
dbMajor, dbMinor, dbPatch = self:Upgrade_To_v072(dbVersion)
|
|
end
|
|
end
|
|
if (dbMinor < 8) then
|
|
upgrade = upgrade + 1
|
|
dbMajor, dbMinor, dbPatch = self:Upgrade_To_v080(dbVersion)
|
|
end
|
|
if (dbMinor < 9) then
|
|
upgrade = upgrade + 1
|
|
dbMajor, dbMinor, dbPatch = self:Upgrade_To_v090(dbVersion)
|
|
end
|
|
end
|
|
|
|
if (upgrade == 0) or (error == false) then
|
|
-- bump version number even if no update is required
|
|
self.db.global.version = self:Format("%d.%d.%d", gMajor, gMinor, gPatch)
|
|
end
|
|
|
|
if (upgrade == 0) then
|
|
self:DebugPrint("Database was up-to-date")
|
|
elseif (error == false) then
|
|
self:PrefixedPrint(cGreen(self.L.Upgrade_Successful))
|
|
else
|
|
self:PrefixedPrint(cRed(self.L.Upgrade_Error))
|
|
end
|
|
end
|
|
end
|
|
end |