diff options
| author | ruki <[email protected]> | 2015-06-03 16:21:14 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2015-06-03 16:21:14 +0800 |
| commit | fc3638d5128d6f652d79df8985ca5efcb104d22f (patch) | |
| tree | 87ddca12301de8a3e19b210708288ebfdee31f28 /xmake/scripts/action/_run.lua | |
| parent | bcb0d8e7eb53865f627cadd79eb181de34e86f5a (diff) | |
run the given target
Diffstat (limited to 'xmake/scripts/action/_run.lua')
| -rw-r--r-- | xmake/scripts/action/_run.lua | 58 |
1 files changed, 55 insertions, 3 deletions
diff --git a/xmake/scripts/action/_run.lua b/xmake/scripts/action/_run.lua index 92972aa0b..8de5ab5f1 100644 --- a/xmake/scripts/action/_run.lua +++ b/xmake/scripts/action/_run.lua @@ -24,15 +24,67 @@ local _run = _run or {} -- load modules +local rule = require("base/rule") +local path = require("base/path") local utils = require("base/utils") local config = require("base/config") +local project = require("base/project") -- done the given config function _run.done() - - -- ok - return true + -- the options + local options = xmake._OPTIONS + assert(options and xmake._PROJECT_DIR) + + -- the target name + local name = options.target + if not name then + -- error + utils.error("no runable target!") + return false + end + + -- the targets + local targets = project.targets() + if not targets or not targets[name] then + -- error + utils.error("not found target: %s!", name) + return false + end + + -- the target + local target = targets[name] + if not target.kind or type(target.kind) ~= "string" or target.kind ~= "binary" then + -- error + utils.error("the target %s is not executale!", name) + return false + end + + -- the target file + local targetfile = rule.targetfile(name, target) + if targetfile and not path.is_absolute(targetfile) then + targetfile = path.absolute(targetfile, xmake._PROJECT_DIR) + end + + -- check the target file + if not targetfile and not os.isfile(targetfile) then + -- error + utils.error("not found target file: %s!", targetfile) + return false + end + + -- the arguments + local arguments = options.arguments or {} + if type(arguments) ~= "table" then + arguments = {} + end + + -- done + local ok = os.execute(string.format("%s %s", targetfile, table.concat(arguments))) + + -- ok? + return utils.ifelse(ok == 0, true, false) end -- return module: _run |
