From b5851b4c384712b055ef0f5690add7399eb74cbb Mon Sep 17 00:00:00 2001 From: "Jocelyn Badgley (Twipped)" <joc@twipped.com> Date: Wed, 25 Aug 2021 11:23:31 -0700 Subject: [PATCH] Fallback to local duplicate when a fetch fails, if available --- build/evaluate.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/build/evaluate.js b/build/evaluate.js index 92f7e6d..b4f606f 100644 --- a/build/evaluate.js +++ b/build/evaluate.js @@ -4,6 +4,7 @@ const log = require('fancy-log'); const Promise = require('bluebird'); const fs = require('fs-extra'); const path = require('path'); +const actions = require('./actions'); const LOG = { new: true, @@ -45,8 +46,21 @@ module.exports = exports = async function process (tasks, cache) { output: 'dist/' + output, }); } catch (err) { - log.error(`Task (${task.action.name}) failed for file ${output}.\n`, err); - return false; + if (status.duplicate && await fs.pathExists(status.duplicate)) { + try { + result = await actions.copy({ + input: status.duplicate, + output: 'dist/' + output, + }); + log.info(`Task (${task.action.name}) failed for file ${output}, fell back to saved duplicate ${status.duplicate}`); + } catch (err2) { + log.error(`Task (${task.action.name}) failed for file ${output}.\n`, err); + return false; + } + } else { + log.error(`Task (${task.action.name}) failed for file ${output}.\n`, err); + return false; + } } status = await cache.set(task, result, lastSeen);