dpkit
Version:
Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames
95 lines • 10.2 kB
JavaScript
import { join } from "node:path";
import { execa } from "execa";
import metadata from "../package.json" with { type: "json" };
// TODO: Enable SQLite support
function makeShell(...paths) {
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`;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NjcmlwdHMvY29tcGlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFDN0IsT0FBTyxRQUFRLE1BQU0saUJBQWlCLENBQUMsT0FBTyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUE7QUFFNUQsOEJBQThCO0FBRTlCLFNBQVMsU0FBUyxDQUFDLEdBQUcsS0FBZTtJQUNuQyxPQUFPLEtBQUssQ0FBQztRQUNYLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDeEMsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQztRQUMzQixPQUFPLEVBQUUsT0FBTztRQUNoQixXQUFXLEVBQUUsSUFBSTtLQUNsQixDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQzdCLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7QUFDM0MsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7QUFFeEQsVUFBVTtBQUVWLE1BQU0sS0FBSyxDQUFBLGdCQUFnQixDQUFBO0FBQzNCLE1BQU0sS0FBSyxDQUFBLGVBQWUsQ0FBQTtBQUUxQixxQkFBcUI7QUFFckIsTUFBTSxLQUFLLENBQUE7Ozs7OztDQU1WLENBQUE7QUFFRCxrQkFBa0I7QUFFbEIsTUFBTSxRQUFRLEdBQUc7SUFDZixFQUFFLE1BQU0sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUU7SUFDekUsRUFBRSxNQUFNLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxFQUFFLHVCQUF1QixFQUFFO0NBQzVFLENBQUE7QUFFRCxLQUFLLE1BQU0sTUFBTSxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQzlCLE1BQU0sUUFBUSxDQUFBLHVCQUF1QixNQUFNLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDcEQsc0RBQXNEO0FBQ3hELENBQUM7QUFFRCxxQkFBcUI7QUFFckIsTUFBTSxPQUFPLEdBQUc7SUFDZDtRQUNFLElBQUksRUFBRSxlQUFlO1FBQ3JCLEtBQUssRUFBRSxXQUFXO1FBQ2xCLE1BQU0sRUFBRSw2QkFBNkI7UUFDckMsTUFBTSxFQUFFLHNCQUFzQjtLQUMvQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixLQUFLLEVBQUUsYUFBYTtRQUNwQixNQUFNLEVBQUUsK0JBQStCO1FBQ3ZDLE1BQU0sRUFBRSx3QkFBd0I7S0FDakM7SUFDRDtRQUNFLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsS0FBSyxFQUFFLFdBQVc7UUFDbEIsTUFBTSxFQUFFLDBCQUEwQjtRQUNsQyxNQUFNLEVBQUUsbUJBQW1CO0tBQzVCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsa0JBQWtCO1FBQ3hCLEtBQUssRUFBRSxhQUFhO1FBQ3BCLE1BQU0sRUFBRSw0QkFBNEI7UUFDcEMsTUFBTSxFQUFFLHFCQUFxQjtLQUM5QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLGlCQUFpQjtRQUN2QixLQUFLLEVBQUUsYUFBYTtRQUNwQixNQUFNLEVBQUUsOEJBQThCO1FBQ3RDLE1BQU0sRUFBRSx1QkFBdUI7S0FDaEM7Q0FDRixDQUFBO0FBRUQsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUM3QixNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBRXZELEtBQUssTUFBTSxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMxQyw2REFBNkQ7UUFDN0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUEsWUFBWSxXQUFXLEVBQUUsQ0FBQTtRQUNwRCxNQUFNLFFBQVEsQ0FBQSx5QkFBeUIsV0FBVyxFQUFFLENBQUE7UUFDcEQsTUFBTSxRQUFRLENBQUEsWUFBWSxJQUFJLENBQUMsTUFBTSxvQkFBb0IsV0FBVyx1QkFBdUIsQ0FBQTtRQUMzRixNQUFNLFFBQVEsQ0FBQSxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsTUFBTSxRQUFRLENBQUE7Ozt1QkFHTyxNQUFNO2FBQ2hCLE1BQU0sQ0FBQyxJQUFJO0dBQ3JCLENBQUE7SUFFRCxxREFBcUQ7SUFDckQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sU0FBUyxDQUFBLFlBQVksTUFBTSxTQUFTLENBQUE7SUFDNUMsQ0FBQztJQUVELE1BQU0sU0FBUyxDQUFBLFVBQVUsTUFBTSxRQUFRLE1BQU0sRUFBRSxDQUFBO0lBQy9DLE1BQU0sU0FBUyxDQUFBLFVBQVUsTUFBTSxFQUFFLENBQUE7SUFFakMsTUFBTSxRQUFRLENBQUEsdUJBQXVCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUNwRCxzREFBc0Q7QUFDeEQsQ0FBQztBQUVELDBEQUEwRDtBQUUxRCxNQUFNLEtBQUssQ0FBQSxjQUFjLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgeyBleGVjYSB9IGZyb20gXCJleGVjYVwiXG5pbXBvcnQgbWV0YWRhdGEgZnJvbSBcIi4uL3BhY2thZ2UuanNvblwiIHdpdGggeyB0eXBlOiBcImpzb25cIiB9XG5cbi8vIFRPRE86IEVuYWJsZSBTUUxpdGUgc3VwcG9ydFxuXG5mdW5jdGlvbiBtYWtlU2hlbGwoLi4ucGF0aHM6IHN0cmluZ1tdKSB7XG4gIHJldHVybiBleGVjYSh7XG4gICAgY3dkOiBqb2luKGltcG9ydC5tZXRhLmRpcm5hbWUsIC4uLnBhdGhzKSxcbiAgICBzdGRvdXQ6IFtcImluaGVyaXRcIiwgXCJwaXBlXCJdLFxuICAgIHZlcmJvc2U6IFwic2hvcnRcIixcbiAgICBwcmVmZXJMb2NhbDogdHJ1ZSxcbiAgfSlcbn1cblxuY29uc3QgJHJvb3QgPSBtYWtlU2hlbGwoXCIuLlwiKVxuY29uc3QgJGNvbXBpbGUgPSBtYWtlU2hlbGwoXCIuLlwiLCBcImNvbXBpbGVcIilcbmNvbnN0ICRiaW5hcmllcyA9IG1ha2VTaGVsbChcIi4uXCIsIFwiY29tcGlsZVwiLCBcImJpbmFyaWVzXCIpXG5cbi8vIENsZWFudXBcblxuYXdhaXQgJHJvb3Rgcm0gLXJmIGNvbXBpbGVgXG5hd2FpdCAkcm9vdGBta2RpciBjb21waWxlYFxuXG4vLyBCdWlsZCBkZXBlbmRlbmNpZXNcblxuYXdhaXQgJHJvb3RgXG5wbnBtIGRlcGxveSBjb21waWxlXG4tLWxlZ2FjeVxuLS1wcm9kdWN0aW9uXG4tLWZpbHRlciBkcGtpdFxuLS1jb25maWcubm9kZS1saW5rZXI9aG9pc3RlZFxuYFxuXG4vLyBSZW1vdmUgYmluYXJpZXNcblxuY29uc3QgYmluYXJpZXMgPSBbXG4gIHsgcG9sYXJzOiBcIm5vZGVqcy1wb2xhcnMtbGludXgteDY0LWdudVwiLCBsaWJzcWw6IFwibGlic3FsLWxpbnV4LXg2NC1nbnVcIiB9LFxuICB7IHBvbGFyczogXCJub2RlanMtcG9sYXJzLWxpbnV4LXg2NC1tdXNsXCIsIGxpYnNxbDogXCJsaWJzcWwtbGludXgteDY0LW11c2xcIiB9LFxuXVxuXG5mb3IgKGNvbnN0IGJpbmFyeSBvZiBiaW5hcmllcykge1xuICBhd2FpdCAkY29tcGlsZWBybSAtcmYgbm9kZV9tb2R1bGVzLyR7YmluYXJ5LnBvbGFyc31gXG4gIC8vYXdhaXQgJGNvbXBpbGVgcm0gLXJmIG5vZGVfbW9kdWxlcy8ke2JpbmFyeS5saWJzcWx9YFxufVxuXG4vLyBDb21waWxlIGV4ZWN1dGFibGVcblxuY29uc3QgdGFyZ2V0cyA9IFtcbiAge1xuICAgIG5hbWU6IFwiYnVuLWxpbnV4LXg2NFwiLFxuICAgIGRwa2l0OiBcImxpbnV4LXg2NFwiLFxuICAgIHBvbGFyczogXCJub2RlanMtcG9sYXJzLWxpbnV4LXg2NC1nbnVcIixcbiAgICBsaWJzcWw6IFwibGlic3FsLWxpbnV4LXg2NC1nbnVcIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IFwiYnVuLWxpbnV4LWFybTY0XCIsXG4gICAgZHBraXQ6IFwibGludXgtYXJtNjRcIixcbiAgICBwb2xhcnM6IFwibm9kZWpzLXBvbGFycy1saW51eC1hcm02NC1nbnVcIixcbiAgICBsaWJzcWw6IFwibGlic3FsLWxpbnV4LWFybTY0LWdudVwiLFxuICB9LFxuICB7XG4gICAgbmFtZTogXCJidW4tZGFyd2luLXg2NFwiLFxuICAgIGRwa2l0OiBcIm1hY29zLXg2NFwiLFxuICAgIHBvbGFyczogXCJub2RlanMtcG9sYXJzLWRhcndpbi14NjRcIixcbiAgICBsaWJzcWw6IFwibGlic3FsLWRhcndpbi14NjRcIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IFwiYnVuLWRhcndpbi1hcm02NFwiLFxuICAgIGRwa2l0OiBcIm1hY29zLWFybTY0XCIsXG4gICAgcG9sYXJzOiBcIm5vZGVqcy1wb2xhcnMtZGFyd2luLWFybTY0XCIsXG4gICAgbGlic3FsOiBcImxpYnNxbC1kYXJ3aW4tYXJtNjRcIixcbiAgfSxcbiAge1xuICAgIG5hbWU6IFwiYnVuLXdpbmRvd3MteDY0XCIsXG4gICAgZHBraXQ6IFwid2luZG93cy14NjRcIixcbiAgICBwb2xhcnM6IFwibm9kZWpzLXBvbGFycy13aW4zMi14NjQtbXN2Y1wiLFxuICAgIGxpYnNxbDogXCJsaWJzcWwtd2luMzIteDY0LW1zdmNcIixcbiAgfSxcbl1cblxuZm9yIChjb25zdCB0YXJnZXQgb2YgdGFyZ2V0cykge1xuICBjb25zdCBmb2xkZXIgPSBgZHAtJHttZXRhZGF0YS52ZXJzaW9ufS0ke3RhcmdldC5kcGtpdH1gXG5cbiAgZm9yIChjb25zdCBwYWNrYWdlTmFtZSBvZiBbdGFyZ2V0LnBvbGFyc10pIHtcbiAgICAvL2ZvciAoY29uc3QgcGFja2FnZU5hbWUgb2YgW3RhcmdldC5wb2xhcnMsIHRhcmdldC5saWJzcWxdKSB7XG4gICAgY29uc3QgcGFjayA9IGF3YWl0ICRjb21waWxlYG5wbSBwYWNrICR7cGFja2FnZU5hbWV9YFxuICAgIGF3YWl0ICRjb21waWxlYG1rZGlyIC1wIG5vZGVfbW9kdWxlcy8ke3BhY2thZ2VOYW1lfWBcbiAgICBhd2FpdCAkY29tcGlsZWB0YXIgLXh6ZiAke3BhY2suc3Rkb3V0fSAtQyBub2RlX21vZHVsZXMvJHtwYWNrYWdlTmFtZX0gLS1zdHJpcC1jb21wb25lbnRzPTFgXG4gICAgYXdhaXQgJGNvbXBpbGVgcm0gJHtwYWNrLnN0ZG91dH1gXG4gIH1cblxuICBhd2FpdCAkY29tcGlsZWBcbiAgYnVuIGJ1aWxkIG1haW4udHNcbiAgLS1jb21waWxlXG4gIC0tb3V0ZmlsZSBiaW5hcmllcy8ke2ZvbGRlcn0vZHBcbiAgLS10YXJnZXQgJHt0YXJnZXQubmFtZX1cbiAgYFxuXG4gIC8vIEZvciBzb21lIHJlYXNvbiBidW4gY3JlYXRlcyBpdCB3aXRoIG5vIHBlcm1pc3Npb25zXG4gIGlmICh0YXJnZXQubmFtZS5zdGFydHNXaXRoKFwiYnVuLXdpbmRvd3NcIikpIHtcbiAgICBhd2FpdCAkYmluYXJpZXNgY2htb2QgK3IgJHtmb2xkZXJ9L2RwLmV4ZWBcbiAgfVxuXG4gIGF3YWl0ICRiaW5hcmllc2B6aXAgLXIgJHtmb2xkZXJ9LnppcCAke2ZvbGRlcn1gXG4gIGF3YWl0ICRiaW5hcmllc2BybSAtcmYgJHtmb2xkZXJ9YFxuXG4gIGF3YWl0ICRjb21waWxlYHJtIC1yZiBub2RlX21vZHVsZXMvJHt0YXJnZXQucG9sYXJzfWBcbiAgLy9hd2FpdCAkY29tcGlsZWBybSAtcmYgbm9kZV9tb2R1bGVzLyR7dGFyZ2V0LmxpYnNxbH1gXG59XG5cbi8vIENsZWFuIGFydGlmYWN0cyAocG5wbSBjcmVhdGVzIGFuIHVud2FudGVkIGRwa2l0IGZvbGRlcilcblxuYXdhaXQgJHJvb3Rgcm0gLXJmIGRwa2l0YFxuIl19