summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2022-07-06 06:13:42 +0800
committerGitHub <[email protected]>2022-07-06 06:13:42 +0800
commita33af222859b2563da533530299ce79857820ffc (patch)
tree13742ad9613f5a758fac07e878fa3d16c4373aab
parent8595c98806076a08758303837a7804115b80a666 (diff)
parent6ae0d07077fc911484460a5270d08487b55f6e7a (diff)
Merge pull request #2532 from SirLynix/patch-11
xmake run: Improve error message when target doesn't exist
-rw-r--r--xmake/actions/run/main.lua28
1 files changed, 27 insertions, 1 deletions
diff --git a/xmake/actions/run/main.lua b/xmake/actions/run/main.lua
index 6daae3076..01169e139 100644
--- a/xmake/actions/run/main.lua
+++ b/xmake/actions/run/main.lua
@@ -94,6 +94,20 @@ function _add_target_pkgenvs(target, targets_added)
end
end
+-- find target names matching a specific name
+function _find_matching_target_names(targetname)
+ targetname = targetname:lower()
+ local matching_targetnames = {}
+ for _, target in ipairs(project.ordertargets()) do
+ if target:name():lower():find(targetname, 1, true) then
+ table.insert(matching_targetnames, target:name())
+ end
+ end
+
+ table.sort(matching_targetnames)
+ return matching_targetnames
+end
+
-- run the given target
function _run(target)
@@ -148,7 +162,19 @@ function _check_targets(targetname, group_pattern)
-- get targets
local targets = {}
if targetname then
- local target = assert(project.target(targetname), "%s not found!", targetname)
+ local target = project.target(targetname)
+ if not target then
+ -- check if the name is part of other target to help
+ local possible_targetnames = _find_matching_target_names(targetname)
+
+ local err = targetname .. " is not a valid target name for this project"
+ if #possible_targetnames > 0 then
+ err = err .. "\nlist of valid target names close to your input:\n - " .. table.concat(possible_targetnames, '\n - ')
+ end
+
+ raise(err)
+ end
+
table.insert(targets, target)
else
for _, target in ipairs(project.ordertargets()) do