From b9ca29feb47845375ee2350dbcb6fbfce527d306 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Wed, 30 Nov 2022 13:28:30 -0700 Subject: [PATCH] feat: add --path-only to not restructure --- restructure.js | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/restructure.js b/restructure.js index 625e483..6ea4703 100644 --- a/restructure.js +++ b/restructure.js @@ -45,7 +45,9 @@ ModuleMap.save = async function (abspath, name) { async function main() { let rootname; - let dirs = process.argv.slice(2); + let args = process.argv.slice(2); + let pathsOnly = removeFlag(args, ["--paths-only"]); + let dirs = args; if (!dirs.length) { dirs.push("./"); } @@ -81,7 +83,7 @@ async function main() { let script = await Fs.readFile(pathname, "utf8"); let kb = (script.length / 1024).toFixed(2).padStart(5, " "); - let results = await parse(script, shortname, rootname); + let results = await parse(script, shortname, rootname, { pathsOnly }); if ( Object.keys(results.warnings).length || Object.keys(results.multiImporters).length @@ -195,7 +197,31 @@ async function main() { console.log(); } -async function parse(script, shortname, rootname) { +/** + * @param {Array} arr + * @param {Array} aliases + * @returns {String?} + */ +function removeFlag(arr, aliases) { + /** @type {String?} */ + let arg = null; + aliases.forEach(function (item) { + let index = arr.indexOf(item); + if (-1 === index) { + return null; + } + + if (arg) { + throw Error(`duplicate flag ${item}`); + } + + arg = arr.splice(index, 1)[0]; + }); + + return arg; +} + +async function parse(script, shortname, rootname, opts) { /* * Example: * let script = ` @@ -265,6 +291,10 @@ async function parse(script, shortname, rootname) { let assignments; if (destructured) { + if (opts?.pathsOnly) { + continue; + } + // '{ foo, bar, }' => [ "foo", "bar" ] assignments = destructured[1] .replace(/,/g, " ")