63 lines
1.8 KiB
JavaScript
63 lines
1.8 KiB
JavaScript
const fs = require('fs')
|
|
const path = require('path')
|
|
|
|
exports.jp = (...p) => p.length ? path.join(__dirname, ...p) : __dirname
|
|
|
|
exports.copyFile = (source, target) => new Promise((resolve, reject) => {
|
|
const rd = fs.createReadStream(source)
|
|
rd.on('error', err => reject(err))
|
|
const wr = fs.createWriteStream(target)
|
|
wr.on('error', err => reject(err))
|
|
wr.on('close', () => resolve())
|
|
rd.pipe(wr)
|
|
})
|
|
|
|
/**
|
|
* 时间格式化
|
|
* @param {Date} d 格式化的时间
|
|
* @param {boolean} b 是否精确到秒
|
|
*/
|
|
exports.formatTime = (d, b) => {
|
|
const _date = d == null ? new Date() : typeof d == 'string' ? new Date(d) : d
|
|
const year = _date.getFullYear()
|
|
const month = fm(_date.getMonth() + 1)
|
|
const day = fm(_date.getDate())
|
|
if (!b) return year + '-' + month + '-' + day
|
|
return year + '-' + month + '-' + day + ' ' + fm(_date.getHours()) + ':' + fm(_date.getMinutes()) + ':' + fm(_date.getSeconds())
|
|
}
|
|
|
|
function fm(value) {
|
|
if (value < 10) return '0' + value
|
|
return value
|
|
}
|
|
|
|
exports.sizeFormate = size => {
|
|
// https://gist.github.com/thomseddon/3511330
|
|
if (!size) return '0 b'
|
|
let units = ['b', 'kB', 'MB', 'GB', 'TB']
|
|
let number = Math.floor(Math.log(size) / Math.log(1024))
|
|
return `${(size / Math.pow(1024, Math.floor(number))).toFixed(2)} ${units[number]}`
|
|
}
|
|
|
|
exports.parseArgv = argv => {
|
|
const params = {}
|
|
argv.forEach(item => {
|
|
const argv = item.split('=')
|
|
switch (argv[0]) {
|
|
case 'ver':
|
|
params.ver = argv[1]
|
|
break
|
|
case 'draft':
|
|
params.isDraft = argv[1] === 'true' || argv[1] === undefined
|
|
break
|
|
case 'prerelease':
|
|
params.isPrerelease = argv[1] === 'true' || argv[1] === undefined
|
|
break
|
|
case 'target_commitish':
|
|
params.target_commitish = argv[1]
|
|
break
|
|
}
|
|
})
|
|
return params
|
|
}
|