Build/Public/api.lua
2022-06-24 20:12:03 +01:00

172 lines
3.7 KiB
Lua

-- private
local buildAction = auRequire("Core/Actions")
local target = auRequire("Core/Target")
local main = auRequire("Core/main")
local resourceCompiler = auRequire("Core/ResourceCompiler")
local protobuf = auRequire("Core/Protobuf")
local vala = auRequire("Core/Vala")
-- executes inline under iprocessor::process
function auAddBuildAction(...)
buildAction(...)
end
function auAddBuildActionO(...)
local type = {
-- stage: pre, post
-- filter: ...
-- lua/bin/targetName/command: relative path - lua script; relative path - executable; project name; command line
-- args: lua private passthrough; binary or target name command args
-- cwd: sln(default),prj
}
end
function auStart()
if (_auStart) then return end
_auStart = true
auRequire("Core/base")
end
function auStartSolution(sln)
auRequire("Core").solution.start(sln)
end
function auStartProject(project)
auStart()
auRequire("Core").project.startProject(project)
end
function auProcessSolution()
main.processSolution()
end
function auFilterForPlatforms(callback, ...)
target.auFilterForPlatforms(callback, ...)
end
function auFilterForConfigs(callback, ...)
target.auFilterForConfigs(callback, ...)
end
function auFilterForConfigPlatforms(callback, ...)
target.auFilterForConfigPlatforms(callback, ...)
end
function auAddVisit(...)
main.addVisit(...)
end
-- Returns an array of filter tables where each optional table is checked against the current combination of config/platform/arch
-- Varargs are logical anded with the final filter table
-- in object -> defer to objects.lua
function auFilterOf(obj, ...)
return target.auFilterOf(obj, ...)
end
function auFilterConfig(configs)
return auFilterOf({
configs = configs
})
end
function auFilterArch(arch)
return auFilterOf({
archs = arch
})
end
function auFilterPlatform(platform)
return auFilterOf({
platforms = platform
})
end
function auGetSetting(name)
return Aurora.Settings[name]
end
_G.filterStack = {}
function auFilter(filter)
local tbl = _G.filterStack;
if (not filter or #filter == 0) then
table.remove(tbl, #tbl)
else
table.insert(tbl, filter)
end
local filterArray = {}
auForEach(tbl, function(val)
filterArray = auMergeArray(filterArray, val)
end)
--print("FILTERING ", json.encode(filterArray), json.encode(filter))
_G.filter(filterArray)
end
function auLinkProject(...)
main.linkAuProject(...)
end
function auIncludeProject(...)
main.includeAuProject(...)
end
function auLinkAndRefProject(...)
main.importAndLinkProject(...)
end
function auAddFeature(...)
main.addFeature(...)
end
function auGetBaseProjectName()
return main.getBaseProjectName()
end
function auGetCurrentProject()
return main.getCurrentProjectName()
end
function auGetProjectProcessor(name)
return main.getProjectProcessor(name)
end
function auGetProjectMeta(name)
local processor = auGetProjectProcessor(name)
if (not processor) then
return
end
return processor:getMeta()
end
function auGetCurrentProjectProcessor()
return main.getProjectProcessor(auGetCurrentProject())
end
function auGetCurrentProjectMeta()
local temp = auGetCurrentProjectProcessor()
if (not temp) then return end
return auGetCurrentProjectProcessor():getMeta()
end
function auIsProjectIntialized(name)
return main.isProjectLoaded(name)
end
function auAddResource(...)
resourceCompiler(...)
end
function auProtobufFiles(files, extended)
protobuf.addProtobufFiles(files, extended)
end
function auProtobufIncludeProject(projectName)
protobuf.linkProject(projectName)
end
function auAddVala(info)
vala(info)
end