diff options
Diffstat (limited to 'scripts/frontend/startup_css/main.js')
-rw-r--r-- | scripts/frontend/startup_css/main.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/scripts/frontend/startup_css/main.js b/scripts/frontend/startup_css/main.js new file mode 100644 index 00000000000..1e8dcbebae2 --- /dev/null +++ b/scripts/frontend/startup_css/main.js @@ -0,0 +1,60 @@ +const { memoize } = require('lodash'); +const { OUTPUTS } = require('./constants'); +const { getCSSPath } = require('./get_css_path'); +const { getStartupCSS } = require('./get_startup_css'); +const { log, die } = require('./utils'); +const { writeStartupSCSS } = require('./write_startup_scss'); + +const memoizedCSSPath = memoize(getCSSPath); + +const runTask = async ({ outFile, htmlPaths, cssKeys, purgeOptions = {} }) => { + try { + log(`Generating startup CSS for HTML files: ${htmlPaths}`); + const generalCSS = await getStartupCSS({ + htmlPaths, + cssPaths: cssKeys.map(memoizedCSSPath), + purgeOptions, + }); + + log(`Writing to startup CSS...`); + const startupCSSPath = writeStartupSCSS(outFile, generalCSS); + log(`Finished writing to ${startupCSSPath}`); + + return { + success: true, + outFile, + }; + } catch (e) { + log(`ERROR! Unexpected error occurred while generating startup CSS for: ${outFile}`); + log(e); + + return { + success: false, + outFile, + }; + } +}; + +const main = async () => { + const result = await Promise.all(OUTPUTS.map(runTask)); + const fullSuccess = result.every((x) => x.success); + + log('RESULTS:'); + log('--------'); + + result.forEach(({ success, outFile }) => { + const status = success ? '✓' : 'ⅹ'; + + log(`${status}: ${outFile}`); + }); + + log('--------'); + + if (fullSuccess) { + log('Done!'); + } else { + die('Some tasks have failed'); + } +}; + +main(); |