40 lines
1.0 KiB
JavaScript
40 lines
1.0 KiB
JavaScript
const debug = require('@tryghost/debug')('ghost-version');
|
|
const exec = require('child_process').exec;
|
|
const config = require('@tryghost/config');
|
|
|
|
let ttl;
|
|
let ghostVersion;
|
|
|
|
const fetchGhostVersion = function fetchGhostVersion() {
|
|
debug('Ghost version not set or ttl expired');
|
|
exec('npm show ghost version', function (err, stdout, stderr) {
|
|
if (err) {
|
|
debug('fetchGhostVersion err', err);
|
|
}
|
|
|
|
if (stderr) {
|
|
debug('fetchGhostVersion stderr', stderr);
|
|
}
|
|
|
|
if (stdout) {
|
|
debug('fetchGhostVersion stdout', stdout);
|
|
ghostVersion = stdout;
|
|
ttl = new Date(Date.now() + config.get('ghostVersionTTL')).valueOf();
|
|
}
|
|
});
|
|
};
|
|
|
|
const middleware = function middleware(req, res, next) {
|
|
if (!ghostVersion || ttl && ttl < Date.now()) {
|
|
fetchGhostVersion();
|
|
}
|
|
|
|
debug('res.locals.ghostVersion: ' + ghostVersion);
|
|
res.locals.ghostVersion = ghostVersion;
|
|
next();
|
|
};
|
|
|
|
fetchGhostVersion();
|
|
|
|
module.exports = middleware;
|