fix: harden onboarding for non-systemd environments

This commit is contained in:
Peter Steinberger
2026-01-09 22:16:17 +01:00
parent 402c35b91c
commit 55e830b009
11 changed files with 409 additions and 170 deletions

View File

@@ -2,6 +2,7 @@ import { note as clackNote } from "@clack/prompts";
import {
enableSystemdUserLinger,
isSystemdUserServiceAvailable,
readSystemdUserLingerStatus,
} from "../daemon/systemd.js";
import type { RuntimeEnv } from "../runtime.js";
@@ -32,6 +33,13 @@ export async function ensureSystemdUserLingerInteractive(params: {
const env = params.env ?? process.env;
const prompter = params.prompter ?? { note };
const title = params.title ?? "Systemd";
if (!(await isSystemdUserServiceAvailable())) {
await prompter.note(
"Systemd user services are unavailable. Skipping lingering checks.",
title,
);
return;
}
const status = await readSystemdUserLingerStatus(env);
if (!status) {
await prompter.note(
@@ -98,6 +106,7 @@ export async function ensureSystemdUserLingerNonInteractive(params: {
}): Promise<void> {
if (process.platform !== "linux") return;
const env = params.env ?? process.env;
if (!(await isSystemdUserServiceAvailable())) return;
const status = await readSystemdUserLingerStatus(env);
if (!status || status.linger === "yes") return;