forked from qt-creator/qt-creator
Change-Id: I5398480233c830bb08c641bc8193b068fb037032 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
100 lines
2.3 KiB
Lua
100 lines
2.3 KiB
Lua
--- luarocks install luafilesystem
|
|
local lfs = require "lfs"
|
|
|
|
function string:endswith(suffix)
|
|
return self:sub(- #suffix) == suffix
|
|
end
|
|
|
|
function findLUpdate()
|
|
if os.execute("lupdate -version 2>/dev/null") then
|
|
return "lupdate"
|
|
end
|
|
QtDir = os.getenv("QTDIR")
|
|
if QtDir then
|
|
local path = QtDir .. "/bin/lupdate"
|
|
if os.execute(path .. " -version 2>/dev/null") then
|
|
return path
|
|
end
|
|
end
|
|
return "lupdate"
|
|
end
|
|
|
|
LUpdatePath = findLUpdate()
|
|
TmpFiles = {}
|
|
|
|
|
|
local curdir, err = lfs.currentdir()
|
|
if not curdir then
|
|
print("Error: " .. err)
|
|
return
|
|
end
|
|
|
|
local folderName = curdir:match("([^/]+)$")
|
|
print("Working on: " .. curdir)
|
|
local pluginSpecName = folderName .. ".lua"
|
|
|
|
--- Noop tr function
|
|
function tr(str) return str end
|
|
|
|
local specScript, err = loadfile(curdir .. "/" .. pluginSpecName)
|
|
if not specScript then
|
|
print("Error: " .. err)
|
|
return
|
|
end
|
|
|
|
local spec, err = specScript()
|
|
|
|
if not spec then
|
|
print("Error: " .. err)
|
|
return
|
|
end
|
|
|
|
if not spec.languages then
|
|
print("Error: No languages specified in plugin spec.")
|
|
return
|
|
end
|
|
|
|
TrContext = spec.Name:gsub("[^a-zA-Z]", "_")
|
|
|
|
for file in lfs.dir(".") do
|
|
if file ~= "." and file ~= ".." and file:endswith(".lua") and file ~= "lupdate.lua" then
|
|
local f = io.open(file, "r")
|
|
if f then
|
|
local contents = f:read("a")
|
|
local tmpname = os.tmpname()
|
|
local tf = io.open(tmpname, "w")
|
|
if tf then
|
|
tf:write("--- class " .. TrContext .. " { Q_OBJECT \n")
|
|
tf:write(contents)
|
|
tf:write("--- }\n")
|
|
tf:close()
|
|
table.insert(TmpFiles, tmpname)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
AllFiles = table.concat(TmpFiles, "\n")
|
|
LstFileName = os.tmpname()
|
|
local lstFile = io.open(LstFileName, "w")
|
|
|
|
if lstFile then
|
|
lstFile:write(AllFiles)
|
|
lstFile:close()
|
|
|
|
local allLangs = ""
|
|
for _, lang in ipairs(spec.languages) do
|
|
local name = "ts/" .. string.lower(folderName) .. "_" .. lang .. ".ts"
|
|
allLangs = allLangs .. name .. " "
|
|
end
|
|
|
|
lfs.mkdir("ts")
|
|
os.execute(LUpdatePath .. " @" .. LstFileName .. " -ts " .. allLangs)
|
|
|
|
--- Cleanup
|
|
os.remove(LstFileName)
|
|
for _, file in ipairs(TmpFiles) do
|
|
os.remove(file)
|
|
end
|
|
end
|