/ scripts / substitute-theme-vars.js
substitute-theme-vars.js
 1  /* eslint-disable no-console */
 2  
 3  // script that takes a file as input and replaces the following strings:
 4  // - #5555FF -> var(--color-primary)
 5  // - #C0C0FF -> var(--color-primary-level-2)
 6  // - #000000 -> var(--color-foreground)
 7  // - black -> var(--color-foreground)
 8  // - #28333D -> var(--color-foreground)
 9  // - white -> var(--color-background)
10  // - #FFFFFF -> var(--color-background)
11  // - #EAEAFF -> var(--color-primary-level-1)
12  // - #313166 -> var(--color-primary-level-6)
13  // - #EBEFF3 -> var(--color-foreground-level-2);
14  
15  import fs from 'fs';
16  import path from 'path';
17  
18  const filePath = process.argv[2];
19  if (!filePath) {
20    console.error('Please provide a file path as an argument.');
21    process.exit(1);
22  }
23  
24  const fileName = path.basename(filePath);
25  
26  const fileContent = fs.readFileSync(filePath, 'utf8');
27  
28  const updatedContent = fileContent
29    .replace(/#5555FF/g, 'var(--color-primary)')
30    .replace(/#C0C0FF/g, 'var(--color-primary-level-2)')
31    .replace(/#000000/g, 'var(--color-foreground)')
32    .replace(/black/g, 'var(--color-foreground)')
33    .replace(/#28333D/g, 'var(--color-foreground)')
34    .replace(/white/g, 'var(--color-background)')
35    .replace(/#FFFFFF/g, 'var(--color-background)')
36    .replace(/#EAEAFF/g, 'var(--color-primary-level-1)')
37    .replace(/#313166/g, 'var(--color-primary-level-6)')
38    .replace(/#EBEFF3/g, 'var(--color-foreground-level-2)');
39  
40  // replace file in place
41  fs.writeFileSync(filePath, updatedContent, 'utf8');
42  console.log(`Updated ${fileName} with theme variables.`);