diff --git a/CHANGELOG.md b/CHANGELOG.md index f5efc0ec..4cee48b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how * fix(lisp): Report error only inside the command's execution ([#389](../../pull/389)) * fix: Correct entry file name to `eask.js` instead of `eask` ([#397](../../pull/397)) * fix: Ensure that `eask.js` has Unix line-endings ([#398](../../pull/398)) +* fix: Correctly parse operands from the command arguments ([#401](../../pull/401)) ## 0.12.x > Released Dec 02, 2025 diff --git a/cmds/core/emacs.js b/cmds/core/emacs.js index 4581d0b9..53f350be 100644 --- a/cmds/core/emacs.js +++ b/cmds/core/emacs.js @@ -32,7 +32,7 @@ exports.handler = async (argv) => { let s_path = UTIL.el_script('core/emacs'); let default_cmd = [EASK_EMACS, '-Q', '-l', s_path]; - let rest = process.argv.slice(3); + let rest = UTIL.take_after(process.argv, EASK_EMACS); let cmd = default_cmd.concat(rest); UTIL.setup_env(); diff --git a/cmds/core/exec.js b/cmds/core/exec.js index 3fd7558b..f791d14a 100644 --- a/cmds/core/exec.js +++ b/cmds/core/exec.js @@ -30,7 +30,7 @@ exports.builder = async (yargs) => { }; exports.handler = async (argv) => { - let cmd = process.argv.slice(3); + let cmd = UTIL.take_after(process.argv, 'exec'); await UTIL.e_call(argv, 'core/exec', '--', cmd); diff --git a/src/util.js b/src/util.js index afc37011..cf562c54 100644 --- a/src/util.js +++ b/src/util.js @@ -50,6 +50,16 @@ function escape_str(str) { return str.replaceAll('\"', '\\"'); } +/** + * Return arguments after matching string. + */ +function take_after(arr, str) { + let index = arr.indexOf(str); + if (index === -1) + return arr; + return arr.slice(index + 1); +} + /** * Return arguments after `--` in list. */ @@ -300,6 +310,7 @@ module.exports.which = which; module.exports.slash = slash; module.exports.escape_str = escape_str; +module.exports.take_after = take_after; module.exports.cli_args = cli_args; module.exports.plugin_dir = plugin_dir; module.exports.def_flag = def_flag;