1import * as fs from 'fs'; 2import { darkThemeVarsTemplate } from '@grafana/ui/src/themes/_variables.dark.scss.tmpl'; 3import { lightThemeVarsTemplate } from '@grafana/ui/src/themes/_variables.light.scss.tmpl'; 4import { commonThemeVarsTemplate } from '@grafana/ui/src/themes/_variables.scss.tmpl'; 5import { createTheme } from '@grafana/data'; 6 7const darkThemeVariablesPath = __dirname + '/../../public/sass/_variables.dark.generated.scss'; 8const lightThemeVariablesPath = __dirname + '/../../public/sass/_variables.light.generated.scss'; 9const defaultThemeVariablesPath = __dirname + '/../../public/sass/_variables.generated.scss'; 10 11const writeVariablesFile = async (path: string, data: string) => { 12 return new Promise((resolve, reject) => { 13 fs.writeFile(path, data, (e) => { 14 if (e) { 15 reject(e); 16 } else { 17 resolve(data); 18 } 19 }); 20 }); 21}; 22 23const generateSassVariableFiles = async () => { 24 const darkTheme = createTheme(); 25 const lightTheme = createTheme({ colors: { mode: 'light' } }); 26 27 try { 28 await Promise.all([ 29 writeVariablesFile(darkThemeVariablesPath, darkThemeVarsTemplate(darkTheme)), 30 writeVariablesFile(lightThemeVariablesPath, lightThemeVarsTemplate(lightTheme)), 31 writeVariablesFile(defaultThemeVariablesPath, commonThemeVarsTemplate(darkTheme)), 32 ]); 33 console.log('\nSASS variable files generated'); 34 } catch (error) { 35 console.error('\nWriting SASS variable files failed', error); 36 process.exit(1); 37 } 38}; 39 40generateSassVariableFiles(); 41