KDE Plasma Widget for displaying real time arrivals for MARTA buses.
kde
plasma
marta
transit
1.3 kB
30 lines
1#!/usr/bin/env node
2import { execFile } from "node:child_process";
3import { createHash } from "node:crypto";
4import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
5import { basename, dirname, resolve } from "node:path";
6import { fileURLToPath } from "node:url";
7import { promisify } from "node:util";
8
9const executeFile = promisify(execFile);
10const projectRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
11const metadata = JSON.parse(await readFile(resolve(projectRoot, "metadata.json"), "utf8"));
12const version = metadata.KPlugin?.Version;
13if (!version) throw new Error("metadata.json must define KPlugin.Version");
14
15const outputFile = process.argv[2]
16 ? resolve(process.argv[2])
17 : resolve(projectRoot, "dist", `marta-bus-arrivals-${version}.plasmoid`);
18
19await mkdir(dirname(outputFile), { recursive: true });
20await rm(outputFile, { force: true });
21await executeFile("zip", ["-r", "-q", outputFile, "metadata.json", "contents", "LICENSE.md"], {
22 cwd: projectRoot
23});
24
25const archive = await readFile(outputFile);
26const checksum = createHash("sha256").update(archive).digest("hex");
27const checksumFile = resolve(dirname(outputFile), "SHA256SUMS");
28await writeFile(checksumFile, `${checksum} ${basename(outputFile)}\n`);
29
30console.log(outputFile);