From 45cb74394e65deea6b1a16a31df50c90ce325f27 Mon Sep 17 00:00:00 2001 From: Zedhugh Chen Date: Mon, 5 Feb 2024 01:07:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E6=9E=90=20Cargo.lock=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=94=AF=E6=8C=81=E4=B8=8D=E5=90=8C=E7=9A=84=20github?= =?UTF-8?q?=20=E4=BB=93=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/parse-cargo-lock.cjs | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/script/parse-cargo-lock.cjs b/script/parse-cargo-lock.cjs index f8b0f7e..d0c810d 100755 --- a/script/parse-cargo-lock.cjs +++ b/script/parse-cargo-lock.cjs @@ -50,12 +50,15 @@ const parse = (str) => { /** * @param {string} commit 提交 Hash 值 + * @param {string} repo github 仓库名 * @returns {Promise} */ -const fetchCragoLock = async (commit) => { - const url = `https://raw.githubusercontent.com/shadowsocks/shadowsocks-rust/${commit}/Cargo.lock`; +const fetchCragoLock = async (repo, commit) => { + const path = require("node:path"); + const pathName = path.join(repo, commit, "Cargo.lock"); + const url = new URL(pathName, "https://raw.githubusercontent.com/").toString(); if (global.fetch) { - const resp = await fetch(url); + const resp = await global.fetch(url, { method: "GET", mode: "cors" }); if (resp.status !== 200) { const text = await resp.text(); throw new Error(text); @@ -86,17 +89,29 @@ const fetchCragoLock = async (commit) => { const commitPrefix = "-c"; const outputPrefix = "-o"; +const repoPrefix = "-r"; const showUsage = () => { const { basename } = require('node:path'); - const usage = `Usage: ${basename(__filename)} ${commitPrefix} [${outputPrefix} output_file_path]`; + const usage = `Usage: ${basename(__filename)} ${repoPrefix} ${commitPrefix} [${outputPrefix} output_file_path]`; console.error(usage); } const parseCmdArgs = () => { const argStartIndex = process.argv.indexOf(__filename) + 1; const args = process.argv.slice(argStartIndex); - if (args.length !== 2 && args.length !== 4) { + if (args.length !== 4 && args.length !== 6) { + showUsage(); + return; + } + + const repoIndex = args.indexOf(repoPrefix); + if (repoIndex === -1) { + showUsage(); + return; + } + const repo = args.at(repoIndex + 1); + if (!repo) { showUsage(); return; } @@ -112,7 +127,7 @@ const parseCmdArgs = () => { return; } - const cmdArgs = { commit, output: '' }; + const cmdArgs = { repo, commit, output: '' }; const outputIndex = args.indexOf(outputPrefix); if (outputIndex === -1) { return cmdArgs; @@ -126,12 +141,13 @@ const parseCmdArgs = () => { const doTask = async () => { const cmdArgs = parseCmdArgs(); + const repo = cmdArgs?.repo; const commit = cmdArgs?.commit; const output = cmdArgs?.output; - if (!commit) return; + if (!repo || !commit) return; try { - const content = await fetchCragoLock(cmdArgs.commit); + const content = await fetchCragoLock(repo, commit); const result = parse(content); if (!output) { console.log(result);