UNPKG

dpkit

Version:

Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames

115 lines (94 loc) 2.78 kB
import { join } from "node:path" import { execa } from "execa" import metadata from "../package.json" with { type: "json" } // TODO: Enable SQLite support function makeShell(...paths: string[]) { return execa({ cwd: join(import.meta.dirname, ...paths), stdout: ["inherit", "pipe"], verbose: "short", preferLocal: true, }) } const $root = makeShell("..") const $compile = makeShell("..", "compile") const $binaries = makeShell("..", "compile", "binaries") // Cleanup await $root`rm -rf compile` await $root`mkdir compile` // Build dependencies await $root` pnpm deploy compile --legacy --production --filter dpkit --config.node-linker=hoisted ` // Remove binaries const binaries = [ { polars: "nodejs-polars-linux-x64-gnu", libsql: "libsql-linux-x64-gnu" }, { polars: "nodejs-polars-linux-x64-musl", libsql: "libsql-linux-x64-musl" }, ] for (const binary of binaries) { await $compile`rm -rf node_modules/${binary.polars}` //await $compile`rm -rf node_modules/${binary.libsql}` } // Compile executable const targets = [ { name: "bun-linux-x64", dpkit: "linux-x64", polars: "nodejs-polars-linux-x64-gnu", libsql: "libsql-linux-x64-gnu", }, { name: "bun-linux-arm64", dpkit: "linux-arm64", polars: "nodejs-polars-linux-arm64-gnu", libsql: "libsql-linux-arm64-gnu", }, { name: "bun-darwin-x64", dpkit: "macos-x64", polars: "nodejs-polars-darwin-x64", libsql: "libsql-darwin-x64", }, { name: "bun-darwin-arm64", dpkit: "macos-arm64", polars: "nodejs-polars-darwin-arm64", libsql: "libsql-darwin-arm64", }, { name: "bun-windows-x64", dpkit: "windows-x64", polars: "nodejs-polars-win32-x64-msvc", libsql: "libsql-win32-x64-msvc", }, ] for (const target of targets) { const folder = `dp-${metadata.version}-${target.dpkit}` for (const packageName of [target.polars]) { //for (const packageName of [target.polars, target.libsql]) { const pack = await $compile`npm pack ${packageName}` await $compile`mkdir -p node_modules/${packageName}` await $compile`tar -xzf ${pack.stdout} -C node_modules/${packageName} --strip-components=1` await $compile`rm ${pack.stdout}` } await $compile` bun build main.ts --compile --outfile binaries/${folder}/dp --target ${target.name} ` // For some reason bun creates it with no permissions if (target.name.startsWith("bun-windows")) { await $binaries`chmod +r ${folder}/dp.exe` } await $binaries`zip -r ${folder}.zip ${folder}` await $binaries`rm -rf ${folder}` await $compile`rm -rf node_modules/${target.polars}` //await $compile`rm -rf node_modules/${target.libsql}` } // Clean artifacts (pnpm creates an unwanted dpkit folder) await $root`rm -rf dpkit`