docs(release): stage artifacts folder

This commit is contained in:
DeskClaw Bot
2026-04-21 14:44:35 +00:00
Unverified
parent aa4d1fe2b2
commit fc3eacbcbb
4 changed files with 106 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
import { mkdir, readdir, rm, copyFile, stat, writeFile } from 'node:fs/promises'
import { join, resolve } from 'node:path'
function parseArgs(argv) {
const args = {}
for (const raw of argv.slice(2)) {
if (!raw.startsWith('--')) continue
const [k, v] = raw.slice(2).split('=')
args[k] = v ?? true
}
return args
}
async function exists(p) {
try {
await stat(p)
return true
} catch {
return false
}
}
async function main() {
const args = parseArgs(process.argv)
const platform = typeof args.platform === 'string' ? args.platform : 'unknown'
const repoRoot = resolve(process.cwd())
const fromDir = join(repoRoot, 'release')
const toDir = join(repoRoot, 'artifacts', 'releases', platform)
if (!(await exists(fromDir))) {
throw new Error(`Missing release/ directory at: ${fromDir}`)
}
await mkdir(toDir, { recursive: true })
const entries = await readdir(fromDir)
const copied = []
for (const name of entries) {
const src = join(fromDir, name)
const st = await stat(src)
if (!st.isFile()) continue
const dst = join(toDir, name)
await copyFile(src, dst)
copied.push({ name, size: st.size })
}
const manifest = {
platform,
sourceDir: 'release',
destDir: `artifacts/releases/${platform}`,
files: copied.sort((a, b) => a.name.localeCompare(b.name)),
createdAt: new Date().toISOString(),
}
await writeFile(join(toDir, 'manifest.json'), JSON.stringify(manifest, null, 2), 'utf8')
await rm(fromDir, { recursive: true, force: true })
}
main().catch((err) => {
console.error(err)
process.exit(1)
})