fixed watch mode

This commit is contained in:
2023-01-11 15:36:34 -06:00
parent bf50d06d60
commit ab8ef4ff5b
7 changed files with 67 additions and 56 deletions

View File

@@ -1,4 +1,4 @@
import { buildSync, BuildFailure, BuildOptions, BuildResult } from 'esbuild'
import { BuildFailure, BuildOptions, BuildResult, build } from 'esbuild'
import { existsSync, writeFileSync, unlinkSync } from 'fs'
import { UserScriptMetaFull } from './types'
import readMeta from './readmeta'
@@ -10,7 +10,7 @@ export interface runBuildResult {
error: string | null
}
export default function runBuild(
export default async function runBuild(
name: string,
watchCallback: (result: runBuildResult) => void
) {
@@ -18,7 +18,7 @@ export default function runBuild(
let { meta, metaString } = readMeta(name)
let paths = AllPaths.script(name)
let result = runEsbuild(
let result = await runEsbuild(
{
entryPoints: [paths.main],
outfile: paths.dist,
@@ -63,10 +63,10 @@ interface RunEsbuildResult {
errorRaw?: BuildFailure
}
function runEsbuild(
async function runEsbuild(
opts: BuildOptions,
watchCallback: (result: RunEsbuildResult) => void
): RunEsbuildResult {
): Promise<RunEsbuildResult> {
opts.write = false
if (CLIArgs.watch) {
opts.watch = {
@@ -77,7 +77,7 @@ function runEsbuild(
}
try {
let res = buildSync(opts)
let res = await build(opts)
return getResult(null, res)
} catch (err) {
return getResult(err as BuildFailure, null)

View File

@@ -85,36 +85,42 @@ readdirSync(AllPaths.base.dist).forEach(file =>
)
//compile scripts
let scripts = readdirSync(AllPaths.base.script)
let scriptMeta: runBuildResult[] = []
async function doCompile() {
let scripts = readdirSync(AllPaths.base.script)
let scriptMeta: runBuildResult[] = []
for (let name of scripts) {
let path = AllPaths.script(name)
for (let name of scripts) {
let path = AllPaths.script(name)
if (
!name.endsWith('_') &&
existsSync(path.dir) &&
lstatSync(path.dir).isDirectory() &&
existsSync(path.main) &&
lstatSync(path.main).isFile()
) {
let id = scriptMeta.length
if (
!name.endsWith('_') &&
existsSync(path.dir) &&
lstatSync(path.dir).isDirectory() &&
existsSync(path.main) &&
lstatSync(path.main).isFile()
) {
let id = scriptMeta.length
function update(result: runBuildResult) {
console.log('WATCH', name, result.meta.version)
scriptMeta[id] = result
updateReadmeFile(scriptMeta)
}
let result = await runBuild(name, update)
console.log(name, result.meta.version)
function update(result: runBuildResult) {
console.log('WATCH', name, result.meta.version)
scriptMeta[id] = result
updateReadmeFile(scriptMeta)
}
let result = runBuild(name, update)
console.log(name, result.meta.version)
scriptMeta[id] = result
}
return scriptMeta
}
doCompile().then(scriptMeta => {
updateReadmeFile(scriptMeta)
updateReadmeFile(scriptMeta)
console.log(
`\nFinished Compiling\n${CLIArgs.watch ? 'Listening for Changes\n' : ''}`
)
console.log(
`\nFinished Compiling\n${
CLIArgs.watch ? 'Listening for Changes\n' : ''
}`
)
})