mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-11-04 17:17:39 +00:00
* ci: drop dlltool from nodejs libs release * nodejs: download libsimplex into the user cache * nodejs: load libsimplex at runtime per backend * support bot: select db backend with --db * python: match backend switch error text * nodejs: download prebuilt add-on at runtime * ci: build nodejs add-on for libs release * calculator bot: load libs and add-on in image * support bot: document add-on override * nodejs: keep worker test output free of colors * nodejs: verify sha-256 of downloaded assets * python: pin core libs release with sha-256 * ci: add packages release script * ci: release nodejs add-on and open release PR * ci: publish packages after release PR * nodejs: keep npm from building the add-on * calculator bot: build the add-on in the image * ci: merge package release workflows * ci: open release PR when publishing fails * ci: build the add-on with node-addon-api only * ci: skip publishing in a called packages workflow * ci: update package release actions to Node 24 * nodejs: fix receive test timeout * ci: test packages on pull requests * nodejs: reuse the database in the close stress test * ci: keep failed package tests from hanging * ci: skip preset server tests * ci: plan package builds from the changes * ci: test packages with a given libsimplex * ci: test packages with libsimplex of core changes
43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
#!/usr/bin/env node
|
|
import {parseArgs} from "util"
|
|
import type {Backend} from "./core"
|
|
import {resolveAddonPath, resolveLibsDir} from "./libs"
|
|
|
|
const USAGE = "usage: simplex-chat install [--backend sqlite|postgres]"
|
|
const EXIT_INSTALL_FAILED = 1
|
|
const EXIT_USAGE = 2
|
|
|
|
export function parseInstallArgs(argv: string[]): Backend {
|
|
const {positionals, values: {backend = "sqlite"}} = parseArgs({args: argv, allowPositionals: true, options: {backend: {type: "string"}}})
|
|
if (positionals.length !== 1 || positionals[0] !== "install") throw new Error("expected command: install")
|
|
if (backend !== "sqlite" && backend !== "postgres") throw new Error(`invalid backend: ${backend}`)
|
|
return backend
|
|
}
|
|
|
|
export async function main(argv: string[]): Promise<number> {
|
|
if (argv.includes("-h") || argv.includes("--help")) {
|
|
console.log(USAGE)
|
|
return 0
|
|
}
|
|
let backend: Backend
|
|
try {
|
|
backend = parseInstallArgs(argv)
|
|
} catch (e) {
|
|
console.error(`${(e as Error).message}\n${USAGE}`)
|
|
return EXIT_USAGE
|
|
}
|
|
try {
|
|
const [dir, addon] = await Promise.all([resolveLibsDir(backend), resolveAddonPath()])
|
|
console.log(`libsimplex installed at: ${dir}`)
|
|
console.log(`Node.js add-on installed at: ${addon}`)
|
|
return 0
|
|
} catch (e) {
|
|
console.error(`install failed: ${(e as Error).message}`)
|
|
return EXIT_INSTALL_FAILED
|
|
}
|
|
}
|
|
|
|
if (require.main === module) {
|
|
main(process.argv.slice(2)).then(code => { process.exitCode = code })
|
|
}
|