diff options
| author | Saikari <[email protected]> | 2026-02-02 10:28:45 +0300 |
|---|---|---|
| committer | Saikari <[email protected]> | 2026-02-02 10:28:45 +0300 |
| commit | d1653c5b32f4efa7fec6ab40cb93eb14b0014c38 (patch) | |
| tree | 0f9edaac965debf5f3b97fa22216b5e74982635e | |
| parent | f851d28b49caa6d19e4edc1df39b74222bda6946 (diff) | |
refactor: enhance stdin script handling by improving string trimming logic
| -rw-r--r-- | tests/modules/stdin/test.lua | 7 | ||||
| -rw-r--r-- | xmake/plugins/lua/main.lua | 11 |
2 files changed, 14 insertions, 4 deletions
diff --git a/tests/modules/stdin/test.lua b/tests/modules/stdin/test.lua index 6b1b4026b..b0c908c3c 100644 --- a/tests/modules/stdin/test.lua +++ b/tests/modules/stdin/test.lua @@ -113,8 +113,13 @@ function main(t) "2" ) test_shell( + "pwsh_main", + string.format('%s -c "echo \\"function main() print(\'in_pwsh_main\') end\\" | %s"', pwsh, run_stdin), + "in_pwsh_main" + ) + test_shell( "pwsh_multi", - string.format("%s -c \"echo \\\"print('pline1')\\nprint('pline2')\\\" | %s l --stdin\"", pwsh, xmake), + string.format('%s -c "echo \\"print(\'pline1\')\\" \\"print(\'pline2\')\\" | %s"', pwsh, run_stdin), "pline1[\r\n]+pline2" ) else diff --git a/xmake/plugins/lua/main.lua b/xmake/plugins/lua/main.lua index 261dffaa0..b2a104949 100644 --- a/xmake/plugins/lua/main.lua +++ b/xmake/plugins/lua/main.lua @@ -53,9 +53,14 @@ function _get_script_from_stdin() script_content = script_content:ltrim(utf8.bom) local shell = os.shell() if shell == "cmd" or shell == "powershell" or shell == "pwsh" or is_host("windows") then - script_content = script_content:trim() - script_content = script_content:trim('\"') - script_content = script_content:replace("\\n", "\n", {plain = true}):replace("\\r", "\r", {plain = true}) + local trimmed = script_content:trim() + if trimmed:startswith('"') and trimmed:endswith('"') then + script_content = trimmed:trim('"') + script_content = script_content:replace("\\n", "\n", {plain = true}) + :replace("\\r", "\r", {plain = true}) + else + script_content = trimmed + end end if not script_content:find("function main", 1, true) then |
