33 lines
991 B
JavaScript
33 lines
991 B
JavaScript
const path = require('path')
|
|
const spawn = require('cross-spawn')
|
|
|
|
module.exports = (options = {}, context) => ({
|
|
extendPageData ($page) {
|
|
const { transformer, dateOptions } = options
|
|
const timestamp = getGitLastUpdatedTimeStamp($page._filePath)
|
|
const $lang = $page._computed.$lang
|
|
if (timestamp) {
|
|
const lastUpdated = typeof transformer === 'function'
|
|
? transformer(timestamp, $lang)
|
|
: defaultTransformer(timestamp, $lang, dateOptions)
|
|
$page.lastUpdated = lastUpdated
|
|
}
|
|
}
|
|
})
|
|
|
|
function defaultTransformer (timestamp, lang, dateOptions) {
|
|
return new Date(timestamp).toLocaleString(lang, dateOptions)
|
|
}
|
|
|
|
function getGitLastUpdatedTimeStamp (filePath) {
|
|
let lastUpdated
|
|
try {
|
|
lastUpdated = parseInt(spawn.sync(
|
|
'git',
|
|
['log', '-1', '--format=%at', path.basename(filePath)],
|
|
{ cwd: path.dirname(filePath) }
|
|
).stdout.toString('utf-8')) * 1000
|
|
} catch (e) { /* do not handle for now */ }
|
|
return lastUpdated
|
|
}
|