mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-10 23:36:14 -05:00
71 lines
2.1 KiB
JavaScript
71 lines
2.1 KiB
JavaScript
|
// const debug = require('@tryghost/debug')('comments-counts-assets');
|
||
|
const Minifier = require('@tryghost/minifier');
|
||
|
const path = require('path');
|
||
|
const fs = require('fs').promises;
|
||
|
const logging = require('@tryghost/logging');
|
||
|
const config = require('../../../shared/config');
|
||
|
|
||
|
class AdminAuthAssetsService {
|
||
|
constructor(options = {}) {
|
||
|
this.src = options.src || path.join(config.get('paths').assetSrc, 'admin-auth');
|
||
|
this.dest = options.dest || path.join(config.getContentPath('public'), 'admin-auth');
|
||
|
this.minifier = new Minifier({src: this.src, dest: this.dest});
|
||
|
}
|
||
|
|
||
|
generateGlobs() {
|
||
|
return {
|
||
|
'admin-auth.min.js': '*.js'
|
||
|
};
|
||
|
}
|
||
|
|
||
|
async minify(globs) {
|
||
|
try {
|
||
|
return await this.minifier.minify(globs);
|
||
|
} catch (error) {
|
||
|
if (error.code === 'EACCES') {
|
||
|
logging.error('Ghost was not able to write admin-auth asset files due to permissions.');
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
throw error;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async copyStatic() {
|
||
|
try {
|
||
|
return await fs.copyFile(path.join(this.src, 'index.html'), path.join(this.dest, 'index.html'));
|
||
|
} catch (error) {
|
||
|
if (error.code === 'EACCES') {
|
||
|
logging.error('Ghost was not able to write admin-auth asset files due to permissions.');
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
throw error;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async clearFiles() {
|
||
|
const rmFile = async (name) => {
|
||
|
await fs.unlink(path.join(this.dest, name));
|
||
|
};
|
||
|
|
||
|
let promises = [
|
||
|
// @deprecated switch this to use fs.rm when we drop support for Node v12
|
||
|
rmFile('admin-auth.min.js'),
|
||
|
rmFile('index.html')
|
||
|
];
|
||
|
|
||
|
// We don't care if removing these files fails as it's valid for them to not exist
|
||
|
return Promise.allSettled(promises);
|
||
|
}
|
||
|
|
||
|
async load() {
|
||
|
await this.clearFiles();
|
||
|
this.copyStatic();
|
||
|
const globs = this.generateGlobs();
|
||
|
await this.minify(globs);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = AdminAuthAssetsService;
|