summaryrefslogtreecommitdiff
path: root/scripts/frontend/startup_css/main.js
blob: 1e8dcbebae2224111c7003ba6bfdd88ac1cc6688 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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();