charness 3.8.0 → 3.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/DEVELOPMENT.md +3 -1
- package/SETUP.md +4 -3
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +12 -5
- package/dist/cli.js.map +1 -1
- package/dist/connectors/telegram/commands/runners.d.ts.map +1 -1
- package/dist/connectors/telegram/commands/runners.js +64 -26
- package/dist/connectors/telegram/commands/runners.js.map +1 -1
- package/dist/connectors/telegram/runnerPairingMessages.d.ts +7 -5
- package/dist/connectors/telegram/runnerPairingMessages.d.ts.map +1 -1
- package/dist/connectors/telegram/runnerPairingMessages.js +17 -10
- package/dist/connectors/telegram/runnerPairingMessages.js.map +1 -1
- package/dist/i18n/de.d.ts.map +1 -1
- package/dist/i18n/de.js +6 -4
- package/dist/i18n/de.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +6 -4
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/es.d.ts.map +1 -1
- package/dist/i18n/es.js +6 -4
- package/dist/i18n/es.js.map +1 -1
- package/dist/i18n/fr.d.ts.map +1 -1
- package/dist/i18n/fr.js +6 -4
- package/dist/i18n/fr.js.map +1 -1
- package/dist/i18n/hi.d.ts.map +1 -1
- package/dist/i18n/hi.js +6 -4
- package/dist/i18n/hi.js.map +1 -1
- package/dist/i18n/ja.d.ts.map +1 -1
- package/dist/i18n/ja.js +6 -4
- package/dist/i18n/ja.js.map +1 -1
- package/dist/i18n/ka.d.ts.map +1 -1
- package/dist/i18n/ka.js +6 -4
- package/dist/i18n/ka.js.map +1 -1
- package/dist/i18n/pt.d.ts.map +1 -1
- package/dist/i18n/pt.js +6 -4
- package/dist/i18n/pt.js.map +1 -1
- package/dist/i18n/ru.d.ts.map +1 -1
- package/dist/i18n/ru.js +6 -4
- package/dist/i18n/ru.js.map +1 -1
- package/dist/i18n/uk.d.ts.map +1 -1
- package/dist/i18n/uk.js +6 -4
- package/dist/i18n/uk.js.map +1 -1
- package/dist/i18n/uz.d.ts.map +1 -1
- package/dist/i18n/uz.js +6 -4
- package/dist/i18n/uz.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +6 -4
- package/dist/i18n/zh.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/remoteRun/pairedRunners.js +1 -1
- package/dist/remoteRun/pairedRunners.js.map +1 -1
- package/dist/remoteRun/runnerSummary.js +1 -1
- package/dist/remoteRun/runnerSummary.js.map +1 -1
- package/dist/remoteRun/runners.d.ts +8 -1
- package/dist/remoteRun/runners.d.ts.map +1 -1
- package/dist/remoteRun/runners.js +14 -2
- package/dist/remoteRun/runners.js.map +1 -1
- package/dist/remoteRun/runnersConfig.d.ts +2 -0
- package/dist/remoteRun/runnersConfig.d.ts.map +1 -1
- package/dist/remoteRun/runnersConfig.js.map +1 -1
- package/dist/runnerUtility/adminCheck.d.ts +7 -0
- package/dist/runnerUtility/adminCheck.d.ts.map +1 -1
- package/dist/runnerUtility/adminCheck.js +5 -4
- package/dist/runnerUtility/adminCheck.js.map +1 -1
- package/dist/runnerUtility/adminService.d.ts +22 -0
- package/dist/runnerUtility/adminService.d.ts.map +1 -0
- package/dist/runnerUtility/adminService.js +145 -0
- package/dist/runnerUtility/adminService.js.map +1 -0
- package/dist/runnerUtility/hubClient.d.ts +2 -2
- package/dist/runnerUtility/hubClient.d.ts.map +1 -1
- package/dist/runnerUtility/hubClient.js +1 -1
- package/dist/runnerUtility/hubClient.js.map +1 -1
- package/dist/runnerUtility/linkLoop.d.ts +0 -8
- package/dist/runnerUtility/linkLoop.d.ts.map +1 -1
- package/dist/runnerUtility/linkLoop.js +3 -10
- package/dist/runnerUtility/linkLoop.js.map +1 -1
- package/dist/runnerUtility/pairArgs.d.ts +16 -0
- package/dist/runnerUtility/pairArgs.d.ts.map +1 -0
- package/dist/runnerUtility/pairArgs.js +17 -0
- package/dist/runnerUtility/pairArgs.js.map +1 -0
- package/dist/runnerUtility/rootServiceCli.d.ts +8 -0
- package/dist/runnerUtility/rootServiceCli.d.ts.map +1 -0
- package/dist/runnerUtility/rootServiceCli.js +31 -0
- package/dist/runnerUtility/rootServiceCli.js.map +1 -0
- package/dist/runnerUtility/runnerCli.js +29 -23
- package/dist/runnerUtility/runnerCli.js.map +1 -1
- package/dist/runnerUtility/runnerCommands.d.ts +13 -4
- package/dist/runnerUtility/runnerCommands.d.ts.map +1 -1
- package/dist/runnerUtility/runnerCommands.js +58 -12
- package/dist/runnerUtility/runnerCommands.js.map +1 -1
- package/dist/runnerUtility/serviceCommon.d.ts +97 -0
- package/dist/runnerUtility/serviceCommon.d.ts.map +1 -0
- package/dist/runnerUtility/serviceCommon.js +209 -0
- package/dist/runnerUtility/serviceCommon.js.map +1 -0
- package/dist/runnerUtility/serviceManager.d.ts +14 -17
- package/dist/runnerUtility/serviceManager.d.ts.map +1 -1
- package/dist/runnerUtility/serviceManager.js +132 -201
- package/dist/runnerUtility/serviceManager.js.map +1 -1
- package/dist/runnerUtility/serviceUnits.d.ts +3 -1
- package/dist/runnerUtility/serviceUnits.d.ts.map +1 -1
- package/dist/runnerUtility/serviceUnits.js +26 -6
- package/dist/runnerUtility/serviceUnits.js.map +1 -1
- package/dist/runners/bootstrapLine.d.ts +10 -1
- package/dist/runners/bootstrapLine.d.ts.map +1 -1
- package/dist/runners/bootstrapLine.js +102 -17
- package/dist/runners/bootstrapLine.js.map +1 -1
- package/dist/runners/gate.d.ts.map +1 -1
- package/dist/runners/gate.js +9 -0
- package/dist/runners/gate.js.map +1 -1
- package/dist/runners/gateProtocol.d.ts +7 -1
- package/dist/runners/gateProtocol.d.ts.map +1 -1
- package/dist/runners/gateProtocol.js +5 -3
- package/dist/runners/gateProtocol.js.map +1 -1
- package/dist/runners/hubPairing.d.ts +7 -0
- package/dist/runners/hubPairing.d.ts.map +1 -1
- package/dist/runners/hubPairing.js +16 -0
- package/dist/runners/hubPairing.js.map +1 -1
- package/dist/runners/hubPaths.d.ts +4 -0
- package/dist/runners/hubPaths.d.ts.map +1 -1
- package/dist/runners/hubPaths.js +2 -0
- package/dist/runners/hubPaths.js.map +1 -1
- package/dist/runners/hubRegistry.d.ts +23 -1
- package/dist/runners/hubRegistry.d.ts.map +1 -1
- package/dist/runners/hubRegistry.js +48 -2
- package/dist/runners/hubRegistry.js.map +1 -1
- package/dist/runners/linkControl.d.ts +12 -1
- package/dist/runners/linkControl.d.ts.map +1 -1
- package/dist/runners/linkControl.js +56 -9
- package/dist/runners/linkControl.js.map +1 -1
- package/dist/runners/removalTiming.d.ts +13 -0
- package/dist/runners/removalTiming.d.ts.map +1 -0
- package/dist/runners/removalTiming.js +17 -0
- package/dist/runners/removalTiming.js.map +1 -0
- package/dist/runners/runnerRemoval.d.ts.map +1 -1
- package/dist/runners/runnerRemoval.js +12 -0
- package/dist/runners/runnerRemoval.js.map +1 -1
- package/dist/runners/runnerServiceKind.d.ts +10 -0
- package/dist/runners/runnerServiceKind.d.ts.map +1 -0
- package/dist/runners/runnerServiceKind.js +13 -0
- package/dist/runners/runnerServiceKind.js.map +1 -0
- package/dist/runners/runnersCli.d.ts +11 -2
- package/dist/runners/runnersCli.d.ts.map +1 -1
- package/dist/runners/runnersCli.js +39 -14
- package/dist/runners/runnersCli.js.map +1 -1
- package/dist/runners/runnersList.d.ts +6 -9
- package/dist/runners/runnersList.d.ts.map +1 -1
- package/dist/runners/runnersList.js +9 -7
- package/dist/runners/runnersList.js.map +1 -1
- package/dist/runners/runnersOverview.d.ts.map +1 -1
- package/dist/runners/runnersOverview.js +2 -1
- package/dist/runners/runnersOverview.js.map +1 -1
- package/dist/selfUpdate/selfCheck.d.ts +13 -0
- package/dist/selfUpdate/selfCheck.d.ts.map +1 -1
- package/dist/selfUpdate/selfCheck.js +9 -3
- package/dist/selfUpdate/selfCheck.js.map +1 -1
- package/dist/stt/sttInstallEntry.js +7 -4
- package/dist/stt/sttInstallEntry.js.map +1 -1
- package/dist/utils/runnersScreenPlan.d.ts +18 -7
- package/dist/utils/runnersScreenPlan.d.ts.map +1 -1
- package/dist/utils/runnersScreenPlan.js +22 -7
- package/dist/utils/runnersScreenPlan.js.map +1 -1
- package/package.json +1 -1
|
@@ -36,8 +36,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.parseServiceCommand = parseServiceCommand;
|
|
37
37
|
exports.createServiceDeps = createServiceDeps;
|
|
38
38
|
exports.readServiceKind = readServiceKind;
|
|
39
|
+
exports.formatSystemServiceRemoval = formatSystemServiceRemoval;
|
|
39
40
|
exports.installService = installService;
|
|
40
41
|
exports.uninstallService = uninstallService;
|
|
42
|
+
exports.runSystemStep = runSystemStep;
|
|
41
43
|
const fs = __importStar(require("fs"));
|
|
42
44
|
const os = __importStar(require("os"));
|
|
43
45
|
const path = __importStar(require("path"));
|
|
@@ -46,26 +48,25 @@ const localLinkStop_1 = require("./localLinkStop");
|
|
|
46
48
|
const pueueDaemon_1 = require("./pueueDaemon");
|
|
47
49
|
const runnerConfig_1 = require("./runnerConfig");
|
|
48
50
|
const runnerHome_1 = require("./runnerHome");
|
|
51
|
+
const serviceCommon_1 = require("./serviceCommon");
|
|
49
52
|
const serviceUnits_1 = require("./serviceUnits");
|
|
50
53
|
/**
|
|
51
|
-
* @description `charness-runner service install|uninstall`: keep the link and Pueue running without a terminal
|
|
54
|
+
* @description `charness-runner service install|uninstall`: keep the link and Pueue running without a terminal — as the account that runs
|
|
55
|
+
* them, with the account's own rights.
|
|
52
56
|
*
|
|
53
57
|
* Linux two systemd USER units and `loginctl enable-linger` — no admin; where polkit wants one for the lingering, the one
|
|
54
58
|
* `sudo` line is printed and the units are installed all the same
|
|
55
59
|
* macOS two LaunchAgents — no admin; they run while the account is logged in (switched away included)
|
|
56
|
-
*
|
|
57
|
-
*
|
|
60
|
+
* always on (a Mac, logged out too; or Linux lingering set by an admin) is the ADMIN pairing line's work, not this command's: root must
|
|
61
|
+
* not run anything from this account's folder, so the admin line runs `adminService.ts` from a root-owned copy of the
|
|
62
|
+
* package, and that calls back into THIS program, as the account, for the account's own side (`service system-step`
|
|
63
|
+
* below). `--system` here is refused and says so.
|
|
58
64
|
*
|
|
59
65
|
* One kind at a time: installing one while the other's files exist is refused with the command that removes it. The kind is written to
|
|
60
66
|
* `~/.charness-runner/service` (one word) for `status` and for `runner.sh probe`.
|
|
61
67
|
*/
|
|
62
|
-
const commandTimeoutMs = 60 * 1000;
|
|
63
|
-
const unitFileMode = 0o644;
|
|
64
|
-
const logsDirMode = 0o700;
|
|
65
|
-
const rootUid = 0;
|
|
66
|
-
const wheelGid = 0;
|
|
67
68
|
const markerMode = 0o644;
|
|
68
|
-
/** @description `install|uninstall [--system --user <name>]
|
|
69
|
+
/** @description `install|uninstall [--system --user <name>]` (the pair is read only to be refused with the way that works). */
|
|
69
70
|
function parseServiceCommand(args) {
|
|
70
71
|
const [action, ...flags] = args;
|
|
71
72
|
if (action !== 'install' && action !== 'uninstall')
|
|
@@ -87,15 +88,6 @@ function parseServiceCommand(args) {
|
|
|
87
88
|
return { ok: false, error: '--system and --user <account> go together (the daemon runs as that account)' };
|
|
88
89
|
return { ok: true, action, request };
|
|
89
90
|
}
|
|
90
|
-
async function resolveMacAccount(name, runner) {
|
|
91
|
-
const uid = await runner('id', ['-u', name], { timeoutMs: commandTimeoutMs });
|
|
92
|
-
const gid = await runner('id', ['-g', name], { timeoutMs: commandTimeoutMs });
|
|
93
|
-
if (!uid.ok || !gid.ok)
|
|
94
|
-
return null;
|
|
95
|
-
const home = await runner('dscl', ['.', '-read', `/Users/${name}`, 'NFSHomeDirectory'], { timeoutMs: commandTimeoutMs });
|
|
96
|
-
const homeDir = home.ok ? /NFSHomeDirectory:\s*(\S.*)$/m.exec(home.stdout)?.[1].trim() : undefined;
|
|
97
|
-
return { name, uid: Number(uid.stdout.trim()), gid: Number(gid.stdout.trim()), homeDir: homeDir ?? `/Users/${name}` };
|
|
98
|
-
}
|
|
99
91
|
function createServiceDeps() {
|
|
100
92
|
return {
|
|
101
93
|
runner: commandRunner_1.runCommand,
|
|
@@ -106,8 +98,6 @@ function createServiceDeps() {
|
|
|
106
98
|
homeDir: os.homedir(),
|
|
107
99
|
nodePath: process.execPath,
|
|
108
100
|
launchDaemonsDir: '/Library/LaunchDaemons',
|
|
109
|
-
chown: fs.chownSync,
|
|
110
|
-
resolveAccount: (name) => resolveMacAccount(name, commandRunner_1.runCommand),
|
|
111
101
|
};
|
|
112
102
|
}
|
|
113
103
|
/** @description The kind written by the last install, or `null`. */
|
|
@@ -124,49 +114,11 @@ function getSystemdFiles(homeDir, names) {
|
|
|
124
114
|
const directory = path.join(homeDir, '.config', 'systemd', 'user');
|
|
125
115
|
return { directory, link: path.join(directory, names.systemdLink), pueued: path.join(directory, names.systemdPueued) };
|
|
126
116
|
}
|
|
127
|
-
function
|
|
128
|
-
const directory = isSystem ? daemonsDir : path.join(homeDir, 'Library', 'LaunchAgents');
|
|
129
|
-
return { directory, link: path.join(directory, `${names.launchdLink}.plist`), pueued: path.join(directory, `${names.launchdPueued}.plist`) };
|
|
130
|
-
}
|
|
131
|
-
function writeDefinition(filePath, text) {
|
|
132
|
-
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
133
|
-
fs.writeFileSync(filePath, text, { mode: unitFileMode });
|
|
134
|
-
fs.chmodSync(filePath, unitFileMode);
|
|
135
|
-
}
|
|
136
|
-
/** @description The files of a service that already exists, as they are now: a failed re-install puts them back instead of tearing the working service down. */
|
|
137
|
-
function readPreviousDefinitions(files) {
|
|
138
|
-
return files.map((file) => ({ file, content: fs.existsSync(file) ? fs.readFileSync(file, 'utf8') : null }));
|
|
139
|
-
}
|
|
140
|
-
/** @description Put `previous` back: a file that existed gets its text again, one this install made new (it had no earlier version) is removed. */
|
|
141
|
-
function restorePreviousDefinitions(previous) {
|
|
142
|
-
for (const { file, content } of previous) {
|
|
143
|
-
if (content === null)
|
|
144
|
-
fs.rmSync(file, { force: true });
|
|
145
|
-
else
|
|
146
|
-
writeDefinition(file, content);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
function writeMarker(paths, kind, owner, chown) {
|
|
117
|
+
function writeMarker(paths, kind) {
|
|
150
118
|
fs.mkdirSync(paths.root, { recursive: true, mode: 0o700 });
|
|
151
119
|
fs.writeFileSync(paths.serviceMarker, `${kind}\n`, { mode: markerMode });
|
|
152
|
-
if (owner !== null)
|
|
153
|
-
chown(paths.serviceMarker, owner.uid, owner.gid);
|
|
154
|
-
}
|
|
155
|
-
function fail(...lines) {
|
|
156
|
-
return { ok: false, lines };
|
|
157
120
|
}
|
|
158
121
|
const stillRunningStates = ['active', 'activating', 'reloading', 'deactivating'];
|
|
159
|
-
/** Give the whole folder to the account (the `--system` install runs as root and creates what the daemons, running as the account, must write). */
|
|
160
|
-
function giveTreeTo(directory, owner, chown) {
|
|
161
|
-
chown(directory, owner.uid, owner.gid);
|
|
162
|
-
for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
|
|
163
|
-
const entryPath = path.join(directory, entry.name);
|
|
164
|
-
if (entry.isDirectory())
|
|
165
|
-
giveTreeTo(entryPath, owner, chown);
|
|
166
|
-
else
|
|
167
|
-
chown(entryPath, owner.uid, owner.gid);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
122
|
/**
|
|
171
123
|
* Everything that must be true BEFORE either service starts, or the services start into a mess:
|
|
172
124
|
* - the Pueue binaries exist (a unit that cannot start would restart in a loop);
|
|
@@ -177,10 +129,11 @@ function giveTreeTo(directory, owner, chown) {
|
|
|
177
129
|
* - Pueue's private configuration exists, and the service record is written, so the first start of the queue has its configuration and
|
|
178
130
|
* the link, seeing the record, waits for the service's queue instead of starting a daemon of its own.
|
|
179
131
|
* Returns the refusal, or `null` when the services may start. `hadService` tells a re-install (the daemon is the service's own then).
|
|
132
|
+
* All of it is the ACCOUNT's own doing, in the account's own tree (the always-on install reaches it through `service system-step`).
|
|
180
133
|
*/
|
|
181
|
-
async function prepareManagedStart(paths, deps, kind
|
|
134
|
+
async function prepareManagedStart(paths, deps, kind) {
|
|
182
135
|
const hadService = readServiceKind(paths) !== null;
|
|
183
|
-
const refuse = (...lines) => ({ refusal: fail(...lines), hadService });
|
|
136
|
+
const refuse = (...lines) => ({ refusal: (0, serviceCommon_1.fail)(...lines), hadService });
|
|
184
137
|
if (!fs.existsSync(path.join(paths.binDir, 'pueued')))
|
|
185
138
|
return refuse('Pueue is not installed for this runner yet: run `charness-runner check` (it installs it), then install the service.');
|
|
186
139
|
if (!hadService) {
|
|
@@ -197,15 +150,13 @@ async function prepareManagedStart(paths, deps, kind, owner) {
|
|
|
197
150
|
return refuse('An idle Pueue daemon is running and did not shut down; stop it by hand and install the service again.');
|
|
198
151
|
}
|
|
199
152
|
(0, pueueDaemon_1.ensurePueueConfig)(paths);
|
|
200
|
-
|
|
201
|
-
giveTreeTo(paths.pueueDir, owner, deps.chown);
|
|
202
|
-
writeMarker(paths, kind, owner, deps.chown);
|
|
153
|
+
writeMarker(paths, kind);
|
|
203
154
|
return { refusal: null, hadService };
|
|
204
155
|
}
|
|
205
156
|
async function stopSystemdUnits(names, deps) {
|
|
206
|
-
await deps.runner('systemctl', ['--user', 'disable', '--now', names.systemdLink, names.systemdPueued], { timeoutMs: commandTimeoutMs });
|
|
157
|
+
await deps.runner('systemctl', ['--user', 'disable', '--now', names.systemdLink, names.systemdPueued], { timeoutMs: serviceCommon_1.commandTimeoutMs });
|
|
207
158
|
for (const unit of [names.systemdLink, names.systemdPueued]) {
|
|
208
|
-
const state = await deps.runner('systemctl', ['--user', 'show', '-p', 'ActiveState', '--value', unit], { timeoutMs: commandTimeoutMs });
|
|
159
|
+
const state = await deps.runner('systemctl', ['--user', 'show', '-p', 'ActiveState', '--value', unit], { timeoutMs: serviceCommon_1.commandTimeoutMs });
|
|
209
160
|
if (!state.ok)
|
|
210
161
|
return `systemd cannot be asked whether ${unit} still runs (${state.stderr.trim().split('\n').slice(-1)[0] || 'no answer'})`;
|
|
211
162
|
if (stillRunningStates.includes(state.stdout.trim()))
|
|
@@ -216,42 +167,42 @@ async function stopSystemdUnits(names, deps) {
|
|
|
216
167
|
async function installSystemd(paths, deps) {
|
|
217
168
|
const names = (0, serviceUnits_1.getServiceNames)(paths.root);
|
|
218
169
|
const files = getSystemdFiles(paths.homeDir, names);
|
|
219
|
-
const { refusal, hadService } = await prepareManagedStart(paths, deps, 'user-service'
|
|
170
|
+
const { refusal, hadService } = await prepareManagedStart(paths, deps, 'user-service');
|
|
220
171
|
if (refusal !== null)
|
|
221
172
|
return refusal;
|
|
222
|
-
const previous = hadService ? readPreviousDefinitions([files.link, files.pueued]) : [];
|
|
173
|
+
const previous = hadService ? (0, serviceCommon_1.readPreviousDefinitions)([files.link, files.pueued]) : [];
|
|
223
174
|
const rollBack = async (...reason) => {
|
|
224
175
|
if (hadService) {
|
|
225
176
|
// A re-install that fails must not take the working service down with it: its definitions come back, its units are not touched.
|
|
226
|
-
restorePreviousDefinitions(previous);
|
|
227
|
-
const reloaded = await deps.runner('systemctl', ['--user', 'daemon-reload'], { timeoutMs: commandTimeoutMs });
|
|
228
|
-
return fail(...reason, reloaded.ok
|
|
177
|
+
(0, serviceCommon_1.restorePreviousDefinitions)(previous);
|
|
178
|
+
const reloaded = await deps.runner('systemctl', ['--user', 'daemon-reload'], { timeoutMs: serviceCommon_1.commandTimeoutMs });
|
|
179
|
+
return (0, serviceCommon_1.fail)(...reason, reloaded.ok
|
|
229
180
|
? 'The service installed before was left as it was.'
|
|
230
181
|
: 'Its definitions are back as they were, but systemd could not be asked to read them again: run `systemctl --user daemon-reload`.');
|
|
231
182
|
}
|
|
232
183
|
await stopSystemdUnits(names, deps);
|
|
233
184
|
for (const file of [files.link, files.pueued])
|
|
234
185
|
fs.rmSync(file, { force: true });
|
|
235
|
-
await deps.runner('systemctl', ['--user', 'daemon-reload'], { timeoutMs: commandTimeoutMs });
|
|
186
|
+
await deps.runner('systemctl', ['--user', 'daemon-reload'], { timeoutMs: serviceCommon_1.commandTimeoutMs });
|
|
236
187
|
fs.rmSync(paths.serviceMarker, { force: true });
|
|
237
|
-
return fail(...reason, 'Nothing was left installed.');
|
|
188
|
+
return (0, serviceCommon_1.fail)(...reason, 'Nothing was left installed.');
|
|
238
189
|
};
|
|
239
|
-
writeDefinition(files.pueued, (0, serviceUnits_1.renderSystemdPueuedUnit)(paths));
|
|
240
|
-
writeDefinition(files.link, (0, serviceUnits_1.renderSystemdLinkUnit)(paths, names));
|
|
241
|
-
const reload = await deps.runner('systemctl', ['--user', 'daemon-reload'], { timeoutMs: commandTimeoutMs });
|
|
190
|
+
(0, serviceCommon_1.writeDefinition)(files.pueued, (0, serviceUnits_1.renderSystemdPueuedUnit)(paths));
|
|
191
|
+
(0, serviceCommon_1.writeDefinition)(files.link, (0, serviceUnits_1.renderSystemdLinkUnit)(paths, names));
|
|
192
|
+
const reload = await deps.runner('systemctl', ['--user', 'daemon-reload'], { timeoutMs: serviceCommon_1.commandTimeoutMs });
|
|
242
193
|
if (!reload.ok) {
|
|
243
194
|
return rollBack('systemctl --user cannot reach a user session. Log in with ssh or the console (not `su` / `sudo -u`), or `export XDG_RUNTIME_DIR=/run/user/$(id -u)`, then run this again.');
|
|
244
195
|
}
|
|
245
|
-
const enable = await deps.runner('systemctl', ['--user', 'enable', '--now', names.systemdPueued, names.systemdLink], { timeoutMs: commandTimeoutMs });
|
|
196
|
+
const enable = await deps.runner('systemctl', ['--user', 'enable', '--now', names.systemdPueued, names.systemdLink], { timeoutMs: serviceCommon_1.commandTimeoutMs });
|
|
246
197
|
if (!enable.ok)
|
|
247
198
|
return rollBack(`systemctl --user enable failed: ${enable.stderr.trim().split('\n').slice(-1)[0]}`);
|
|
248
199
|
const lines = [`Installed two user services: ${names.systemdLink} (the link) and ${names.systemdPueued} (the queue).`];
|
|
249
|
-
const lingering = await deps.runner('loginctl', ['show-user', deps.accountName, '-p', 'Linger'], { timeoutMs: commandTimeoutMs });
|
|
200
|
+
const lingering = await deps.runner('loginctl', ['show-user', deps.accountName, '-p', 'Linger'], { timeoutMs: serviceCommon_1.commandTimeoutMs });
|
|
250
201
|
if ((0, serviceUnits_1.parseLingerState)(lingering.stdout) === 'yes') {
|
|
251
202
|
lines.push('Lingering is on: they run without a login and start at boot.');
|
|
252
203
|
}
|
|
253
204
|
else {
|
|
254
|
-
const enableLinger = await deps.runner('loginctl', ['enable-linger'], { timeoutMs: commandTimeoutMs });
|
|
205
|
+
const enableLinger = await deps.runner('loginctl', ['enable-linger'], { timeoutMs: serviceCommon_1.commandTimeoutMs });
|
|
255
206
|
lines.push(enableLinger.ok ? 'Lingering switched on: they run without a login and start at boot.' : (0, serviceUnits_1.describeLingerRemedy)(deps.accountName));
|
|
256
207
|
}
|
|
257
208
|
return { ok: true, lines };
|
|
@@ -261,153 +212,133 @@ async function uninstallSystemd(paths, deps) {
|
|
|
261
212
|
const files = getSystemdFiles(paths.homeDir, names);
|
|
262
213
|
const reason = await stopSystemdUnits(names, deps);
|
|
263
214
|
if (reason !== null) {
|
|
264
|
-
return fail(`The services were not removed: ${reason}.`, 'Their definitions and the record of them stay, so this can be run again; to stop them by hand: ' + `systemctl --user stop ${names.systemdLink} ${names.systemdPueued}`);
|
|
215
|
+
return (0, serviceCommon_1.fail)(`The services were not removed: ${reason}.`, 'Their definitions and the record of them stay, so this can be run again; to stop them by hand: ' + `systemctl --user stop ${names.systemdLink} ${names.systemdPueued}`);
|
|
265
216
|
}
|
|
266
217
|
for (const file of [files.link, files.pueued])
|
|
267
218
|
fs.rmSync(file, { force: true });
|
|
268
|
-
await deps.runner('systemctl', ['--user', 'daemon-reload'], { timeoutMs: commandTimeoutMs });
|
|
219
|
+
await deps.runner('systemctl', ['--user', 'daemon-reload'], { timeoutMs: serviceCommon_1.commandTimeoutMs });
|
|
269
220
|
fs.rmSync(paths.serviceMarker, { force: true });
|
|
270
221
|
return { ok: true, lines: ['Removed the two user services (stopped, and checked to be stopped). Lingering is left as it was.'] };
|
|
271
222
|
}
|
|
272
|
-
const
|
|
273
|
-
|
|
274
|
-
/**
|
|
275
|
-
* @description Boot a job out and wait (bounded: 3 s) until launchd no longer has it loaded; `false` when it still is. A `bootstrap` right
|
|
276
|
-
* after a `bootout` often fails with error 5 while launchd is still tearing the old job down, and a check right after it can find the job
|
|
277
|
-
* «still loaded»: `print` succeeds only for a job that is still loaded.
|
|
278
|
-
*/
|
|
279
|
-
async function bootOutAndWaitUntilGone(label, domain, deps) {
|
|
280
|
-
await deps.runner('launchctl', ['bootout', `${domain}/${label}`], { timeoutMs: commandTimeoutMs });
|
|
281
|
-
for (let attempt = 0; attempt < unloadPollAttempts; attempt += 1) {
|
|
282
|
-
const loaded = await deps.runner('launchctl', ['print', `${domain}/${label}`], { timeoutMs: commandTimeoutMs });
|
|
283
|
-
if (!loaded.ok)
|
|
284
|
-
return true;
|
|
285
|
-
await new Promise((resolve) => { setTimeout(resolve, unloadPollMs); });
|
|
286
|
-
}
|
|
287
|
-
return false;
|
|
288
|
-
}
|
|
289
|
-
async function stopLaunchdJobs(labels, domain, deps) {
|
|
290
|
-
for (const label of labels) {
|
|
291
|
-
if (!(await bootOutAndWaitUntilGone(label, domain, deps)))
|
|
292
|
-
return `${label} is still loaded in ${domain}`;
|
|
293
|
-
}
|
|
294
|
-
return null;
|
|
295
|
-
}
|
|
296
|
-
/** @description Load the jobs in order; stops at the first that fails. `touchedFiles` are the definitions it had rewritten (and booted out the old job of) by then, the failing one included. */
|
|
297
|
-
async function loadLaunchdJobs(entries, domain, deps, owner, isSystem) {
|
|
298
|
-
const touchedFiles = [];
|
|
299
|
-
for (const { job, file } of entries) {
|
|
300
|
-
fs.mkdirSync(path.dirname(job.logPath), { recursive: true, mode: logsDirMode });
|
|
301
|
-
if (owner !== null)
|
|
302
|
-
deps.chown(path.dirname(job.logPath), owner.uid, owner.gid);
|
|
303
|
-
touchedFiles.push(file);
|
|
304
|
-
writeDefinition(file, (0, serviceUnits_1.renderLaunchdPlist)(job));
|
|
305
|
-
if (isSystem)
|
|
306
|
-
deps.chown(file, rootUid, wheelGid);
|
|
307
|
-
await bootOutAndWaitUntilGone(job.label, domain, deps);
|
|
308
|
-
const boot = await deps.runner('launchctl', ['bootstrap', domain, file], { timeoutMs: commandTimeoutMs });
|
|
309
|
-
if (!boot.ok)
|
|
310
|
-
return { ...fail(`launchctl bootstrap ${domain} failed for ${job.label}: ${boot.stderr.trim().split('\n').slice(-1)[0]}`), touchedFiles };
|
|
311
|
-
}
|
|
312
|
-
return { ok: true, lines: [], touchedFiles };
|
|
313
|
-
}
|
|
314
|
-
async function installLaunchd(request, deps, paths, owner) {
|
|
223
|
+
const adminLineText = 'paste a fresh admin line from /runners (or `charness runners pair`) in an admin account\'s terminal on this machine';
|
|
224
|
+
async function installLaunchd(deps, paths) {
|
|
315
225
|
const names = (0, serviceUnits_1.getServiceNames)(paths.root);
|
|
316
|
-
const files = getLaunchdFiles(
|
|
317
|
-
const
|
|
318
|
-
if (fs.existsSync(
|
|
319
|
-
return fail(
|
|
226
|
+
const files = (0, serviceCommon_1.getLaunchdFiles)(false, paths.homeDir, names, deps.launchDaemonsDir);
|
|
227
|
+
const daemonFiles = (0, serviceCommon_1.getLaunchdFiles)(true, paths.homeDir, names, deps.launchDaemonsDir);
|
|
228
|
+
if (fs.existsSync(daemonFiles.link) || fs.existsSync(daemonFiles.pueued)) {
|
|
229
|
+
return (0, serviceCommon_1.fail)('A system service (LaunchDaemon) is installed for this runner: remove it first with `charness-runner service uninstall` (it prints the admin commands).');
|
|
320
230
|
}
|
|
321
|
-
const
|
|
322
|
-
const { refusal, hadService } = await prepareManagedStart(paths, deps, kind, owner);
|
|
231
|
+
const { refusal, hadService } = await prepareManagedStart(paths, deps, 'user-service');
|
|
323
232
|
if (refusal !== null)
|
|
324
233
|
return refusal;
|
|
325
|
-
const
|
|
326
|
-
const
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
234
|
+
const jobs = (0, serviceUnits_1.planLaunchdJobs)(paths, names, deps.accountName, path.dirname(deps.nodePath), null);
|
|
235
|
+
const result = await (0, serviceCommon_1.installLaunchdJobs)({
|
|
236
|
+
runner: deps.runner,
|
|
237
|
+
domain: `gui/${deps.uid}`,
|
|
238
|
+
files,
|
|
239
|
+
names,
|
|
240
|
+
jobs,
|
|
241
|
+
hadService,
|
|
242
|
+
isLogDirMade: true,
|
|
243
|
+
forgetFirstInstall: () => { fs.rmSync(paths.serviceMarker, { force: true }); },
|
|
244
|
+
retryText: 'run `charness-runner service install` again.',
|
|
245
|
+
render: serviceUnits_1.renderLaunchdPlist,
|
|
246
|
+
});
|
|
247
|
+
if (!result.ok)
|
|
248
|
+
return result;
|
|
249
|
+
return { ok: true, lines: [`Installed two LaunchAgents (${names.launchdLink}, ${names.launchdPueued}): they run while ${deps.accountName} is logged in. For always-on (also logged out), an admin can ${adminLineText}.`] };
|
|
250
|
+
}
|
|
251
|
+
/** The admin's commands that remove a runner's always-on service: plain `launchctl` and `rm`, no charness code runs as root. */
|
|
252
|
+
function formatSystemServiceRemoval(paths, daemonsDir) {
|
|
253
|
+
const names = (0, serviceUnits_1.getServiceNames)(paths.root);
|
|
254
|
+
const files = (0, serviceCommon_1.getLaunchdFiles)(true, paths.homeDir, names, daemonsDir);
|
|
255
|
+
return [
|
|
256
|
+
`sudo launchctl bootout system/${names.launchdLink}`,
|
|
257
|
+
`sudo launchctl bootout system/${names.launchdPueued}`,
|
|
258
|
+
`sudo rm ${files.link} ${files.pueued}`,
|
|
259
|
+
];
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* The runner is an always-on (system) service: only an admin can stop it, and root must not run this program to do it (see the file's
|
|
263
|
+
* head). Once the admin has run the plain commands, running this again FORGETS the service record — and only then, when both daemons are
|
|
264
|
+
* gone from launchd and from `/Library/LaunchDaemons`.
|
|
265
|
+
*/
|
|
266
|
+
async function removeSystemService(paths, deps) {
|
|
267
|
+
const names = (0, serviceUnits_1.getServiceNames)(paths.root);
|
|
268
|
+
const files = (0, serviceCommon_1.getLaunchdFiles)(true, paths.homeDir, names, deps.launchDaemonsDir);
|
|
269
|
+
const isLoaded = async (label) => (await deps.runner('launchctl', ['print', `system/${label}`], { timeoutMs: serviceCommon_1.commandTimeoutMs })).ok;
|
|
270
|
+
const isPresent = fs.existsSync(files.link) || fs.existsSync(files.pueued) || (await isLoaded(names.launchdLink)) || (await isLoaded(names.launchdPueued));
|
|
271
|
+
if (isPresent) {
|
|
272
|
+
return (0, serviceCommon_1.fail)('This runner runs as a system service (always on), which only an admin can stop. As an admin, run:', ...formatSystemServiceRemoval(paths, deps.launchDaemonsDir).map((line) => ` ${line}`), 'then run `charness-runner service uninstall` again here, as this account: it forgets the service once they are gone.');
|
|
357
273
|
}
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
lines: request.isSystem
|
|
361
|
-
? [`Installed two LaunchDaemons (${names.launchdLink}, ${names.launchdPueued}) that run as ${accountName}: always on, also logged out.`]
|
|
362
|
-
: [`Installed two LaunchAgents (${names.launchdLink}, ${names.launchdPueued}): they run while ${accountName} is logged in. For always-on (also logged out), an admin runs once: sudo ${paths.launcher} service install --system --user ${accountName}`],
|
|
363
|
-
};
|
|
274
|
+
fs.rmSync(paths.serviceMarker, { force: true });
|
|
275
|
+
return { ok: true, lines: ['The always-on service is gone (stopped and removed by an admin): its record here is forgotten.'] };
|
|
364
276
|
}
|
|
365
|
-
async function uninstallLaunchd(
|
|
277
|
+
async function uninstallLaunchd(deps, paths) {
|
|
366
278
|
const names = (0, serviceUnits_1.getServiceNames)(paths.root);
|
|
367
|
-
const files = getLaunchdFiles(
|
|
368
|
-
const domain =
|
|
369
|
-
const reason = await stopLaunchdJobs([names.launchdLink, names.launchdPueued], domain, deps);
|
|
279
|
+
const files = (0, serviceCommon_1.getLaunchdFiles)(false, paths.homeDir, names, deps.launchDaemonsDir);
|
|
280
|
+
const domain = `gui/${deps.uid}`;
|
|
281
|
+
const reason = await (0, serviceCommon_1.stopLaunchdJobs)([names.launchdLink, names.launchdPueued], domain, deps.runner);
|
|
370
282
|
if (reason !== null) {
|
|
371
|
-
return fail(`The services were not removed: ${reason}.`, 'Their definitions and the record of them stay, so this can be run again.');
|
|
283
|
+
return (0, serviceCommon_1.fail)(`The services were not removed: ${reason}.`, 'Their definitions and the record of them stay, so this can be run again.');
|
|
372
284
|
}
|
|
373
285
|
for (const file of [files.link, files.pueued])
|
|
374
286
|
fs.rmSync(file, { force: true });
|
|
375
287
|
fs.rmSync(paths.serviceMarker, { force: true });
|
|
376
|
-
return { ok: true, lines: [
|
|
377
|
-
}
|
|
378
|
-
/** The paths of the account the request is about: this one, or — with `--system --user` — the named one. */
|
|
379
|
-
async function resolveTarget(request, action, deps) {
|
|
380
|
-
if (!request.isSystem)
|
|
381
|
-
return { paths: (0, runnerHome_1.getRunnerHomePaths)(deps.homeDir), owner: null };
|
|
382
|
-
if (deps.platform !== 'darwin')
|
|
383
|
-
return fail('--system is for macOS (a LaunchDaemon). On Linux `service install` makes a user service that lingers: no admin, it runs without a login.');
|
|
384
|
-
if (deps.uid !== rootUid)
|
|
385
|
-
return fail(`A system service is installed by an admin, once: sudo ${(0, runnerHome_1.getRunnerHomePaths)(deps.homeDir).launcher} service ${action} --system --user ${request.userName ?? '<account>'}`);
|
|
386
|
-
const owner = request.userName === null ? null : await deps.resolveAccount(request.userName);
|
|
387
|
-
if (owner === null)
|
|
388
|
-
return fail(`There is no account named «${request.userName ?? ''}».`);
|
|
389
|
-
if (owner.uid === rootUid)
|
|
390
|
-
return fail('The service must run as a standard account, not as root.');
|
|
391
|
-
return { paths: (0, runnerHome_1.getRunnerHomePaths)(owner.homeDir), owner };
|
|
288
|
+
return { ok: true, lines: ['Removed the two LaunchAgents (stopped, and checked to be stopped).'] };
|
|
392
289
|
}
|
|
290
|
+
const systemRefusal = `An always-on service is installed by an admin, through a pairing line: ${adminLineText}. It pairs a machine that is not paired yet, and for one that is, only installs the service. This command does not do it, because it would run this account's own files as root.`;
|
|
393
291
|
/** @description `service install` for `request`. */
|
|
394
292
|
async function installService(request, deps) {
|
|
395
293
|
if (deps.platform !== 'linux' && deps.platform !== 'darwin')
|
|
396
|
-
return fail(`Services are supported on Linux (systemd) and macOS (launchd), not on ${deps.platform}.`);
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
if ((0, runnerConfig_1.readRunnerConfig)(
|
|
401
|
-
return fail('This account is not paired yet: run the line from /runners on this machine first, then install the service.');
|
|
402
|
-
|
|
294
|
+
return (0, serviceCommon_1.fail)(`Services are supported on Linux (systemd) and macOS (launchd), not on ${deps.platform}.`);
|
|
295
|
+
if (request.isSystem)
|
|
296
|
+
return (0, serviceCommon_1.fail)(systemRefusal);
|
|
297
|
+
const paths = (0, runnerHome_1.getRunnerHomePaths)(deps.homeDir);
|
|
298
|
+
if ((0, runnerConfig_1.readRunnerConfig)(paths) === null)
|
|
299
|
+
return (0, serviceCommon_1.fail)('This account is not paired yet: run the line from /runners on this machine first, then install the service.');
|
|
300
|
+
if (readServiceKind(paths) === 'system-service')
|
|
301
|
+
return (0, serviceCommon_1.fail)('This runner runs as a system service already; `charness-runner service uninstall` shows how an admin removes it.');
|
|
302
|
+
return deps.platform === 'linux' ? installSystemd(paths, deps) : installLaunchd(deps, paths);
|
|
403
303
|
}
|
|
404
304
|
/** @description `service uninstall` for `request`. */
|
|
405
305
|
async function uninstallService(request, deps) {
|
|
406
306
|
if (deps.platform !== 'linux' && deps.platform !== 'darwin')
|
|
407
|
-
return fail(`Services are supported on Linux (systemd) and macOS (launchd), not on ${deps.platform}.`);
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
307
|
+
return (0, serviceCommon_1.fail)(`Services are supported on Linux (systemd) and macOS (launchd), not on ${deps.platform}.`);
|
|
308
|
+
if (request.isSystem)
|
|
309
|
+
return (0, serviceCommon_1.fail)('An always-on service is removed by an admin with plain `launchctl` commands (no charness program runs as root): `charness-runner service uninstall` as the account prints them.');
|
|
310
|
+
const paths = (0, runnerHome_1.getRunnerHomePaths)(deps.homeDir);
|
|
311
|
+
if (readServiceKind(paths) === 'system-service')
|
|
312
|
+
return removeSystemService(paths, deps);
|
|
313
|
+
return deps.platform === 'linux' ? uninstallSystemd(paths, deps) : uninstallLaunchd(deps, paths);
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* @description `service system-step prepare|abandon` — the ACCOUNT's side of the always-on install, run by the admin step
|
|
317
|
+
* (`adminService.ts`) through `sudo -u <account>`, never by hand. `prepare` does what must be true before the daemons start (the same as a
|
|
318
|
+
* user service's install, `prepareManagedStart`, and the account must be paired and have no LaunchAgents) and answers in one JSON line;
|
|
319
|
+
* `abandon` forgets the record `prepare` wrote when the daemons could not be loaded and nothing was left installed.
|
|
320
|
+
*/
|
|
321
|
+
async function runSystemStep(step, deps) {
|
|
322
|
+
if (deps.platform !== 'darwin')
|
|
323
|
+
return { ok: false, lines: ['The always-on service is for macOS (a LaunchDaemon); a Linux account installs its own user service.'] };
|
|
324
|
+
if (deps.uid === 0)
|
|
325
|
+
return { ok: false, lines: ['This step is the account\'s own: it must not run as root.'] };
|
|
326
|
+
const paths = (0, runnerHome_1.getRunnerHomePaths)(deps.homeDir);
|
|
327
|
+
if (step === 'abandon') {
|
|
328
|
+
if (readServiceKind(paths) === 'system-service')
|
|
329
|
+
fs.rmSync(paths.serviceMarker, { force: true });
|
|
330
|
+
return { ok: true, hadService: false };
|
|
331
|
+
}
|
|
332
|
+
if (step !== 'prepare')
|
|
333
|
+
return { ok: false, lines: [`unknown step: ${step}`] };
|
|
334
|
+
if ((0, runnerConfig_1.readRunnerConfig)(paths) === null)
|
|
335
|
+
return { ok: false, lines: ['This account is not paired yet: run the line from /runners on this machine first, then install the service.'] };
|
|
336
|
+
const names = (0, serviceUnits_1.getServiceNames)(paths.root);
|
|
337
|
+
const agentFiles = (0, serviceCommon_1.getLaunchdFiles)(false, paths.homeDir, names, deps.launchDaemonsDir);
|
|
338
|
+
if (fs.existsSync(agentFiles.link) || fs.existsSync(agentFiles.pueued)) {
|
|
339
|
+
return { ok: false, lines: ['A user service (LaunchAgent) is installed for this runner: remove it first with `charness-runner service uninstall`.'] };
|
|
340
|
+
}
|
|
341
|
+
const { refusal, hadService } = await prepareManagedStart(paths, deps, 'system-service');
|
|
342
|
+
return refusal === null ? { ok: true, hadService } : { ok: false, lines: refusal.lines };
|
|
412
343
|
}
|
|
413
344
|
//# sourceMappingURL=serviceManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceManager.js","sourceRoot":"","sources":["../../src/runnerUtility/serviceManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"serviceManager.js","sourceRoot":"","sources":["../../src/runnerUtility/serviceManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ export declare function renderSystemdPueuedUnit(paths: RunnerHomePaths): string;
|
|
|
12
12
|
export interface LaunchdJobSpec {
|
|
13
13
|
label: string;
|
|
14
14
|
programArguments: readonly string[];
|
|
15
|
-
/** Set for a LaunchDaemon: the account the job runs as. */
|
|
15
|
+
/** Set for a LaunchDaemon: the account the job runs as (and the job then logs through its own shell, see {@link getLaunchdProgramArguments}). */
|
|
16
16
|
userName: string | null;
|
|
17
17
|
homeDir: string;
|
|
18
18
|
accountName: string;
|
|
@@ -20,6 +20,8 @@ export interface LaunchdJobSpec {
|
|
|
20
20
|
logPath: string;
|
|
21
21
|
niceness: number | null;
|
|
22
22
|
}
|
|
23
|
+
/** The program and arguments launchd starts: the job's own for a LaunchAgent, the account's shell around them for a LaunchDaemon. */
|
|
24
|
+
export declare function getLaunchdProgramArguments(spec: LaunchdJobSpec): readonly string[];
|
|
23
25
|
/** @description The property list of one launchd job. */
|
|
24
26
|
export declare function renderLaunchdPlist(spec: LaunchdJobSpec): string;
|
|
25
27
|
export interface LaunchdJobs {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceUnits.d.ts","sourceRoot":"","sources":["../../src/runnerUtility/serviceUnits.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAqBpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAS/D;AAOD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,CAmBzF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAiBtE;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,
|
|
1
|
+
{"version":3,"file":"serviceUnits.d.ts","sourceRoot":"","sources":["../../src/runnerUtility/serviceUnits.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAqBpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAS/D;AAOD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,CAmBzF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAiBtE;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,iJAAiJ;IACjJ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAqBD,qIAAqI;AACrI,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,MAAM,EAAE,CAElF;AAED,yDAAyD;AACzD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAkC/D;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,CAMvJ;AAED,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC;AAEnD,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAG5D;AAED,0IAA0I;AAC1I,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE"}
|