generateSassVariableFiles.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import fs from 'fs';
  2. import darkTheme from '@grafana/ui/src/themes/dark';
  3. import lightTheme from '@grafana/ui/src/themes/light';
  4. import defaultTheme from '@grafana/ui/src/themes/default';
  5. import { darkThemeVarsTemplate } from '@grafana/ui/src/themes/_variables.dark.scss.tmpl';
  6. import { lightThemeVarsTemplate } from '@grafana/ui/src/themes/_variables.light.scss.tmpl';
  7. import { commonThemeVarsTemplate } from '@grafana/ui/src/themes/_variables.scss.tmpl';
  8. const darkThemeVariablesPath = __dirname + '/../../public/sass/_variables.dark.scss';
  9. const lightThemeVariablesPath = __dirname + '/../../public/sass/_variables.light.scss';
  10. const defaultThemeVariablesPath = __dirname + '/../../public/sass/_variables.scss';
  11. const 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. const generateSassVariableFiles = async () => {
  23. try {
  24. await Promise.all([
  25. writeVariablesFile(darkThemeVariablesPath, darkThemeVarsTemplate(darkTheme)),
  26. writeVariablesFile(lightThemeVariablesPath, lightThemeVarsTemplate(lightTheme)),
  27. writeVariablesFile(defaultThemeVariablesPath, commonThemeVarsTemplate(defaultTheme)),
  28. ]);
  29. console.log('\nSASS variable files generated');
  30. } catch (error) {
  31. console.error('\nWriting SASS variable files failed', error);
  32. process.exit(1);
  33. }
  34. };
  35. generateSassVariableFiles();