From f75f446a8e8f016f253450e178bb391fda775ea5 Mon Sep 17 00:00:00 2001 From: Zedhugh Chen Date: Fri, 23 Aug 2024 03:49:39 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E6=9E=90=20Cargo.lock=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=89=88=E6=9C=AC=E8=BF=9E=E6=8E=A5=E7=AC=A6=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/parse-cargo-lock.cjs | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/script/parse-cargo-lock.cjs b/script/parse-cargo-lock.cjs index d0c810d..1438414 100755 --- a/script/parse-cargo-lock.cjs +++ b/script/parse-cargo-lock.cjs @@ -31,9 +31,10 @@ const parseItem = (str) => { } /** - * @param {string} str + * @param {string} str 依赖文本 + * @param {string=} concatenation 依赖项版本连接符 */ -const parse = (str) => { +const parse = (str, concatenation = '@') => { const pkgSeparator = '[[package]]'; const idx = str.indexOf(pkgSeparator); if (idx >= 0) { @@ -41,7 +42,7 @@ const parse = (str) => { } const arr = str.split(pkgSeparator).filter(Boolean); - const list = arr.map(parseItem).filter(Boolean).map((item) => item.join("-")); + const list = arr.map(parseItem).filter(Boolean).map((item) => item.join(concatenation)); const result = list.join('\n'); return result } @@ -90,10 +91,11 @@ const fetchCragoLock = async (repo, commit) => { const commitPrefix = "-c"; const outputPrefix = "-o"; const repoPrefix = "-r"; +const concatPrefix = "-vc" const showUsage = () => { const { basename } = require('node:path'); - const usage = `Usage: ${basename(__filename)} ${repoPrefix} ${commitPrefix} [${outputPrefix} output_file_path]`; + const usage = `Usage: ${basename(__filename)} ${repoPrefix} ${commitPrefix} [${outputPrefix} output_file_path] [${concatPrefix} version-concatenation]`; console.error(usage); } @@ -127,7 +129,14 @@ const parseCmdArgs = () => { return; } - const cmdArgs = { repo, commit, output: '' }; + /** @type {string | undefined} */ + let versionConcatenation; + const versionConcatenationIndex = args.indexOf(concatPrefix); + if (versionConcatenationIndex !== -1) { + versionConcatenation = args.at(versionConcatenationIndex + 1); + } + + const cmdArgs = { repo, commit, output: '', versionConcatenation }; const outputIndex = args.indexOf(outputPrefix); if (outputIndex === -1) { return cmdArgs; @@ -146,9 +155,10 @@ const doTask = async () => { const output = cmdArgs?.output; if (!repo || !commit) return; + try { const content = await fetchCragoLock(repo, commit); - const result = parse(content); + const result = parse(content, cmdArgs.versionConcatenation); if (!output) { console.log(result); return