import * as fs from "fs" import { tmpdir } from "os" import * as path from "path" import colorSchemes, { staffColorSchemes } from "./colorSchemes" import app from "./styleTree/app" import { ColorScheme } from "./themes/common/colorScheme" import snakeCase from "./utils/snakeCase" const assetsDirectory = `${__dirname}/../../assets` const themeDirectory = `${assetsDirectory}/themes` const staffDirectory = `${themeDirectory}/staff` const tempDirectory = fs.mkdtempSync(path.join(tmpdir(), "build-themes")) // Clear existing themes function clearThemes(themeDirectory: string) { if (!fs.existsSync(themeDirectory)) { fs.mkdirSync(themeDirectory, { recursive: true }) } else { for (const file of fs.readdirSync(themeDirectory)) { if (file.endsWith(".json")) { const name = file.replace(/\.json$/, "") if ( !colorSchemes.find( (colorScheme) => colorScheme.name === name ) ) { fs.unlinkSync(path.join(themeDirectory, file)) } } } } } clearThemes(themeDirectory) clearThemes(staffDirectory) function writeThemes(colorSchemes: ColorScheme[], outputDirectory: string) { for (let colorScheme of colorSchemes) { let styleTree = snakeCase(app(colorScheme)) let styleTreeJSON = JSON.stringify(styleTree, null, 2) let tempPath = path.join(tempDirectory, `${colorScheme.name}.json`) let outPath = path.join(outputDirectory, `${colorScheme.name}.json`) fs.writeFileSync(tempPath, styleTreeJSON) fs.renameSync(tempPath, outPath) console.log(`- ${outPath} created`) } } // Write new themes to theme directory writeThemes(colorSchemes, themeDirectory) writeThemes(staffColorSchemes, staffDirectory)