36 lines
1.5 KiB
JavaScript
36 lines
1.5 KiB
JavaScript
/* eslint-disable no-undef */
|
|
import fetch from "node-fetch"
|
|
import path from "path"
|
|
import { exists, writeSync, readdirSync, rm, readSync } from "./file.js"
|
|
|
|
export default class Downloader {
|
|
|
|
async github(history_url, raw_url, filepath) {
|
|
const historyResponse = await fetch(history_url)
|
|
const historyData = await historyResponse.json()
|
|
const lastCommit = historyData[0]
|
|
const lastCommitDate = new Date(lastCommit.commit.committer.date)
|
|
console.log(`Last commit date: ${lastCommitDate.getTime()}`)
|
|
const ext = path.extname(filepath)
|
|
const basename = path.basename(filepath).replace(ext, '')
|
|
filepath = path.join(filepath, "..", `${basename}_${lastCommitDate.getTime()}${ext}`)
|
|
|
|
if (exists(filepath)) {
|
|
console.log(`${basename} is the latest version.`)
|
|
return JSON.parse(readSync(filepath))
|
|
}
|
|
const response = await fetch(raw_url)
|
|
const data = await response.json()
|
|
writeSync(JSON.stringify(data), filepath)
|
|
console.log(`${basename} is updated.`)
|
|
|
|
// remove old file
|
|
const files = readdirSync(path.join(__projectRoot, __config.folder.operator, __config.folder.share))
|
|
for (const file of files) {
|
|
if (file.startsWith(basename) && file !== path.basename(filepath)) {
|
|
rm(path.join(__projectRoot, __config.folder.operator, __config.folder.share, file))
|
|
}
|
|
}
|
|
return data
|
|
}
|
|
} |