Files
DeskClaw/mobile/scripts/sync-web.mjs
2026-04-21 16:25:50 +00:00

41 lines
1.1 KiB
JavaScript

import { mkdir, readdir, rm, copyFile, stat } from 'node:fs/promises'
import { join, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
async function copyDir(srcDir, dstDir) {
await mkdir(dstDir, { recursive: true })
const entries = await readdir(srcDir, { withFileTypes: true })
for (const entry of entries) {
const src = join(srcDir, entry.name)
const dst = join(dstDir, entry.name)
if (entry.isDirectory()) {
await copyDir(src, dst)
continue
}
if (entry.isFile()) {
await copyFile(src, dst)
}
}
}
async function main() {
const scriptDir = fileURLToPath(new URL('.', import.meta.url))
const mobileRoot = resolve(scriptDir, '..')
const repoRoot = resolve(mobileRoot, '..')
const fromDir = join(repoRoot, 'dist')
const toDir = join(mobileRoot, 'www')
const st = await stat(fromDir).catch(() => null)
if (!st || !st.isDirectory()) {
throw new Error(`Missing dist/ at ${fromDir}. Run: pnpm -C .. run build:vite`)
}
await rm(toDir, { recursive: true, force: true })
await copyDir(fromDir, toDir)
}
main().catch((err) => {
console.error(err)
process.exit(1)
})