summaryrefslogtreecommitdiff
path: root/xmake/modules/private/async/jobpool.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2020-03-08 18:06:23 +0800
committerruki <[email protected]>2020-03-08 18:06:23 +0800
commit07cb69433cdc6a8d60504ae88cc6251f9c69201a (patch)
tree1e4554c8f1941a620c0240d5d2c8e43e2d7789e5 /xmake/modules/private/async/jobpool.lua
parent3f5723c632d0734ce3ea93e174cdf099eeefb543 (diff)
fix jobpool
Diffstat (limited to 'xmake/modules/private/async/jobpool.lua')
-rw-r--r--xmake/modules/private/async/jobpool.lua30
1 files changed, 27 insertions, 3 deletions
diff --git a/xmake/modules/private/async/jobpool.lua b/xmake/modules/private/async/jobpool.lua
index 07f651d11..956ee9300 100644
--- a/xmake/modules/private/async/jobpool.lua
+++ b/xmake/modules/private/async/jobpool.lua
@@ -35,17 +35,41 @@ function jobpool:rootjob()
return self._rootjob
end
+-- new job
+--
+-- @param name the job name
+-- @param run the run command/script
+--
+function jobpool:newjob(name, run)
+ return {name = name, run = run}
+end
+
-- add job to the given job node
--
--- @param rootjob the root job node
+-- @param job the job
+-- @param rootjob the root job node (optional)
+--
+-- or
+--
-- @param name the job name
-- @param run the run command/script
+-- @param rootjob the root job node (optional)
--
-function jobpool:addjob(name, run, rootjob)
+function jobpool:addjob(job_or_name, ...)
+ local args = table.pack(...)
+ local job
+ local rootjob
+ if type(job_or_name) == "table" then
+ job = job_or_name
+ rootjob = args[1]
+ else
+ rootjob = args[2]
+ job = {name = job_or_name, run = args[1]}
+ end
rootjob = rootjob or self:rootjob()
- local job = {name = name, run = run, _parent = rootjob}
rootjob._deps = rootjob._deps or dlist:new()
rootjob._deps:push(job)
+ job._parent = rootjob
self._count = self._count + 1
return job
end