diff options
| author | ruki <[email protected]> | 2026-02-28 23:35:40 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2026-02-28 23:35:40 +0800 |
| commit | 157c2384c55d16cb8d60040a16e748d1213b5ebc (patch) | |
| tree | dd49bbbd04d1436932b8618a8e7f89a17e13ced5 | |
| parent | b569fbf9185bd6e6f6c6370fe486f7eb4e46e6c1 (diff) | |
improve to get language from template id
| -rw-r--r-- | xmake/actions/create/main.lua | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/xmake/actions/create/main.lua b/xmake/actions/create/main.lua index a544f9f15..782668529 100644 --- a/xmake/actions/create/main.lua +++ b/xmake/actions/create/main.lua @@ -23,6 +23,31 @@ import("core.base.option") import("core.project.project") import("actions.create.template", {rootdir = os.programdir()}) +-- get template language from template id +function _get_language_from_template(templateid) + local lang = option.get("language") + if not templateid or not lang or template.templatedir(lang, templateid) then + return lang + end + local langs = template.languages_for_template(templateid) + if #langs == 1 then + return langs[1] + elseif #langs > 1 then + raise("template(%s): please pass -l/--language, supported languages: %s", templateid, table.concat(langs, ", ")) + end + return lang +end + +-- get template id from command line options +function _get_templateid() + return option.get("template") +end + +-- get target name from command line options +function _get_targetname() + return option.get("target") or path.basename(project.directory()) or "demo" +end + -- create project from template function _create_project(lang, templateid, targetname) assert(targetname ~= ".", "you should specify ${red}-P${reset} instead of directly using ${red}.${reset}") @@ -78,12 +103,14 @@ function _create_project(lang, templateid, targetname) end function main() - -- enter the original working directory, because the default directory is in the project directory os.cd(os.workingdir()) + local targetname = _get_targetname() + local templateid = _get_templateid() + local lang = _get_language_from_template(templateid) + -- create project from template - local targetname = option.get("target") or path.basename(project.directory()) or "demo" cprint("${bright}create %s ...", targetname) - _create_project(option.get("language"), option.get("template"), targetname) + _create_project(lang, templateid, targetname) cprint("${color.success}create ok!") end |
