@fnndsc/porter 0.4.1 → 0.4.2

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/dist/porter.js CHANGED
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Reads its configuration from the environment, stands a process host on
6
6
  * this machine, and listens. `porter --status` lists the sessions a running
7
- * porter's state directory holds.
7
+ * porter's state directory holds; `porter --end <who>` ends one of them.
8
8
  *
9
9
  * @module
10
10
  */
@@ -39,11 +39,57 @@ async function status_print(stateDir) {
39
39
  console.log(`${berthKey_compute(sighting.identity)} ${state.padEnd(9)} ${sighting.berth.url.padEnd(24)} ${sighting.identity}${pid}`);
40
40
  }
41
41
  }
42
+ /**
43
+ * Ends one session: the daemon is sent SIGTERM, its state directory stays,
44
+ * and the operator's next login boots a fresh one on the kernel this
45
+ * porter now carries. An adopted session keeps the kernel it was born
46
+ * with across every porter upgrade — a session from last week answers a
47
+ * surface from today with last week's answers — and until now the only
48
+ * way to move it on was to find its pid by hand.
49
+ *
50
+ * @param stateDir - Where the state directory is.
51
+ * @param who - The session's berth key, its identity (`user@cube`), or the
52
+ * user alone when one session carries that user.
53
+ */
54
+ async function session_end(stateDir, who) {
55
+ const host = new ProcessHost({ stateDir, chellEntry: process.env['PORTER_CHELL'] ?? chellEntry_locate() });
56
+ const sightings = await host.sessions_adopt();
57
+ const matches = sightings.filter((sighting) => sighting.identity === who || berthKey_compute(sighting.identity) === who || sighting.identity.startsWith(`${who}@`));
58
+ if (matches.length === 0) {
59
+ console.error(`[!] no session for ${who}; 'porter --status' lists them`);
60
+ process.exit(1);
61
+ }
62
+ if (matches.length > 1) {
63
+ console.error(`[!] ${who} names ${matches.length} sessions; use the berth key:`);
64
+ for (const sighting of matches)
65
+ console.error(` ${berthKey_compute(sighting.identity)} ${sighting.identity}`);
66
+ process.exit(1);
67
+ }
68
+ const target = matches[0];
69
+ if (!target.alive) {
70
+ console.log(`${berthKey_compute(target.identity)} gone already ${target.identity}`);
71
+ return;
72
+ }
73
+ const ended = await host.evict(target.identity);
74
+ console.log(`${berthKey_compute(target.identity)} ${ended ? 'ended' : 'could not be ended'} ${target.identity}${target.berth.pid !== undefined ? ` pid ${target.berth.pid}` : ''}`);
75
+ if (ended)
76
+ console.log(' state kept; the next login boots a fresh session on this porter\'s kernel');
77
+ }
42
78
  async function porter_start() {
43
79
  if (process.argv.includes('--status')) {
44
80
  await status_print(porterStateDir_resolve(process.env));
45
81
  return;
46
82
  }
83
+ const endAt = process.argv.indexOf('--end');
84
+ if (endAt >= 0) {
85
+ const who = process.argv[endAt + 1];
86
+ if (who === undefined || who.startsWith('--')) {
87
+ console.error('[!] porter --end <berth key | user | user@cube>');
88
+ process.exit(1);
89
+ }
90
+ await session_end(porterStateDir_resolve(process.env), who);
91
+ return;
92
+ }
47
93
  let config;
48
94
  try {
49
95
  config = porterConfig_resolve(process.env);
@@ -1 +1 @@
1
- {"version":3,"file":"porter.js","sourceRoot":"","sources":["../src/porter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"porter.js","sourceRoot":"","sources":["../src/porter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fnndsc/porter",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "PORTER: the mise display manager — logs an operator in, finds or starts their calypso, and shows them to argus",
5
5
  "type": "module",
6
6
  "main": "dist/porter.js",
@@ -18,7 +18,7 @@
18
18
  "@fastify/cookie": "^11.1.2",
19
19
  "@fastify/formbody": "^9.0.0",
20
20
  "@fastify/reply-from": "^12.6.5",
21
- "@fnndsc/calypso": "^0.16.8",
21
+ "@fnndsc/calypso": "^0.16.9",
22
22
  "@fnndsc/chell": "^5.9.5",
23
23
  "@fnndsc/menu": "^0.13.0",
24
24
  "fastify": "^5.12.5",