From 11c548128712ab453337b521a6aa057df2361923 Mon Sep 17 00:00:00 2001 From: v-zhangjc9 Date: Thu, 3 Jul 2025 10:01:47 +0800 Subject: [PATCH] =?UTF-8?q?fix(bin):=20=E4=BF=AE=E5=A4=8D=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=BC=96=E8=AF=91=E6=97=B6=E9=97=B4=E4=B8=8D=E6=AD=A3?= =?UTF-8?q?=E7=A1=AE=E5=AF=BC=E8=87=B4=E6=97=A0=E6=B3=95=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=BF=AE=E6=94=B9=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/library.js | 51 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/bin/library.js b/bin/library.js index c8cd079..6345a23 100644 --- a/bin/library.js +++ b/bin/library.js @@ -41,35 +41,48 @@ const millisecondToString = (timestamp) => { return parts.join('') } -const projectRootPath = () => path.dirname(import.meta.dirname) +const dotBuildPath = () => `.build` +const modifiedDataPath = () => `${dotBuildPath()}/modified_time.json` -export const isModified = async (target) => { +const readModifiedTimeData = async () => { + if (!fs.existsSync(dotBuildPath())) { + fs.mkdirSync(dotBuildPath(), {recursive: true}) + } + if (!(await fs.exists(modifiedDataPath()))) { + fs.writeFileSync(modifiedDataPath(), '{}') + } + return JSON.parse(await fs.readFile(modifiedDataPath(), 'utf-8')) +} + +const updateModifiedTimeData = (data) => { + fs.writeFileSync(modifiedDataPath(), JSON.stringify(data, null, 2)) +} + +const isModified = async (target) => { if (!target || !(await fs.exists(target))) { throw new Error("Target 不存在") } let stat = fs.statSync(target) let currentModifiedTime = stat.mtimeMs - let buildPath = `${projectRootPath()}/.build` - if (!(await fs.exists(buildPath))) { - fs.mkdirSync(buildPath, {recursive: true}) - } - let modifiedTimeDataPath = `${buildPath}/modified_time.json` - if (!(await fs.exists(modifiedTimeDataPath))) { - fs.writeFileSync(modifiedTimeDataPath, '{}') - } - let modifiedTimeData = JSON.parse(await fs.readFile(modifiedTimeDataPath, 'utf-8')) - let lastModifiedTime = modifiedTimeData[target] - if (lastModifiedTime && isEqual(currentModifiedTime, lastModifiedTime)) { - return false + let lastModifiedTime = (await readModifiedTimeData())[target] + return !(lastModifiedTime && isEqual(currentModifiedTime, lastModifiedTime)); + +} + +const updateModifiedTime = async (target) => { + if (!target || !(await fs.exists(target))) { + throw new Error("Target 不存在") } + let stat = fs.statSync(target) + let currentModifiedTime = stat.mtimeMs + let modifiedTimeData = await readModifiedTimeData() modifiedTimeData[target] = currentModifiedTime - fs.writeFileSync(modifiedTimeDataPath, JSON.stringify(modifiedTimeData, null, 2)) - return true + updateModifiedTimeData(modifiedTimeData) } export const run_deploy = async (project) => { - if (!(await isModified(`${projectRootPath()}/${project}`))) { + if (!(await isModified(project))) { console.log(`✅ Skip deploy ${project}`) return } @@ -78,10 +91,11 @@ export const run_deploy = async (project) => { () => $`mvn -pl ${project} clean deploy -D skipTests -s ${maven_setting}` ) console.log(`✅ Finished deploy ${project} (${millisecondToString(output['duration'])})`) + await updateModifiedTime(project) } export const run_deploy_root = async () => { - if (!(await isModified(`${projectRootPath()}/pom.xml`))) { + if (!(await isModified(pom.xml))) { console.log(`✅ Skip deploy root`) return } @@ -90,6 +104,7 @@ export const run_deploy_root = async () => { () => $`mvn clean deploy -N -D skipTests -s ${maven_setting}` ) console.log(`✅ Finished deploy root (${millisecondToString(output['duration'])})`) + await updateModifiedTime(`pom.xml`) } export const run_deploy_batch = async (projects) => {