Skip to content

Commit 24d9b1a

Browse files
fix compat handling + triggers
1 parent b515928 commit 24d9b1a

2 files changed

Lines changed: 19 additions & 8 deletions

File tree

src/kernel.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ export class Kernel {
8989
compat = program.compat;
9090
}
9191

92-
if (semver_compare(compat, CURRENT_API_COMPAT) > 0) {
92+
if (semver_compare(compat, CURRENT_API_COMPAT) < 0) {
9393
throw new Error(`Program ${program.name} is not compatible with OllieOS 2. (Add compat: "2.0.0" to the program object to mark it as ported.)`);
9494
}
9595

src/programs/pkg/index.ts

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
import {add_subcommand} from "./add";
22
import {remove_subcommand} from "./remove";
33

4-
import {ANSI, WrappedTerminal} from "../../term_ctl";
4+
import {ANSI, type WrappedTerminal} from "../../term_ctl";
55
import type {Program} from "../../types";
66
import type {AbstractFileSystem} from "../../filesystem";
77
import {list_subcommand} from "./list";
88
import {info_subcommand} from "./info";
99
import {browse_subcommand} from "./browse";
1010
import {helper_completion_options} from "../core/ash/tab_completion";
11-
import {Kernel} from "../../kernel";
12-
import {AbstractShell} from "../../abstract_shell";
11+
12+
import type {Kernel, SpawnResult} from "../../kernel";
13+
import type {AbstractShell} from "../../abstract_shell";
1314

1415

1516
const REPO_URL = "https://ollieg.codes/pkg_repo";
@@ -462,9 +463,11 @@ export const triggers = {
462463
const data_str = JSON.stringify(data);
463464

464465
console.log(`Processing install trigger ${trigger_name} with exec ${trigger.install_exec} and args [${pkg_name}, ${pkg_version}, ${data_str}]`);
465-
const spawn_result = kernel.spawn(trigger.install_exec, [pkg_name, pkg_version, data_str], shell);
466+
467+
let spawn_result: SpawnResult;
466468

467469
try {
470+
spawn_result = kernel.spawn(trigger.install_exec, [pkg_name, pkg_version, data_str], shell);
468471
const exit_code = await spawn_result.completion;
469472
if (exit_code !== 0) {
470473
term.writeln(`${ANSI.PREFABS.error}Warning: trigger ${trigger_name} exited with code ${exit_code}.${ANSI.STYLE.reset_all}`);
@@ -473,7 +476,10 @@ export const triggers = {
473476
spawn_result.process.kill(exit_code);
474477
} catch (e) {
475478
term.writeln(`${ANSI.PREFABS.error}Warning: trigger ${trigger_name} failed: ${e}.${ANSI.STYLE.reset_all}`);
476-
spawn_result.process.kill(-1);
479+
480+
if (spawn_result) {
481+
spawn_result.process.kill(-1);
482+
}
477483
}
478484

479485
return true;
@@ -496,9 +502,11 @@ export const triggers = {
496502
const data_str = JSON.stringify(data);
497503

498504
console.log(`Processing uninstall trigger ${trigger_name} with exec ${trigger.uninstall_exec} and args [${pkg_name}, ${pkg_version}, ${data_str}]`);
499-
const spawn_result = kernel.spawn(trigger.uninstall_exec, [pkg_name, pkg_version, data_str], shell);
505+
506+
let spawn_result: SpawnResult;
500507

501508
try {
509+
spawn_result = kernel.spawn(trigger.uninstall_exec, [pkg_name, pkg_version, data_str], shell);
502510
const exit_code = await spawn_result.completion;
503511
if (exit_code !== 0) {
504512
term.writeln(`${ANSI.PREFABS.error}Warning: trigger ${trigger_name} exited with code ${exit_code}.${ANSI.STYLE.reset_all}`);
@@ -507,7 +515,10 @@ export const triggers = {
507515
spawn_result.process.kill(exit_code)
508516
} catch (e) {
509517
term.writeln(`${ANSI.PREFABS.error}Warning: trigger ${trigger_name} failed: ${e}.${ANSI.STYLE.reset_all}`);
510-
spawn_result.process.kill(-1);
518+
519+
if (spawn_result) {
520+
spawn_result.process.kill(-1);
521+
}
511522
}
512523

513524
return true;

0 commit comments

Comments
 (0)