feat: build system
This commit is contained in:
parent
0c8a9cc622
commit
53375ea11c
9 changed files with 83 additions and 9 deletions
|
|
@ -1,6 +1,6 @@
|
|||
import { AnimationKeyframe } from "../components/AnimationKeyframe.js"
|
||||
import { Class } from "../components/Class.js"
|
||||
import { UI } from "../components/UI.js"
|
||||
import { ModifyUI, UI } from "../components/UI.js"
|
||||
import { AnimType } from "../types/enums/AnimType.js"
|
||||
import { Renderer } from "../types/enums/Renderer.js"
|
||||
import { Type } from "../types/enums/Type.js"
|
||||
|
|
@ -13,6 +13,8 @@ interface FileInterface {
|
|||
}
|
||||
type Files = Map<string, FileInterface>
|
||||
|
||||
export const MemoryModify: Record<string, Record<string, unknown>> = {}
|
||||
|
||||
export class Memory extends Class {
|
||||
protected static files: Files = new Map<string, FileInterface>()
|
||||
|
||||
|
|
|
|||
7
src/compilers/Random.ts
Normal file
7
src/compilers/Random.ts
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
import { RandomString } from "../components/Utils.js"
|
||||
|
||||
const namespaces = Array.from({ length: 15 }, () => RandomString(16))
|
||||
|
||||
export function RandomNamespace() {
|
||||
return namespaces[Math.floor(Math.random() * namespaces.length)]
|
||||
}
|
||||
|
|
@ -55,3 +55,9 @@ FuntionMap.set("sqrt", number => {
|
|||
value: rtn,
|
||||
}
|
||||
})
|
||||
|
||||
FuntionMap.set("translatable", key => {
|
||||
return {
|
||||
value: `'%' + ${key}`,
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,8 +1,38 @@
|
|||
import { isBuildMode } from "../Configuration.js"
|
||||
import { Memory } from "../Memory.js"
|
||||
import { createBuildFolder } from "./linker.js"
|
||||
import fs from "fs/promises"
|
||||
|
||||
async function buildUI() {
|
||||
const build = Memory.build()
|
||||
let i = 0
|
||||
|
||||
build.set("ui/ui_defs.json", {
|
||||
ui_defs: Array.from(build.keys()),
|
||||
})
|
||||
|
||||
await Promise.all(
|
||||
build.entries().map(async ([file, value]) => {
|
||||
const outFile = `build/build/${file}`
|
||||
await fs
|
||||
.stat(outFile.split(/\\|\//g).slice(0, -1).join("/"))
|
||||
.catch(async () => await fs.mkdir(outFile.split(/\\|\//g).slice(0, -1).join("/"), { recursive: true }))
|
||||
|
||||
await fs.writeFile(outFile, JSON.stringify(value), "utf-8")
|
||||
i++
|
||||
}),
|
||||
)
|
||||
|
||||
return i - 1
|
||||
}
|
||||
|
||||
if (isBuildMode) {
|
||||
process.on("beforeExit", () => {
|
||||
console.log(JSON.stringify(Memory.build(), null, 2))
|
||||
let first = true
|
||||
process.on("beforeExit", async () => {
|
||||
if (first) {
|
||||
await createBuildFolder()
|
||||
await buildUI()
|
||||
}
|
||||
first = false
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,12 @@
|
|||
import fs from "fs/promises"
|
||||
|
||||
export async function clearBuild() {
|
||||
await fs.rm("build/build", { recursive: true, force: true })
|
||||
}
|
||||
|
||||
export async function createBuildFolder() {
|
||||
return fs
|
||||
.stat("build")
|
||||
.catch(() => fs.mkdir("build"))
|
||||
.then(() => clearBuild())
|
||||
}
|
||||
Reference in a new issue