fix(bin): 修复项目编译时间不正确导致无法识别项目修改状态
This commit is contained in:
@@ -41,35 +41,48 @@ const millisecondToString = (timestamp) => {
|
|||||||
return parts.join('')
|
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))) {
|
if (!target || !(await fs.exists(target))) {
|
||||||
throw new Error("Target 不存在")
|
throw new Error("Target 不存在")
|
||||||
}
|
}
|
||||||
let stat = fs.statSync(target)
|
let stat = fs.statSync(target)
|
||||||
let currentModifiedTime = stat.mtimeMs
|
let currentModifiedTime = stat.mtimeMs
|
||||||
|
|
||||||
let buildPath = `${projectRootPath()}/.build`
|
let lastModifiedTime = (await readModifiedTimeData())[target]
|
||||||
if (!(await fs.exists(buildPath))) {
|
return !(lastModifiedTime && isEqual(currentModifiedTime, lastModifiedTime));
|
||||||
fs.mkdirSync(buildPath, {recursive: true})
|
|
||||||
}
|
}
|
||||||
let modifiedTimeDataPath = `${buildPath}/modified_time.json`
|
|
||||||
if (!(await fs.exists(modifiedTimeDataPath))) {
|
const updateModifiedTime = async (target) => {
|
||||||
fs.writeFileSync(modifiedTimeDataPath, '{}')
|
if (!target || !(await fs.exists(target))) {
|
||||||
}
|
throw new Error("Target 不存在")
|
||||||
let modifiedTimeData = JSON.parse(await fs.readFile(modifiedTimeDataPath, 'utf-8'))
|
|
||||||
let lastModifiedTime = modifiedTimeData[target]
|
|
||||||
if (lastModifiedTime && isEqual(currentModifiedTime, lastModifiedTime)) {
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
let stat = fs.statSync(target)
|
||||||
|
let currentModifiedTime = stat.mtimeMs
|
||||||
|
let modifiedTimeData = await readModifiedTimeData()
|
||||||
modifiedTimeData[target] = currentModifiedTime
|
modifiedTimeData[target] = currentModifiedTime
|
||||||
fs.writeFileSync(modifiedTimeDataPath, JSON.stringify(modifiedTimeData, null, 2))
|
updateModifiedTimeData(modifiedTimeData)
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const run_deploy = async (project) => {
|
export const run_deploy = async (project) => {
|
||||||
if (!(await isModified(`${projectRootPath()}/${project}`))) {
|
if (!(await isModified(project))) {
|
||||||
console.log(`✅ Skip deploy ${project}`)
|
console.log(`✅ Skip deploy ${project}`)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -78,10 +91,11 @@ export const run_deploy = async (project) => {
|
|||||||
() => $`mvn -pl ${project} clean deploy -D skipTests -s ${maven_setting}`
|
() => $`mvn -pl ${project} clean deploy -D skipTests -s ${maven_setting}`
|
||||||
)
|
)
|
||||||
console.log(`✅ Finished deploy ${project} (${millisecondToString(output['duration'])})`)
|
console.log(`✅ Finished deploy ${project} (${millisecondToString(output['duration'])})`)
|
||||||
|
await updateModifiedTime(project)
|
||||||
}
|
}
|
||||||
|
|
||||||
export const run_deploy_root = async () => {
|
export const run_deploy_root = async () => {
|
||||||
if (!(await isModified(`${projectRootPath()}/pom.xml`))) {
|
if (!(await isModified(pom.xml))) {
|
||||||
console.log(`✅ Skip deploy root`)
|
console.log(`✅ Skip deploy root`)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -90,6 +104,7 @@ export const run_deploy_root = async () => {
|
|||||||
() => $`mvn clean deploy -N -D skipTests -s ${maven_setting}`
|
() => $`mvn clean deploy -N -D skipTests -s ${maven_setting}`
|
||||||
)
|
)
|
||||||
console.log(`✅ Finished deploy root (${millisecondToString(output['duration'])})`)
|
console.log(`✅ Finished deploy root (${millisecondToString(output['duration'])})`)
|
||||||
|
await updateModifiedTime(`pom.xml`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export const run_deploy_batch = async (projects) => {
|
export const run_deploy_batch = async (projects) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user