mirror of
https://github.com/versia-pub/server.git
synced 2025-12-06 16:38:19 +01:00
50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
|
|
import os from "node:os";
|
||
|
|
import { Flags } from "@oclif/core";
|
||
|
|
import { BaseCommand } from "~cli/base";
|
||
|
|
|
||
|
|
export default class Start extends BaseCommand<typeof Start> {
|
||
|
|
static override args = {};
|
||
|
|
|
||
|
|
static override description = "Starts Lysand";
|
||
|
|
|
||
|
|
static override examples = [
|
||
|
|
"<%= config.bin %> <%= command.id %> --threads 4",
|
||
|
|
"<%= config.bin %> <%= command.id %> --all-threads",
|
||
|
|
];
|
||
|
|
|
||
|
|
static override flags = {
|
||
|
|
threads: Flags.integer({
|
||
|
|
char: "t",
|
||
|
|
description: "Number of threads to use",
|
||
|
|
default: 1,
|
||
|
|
exclusive: ["all-threads"],
|
||
|
|
}),
|
||
|
|
"all-threads": Flags.boolean({
|
||
|
|
description: "Use all available threads",
|
||
|
|
default: false,
|
||
|
|
exclusive: ["threads"],
|
||
|
|
}),
|
||
|
|
silent: Flags.boolean({
|
||
|
|
description: "Don't show logs in console",
|
||
|
|
default: false,
|
||
|
|
}),
|
||
|
|
};
|
||
|
|
|
||
|
|
public async run(): Promise<void> {
|
||
|
|
const { flags } = await this.parse(Start);
|
||
|
|
|
||
|
|
const numCPUs = flags["all-threads"] ? os.cpus().length : flags.threads;
|
||
|
|
|
||
|
|
for (let i = 0; i < numCPUs; i++) {
|
||
|
|
const args = ["bun", "index.ts"];
|
||
|
|
if (i !== 0 || flags.silent) {
|
||
|
|
args.push("--silent");
|
||
|
|
}
|
||
|
|
Bun.spawn(args, {
|
||
|
|
stdio: ["inherit", "inherit", "inherit"],
|
||
|
|
env: { ...process.env },
|
||
|
|
});
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|