io-actions/export.js
2024-07-04 16:38:40 -04:00

76 lines
2.6 KiB
JavaScript

import fs from 'fs'
// export script helper function
const withCleanDir = (dirName, writeFunction) => {
if(fs.existsSync(dirName)) {
fs.rmSync(dirName, { recursive: true, force: true })
}
fs.mkdirSync(dirName)
console.log(`/${dirName}: clean`)
let totalBytesWritten = 0
const write = (filename, fileContents) => {
const
exportFilename = `${dirName}/${filename}`,
bytesToWrite = fileContents.length
fs.writeFileSync(exportFilename, fileContents)
console.log(`/${exportFilename}: ${bytesToWrite} bytes`)
totalBytesWritten += bytesToWrite
}
writeFunction(write)
console.log(`${totalBytesWritten} bytes written.`)
}
// export helper for quick & dirty js template/inline replacement
const renderTemplate = (renderedContent, sourceFilename) => {
// read in file contents
const existingFileContent = fs.readFileSync(sourceFilename).toString()
// return transformed contents
return existingFileContent.replace(/\/\* LOCAL->>[\s\S]*?<<-LOCAL \*\//, renderedContent)
}
import { customBlocksJson } from './src/blocks/index.js'
import toolbox from './src/toolboxes/index.js'
import { renderedExtensions } from './src/extensions/index.js'
import { renderedMutators } from './src/mutators/index.js'
import { renderedBlockGenerators } from './src/blocks/generators.js'
import { renderRegenerators } from './src/blocks/regenerators.js'
const
processBlocks = () => JSON.stringify(customBlocksJson, null, 2),
processToolbox = () => JSON.stringify(toolbox, null, 2),
processWorkspace = () => fs.readFileSync('src/workspaces/workspace.json').toString(),
processExtensions = () => renderTemplate(renderedExtensions, "src/extensions/index.js"),
processMutators = () => renderTemplate(renderedMutators, "src/mutators/index.js"),
processGenerators = () => renderTemplate(renderedBlockGenerators, "src/blocks/generators.js"),
processRegenerators = () => renderTemplate(renderRegenerators, "src/blocks/regenerators.js")
const startTime = Date.now()
console.log("Starting Blockly Export")
console.log("=======================")
withCleanDir("export", write => {
// JSON
write("blocks.json", processBlocks())
write("toolbox.json", processToolbox())
write("workspace.json", processWorkspace())
// JS
// write("plugins.js", processPlugins())
// write("mixins.js", processMixins())
// write("validators.js", processValidators())
write("extensions.js", processExtensions())
write("mutators.js", processMutators())
write("generators.js", processGenerators())
write("regenerators.js", processRegenerators())
})
const elapsed = Date.now() - startTime
console.log("=======================")
console.log(`🏁 Done (${elapsed}ms) 🏁`)