mirror of
https://github.com/GenderDysphoria/GenderDysphoria.fyi.git
synced 2025-11-25 20:42:40 +00:00
Moved new build process out of gulp folder
This commit is contained in:
63
build/evaluate.js
Normal file
63
build/evaluate.js
Normal file
@@ -0,0 +1,63 @@
|
||||
const { sortBy, uniqBy } = require('lodash');
|
||||
const { resolve } = require('./resolve');
|
||||
const log = require('fancy-log');
|
||||
const Promise = require('bluebird');
|
||||
const fs = require('fs-extra');
|
||||
const path = require('path');
|
||||
|
||||
const LOG = {
|
||||
new: true,
|
||||
update: true,
|
||||
skip: true,
|
||||
rebuild: true,
|
||||
cached: false,
|
||||
copy: false,
|
||||
silent: false,
|
||||
};
|
||||
|
||||
module.exports = exports = async function process (tasks, cache) {
|
||||
const lastSeen = new Date();
|
||||
|
||||
tasks = uniqBy(tasks, 'output');
|
||||
tasks = sortBy(tasks, [ 'input', 'output' ]);
|
||||
|
||||
await Promise.map(tasks, async (task) => {
|
||||
let result;
|
||||
let status = await cache.get(task);
|
||||
const { input, output } = task;
|
||||
const taskLog = [ status.mode, status.input, status.output ];
|
||||
if (status.mode === 'skip') {
|
||||
await cache.touch(task, lastSeen);
|
||||
if (taskLog && LOG[taskLog[0]]) log.info(...taskLog);
|
||||
return status;
|
||||
}
|
||||
|
||||
if (status.mode === 'cached') {
|
||||
result = status.cache;
|
||||
await fs.ensureDir(path.dirname(resolve('dist', output)));
|
||||
await fs.writeFile(resolve('dist', output), result);
|
||||
await cache.touch(task, lastSeen);
|
||||
} else {
|
||||
try {
|
||||
result = await task.action({
|
||||
...task,
|
||||
input,
|
||||
output: 'dist/' + output,
|
||||
});
|
||||
} catch (err) {
|
||||
log.error(`Task (${task.action.name}) failed for file ${output}.\n`, err);
|
||||
return false;
|
||||
}
|
||||
|
||||
status = await cache.set(task, result, lastSeen);
|
||||
}
|
||||
|
||||
if (taskLog && LOG[taskLog[0]]) log.info(...taskLog);
|
||||
|
||||
if (cache.isProd) {
|
||||
fs.writeFile(resolve('dist', status.revPath), result);
|
||||
}
|
||||
|
||||
}, { concurrency: 1 });
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user