@codetreker/daynight 0.2.3 → 0.2.4
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/cli.d.ts +2 -0
- package/dist/cli.js +44 -6
- package/dist/cli.js.map +1 -1
- package/dist/update.d.ts +32 -0
- package/dist/update.js +233 -0
- package/dist/update.js.map +1 -0
- package/package.json +4 -3
package/dist/cli.d.ts
CHANGED
|
@@ -2,8 +2,10 @@ export { formatError } from "./diagnostics.js";
|
|
|
2
2
|
import type { Configuration } from "./config.js";
|
|
3
3
|
import type { RuntimePaths } from "./paths.js";
|
|
4
4
|
import type { AddRepositoryInput, AddRepositoryOptions, AddRepositoryResult } from "./repositories.js";
|
|
5
|
+
import type { UpdateResult } from "./update.js";
|
|
5
6
|
export type CliDependencies = {
|
|
6
7
|
version: string;
|
|
8
|
+
update: () => Promise<UpdateResult>;
|
|
7
9
|
homeDirectory: () => string;
|
|
8
10
|
workingDirectory: () => string;
|
|
9
11
|
addRepository: (input: AddRepositoryInput, paths: RuntimePaths, options: AddRepositoryOptions) => Promise<AddRepositoryResult>;
|
package/dist/cli.js
CHANGED
|
@@ -4,15 +4,16 @@ export { formatError } from "./diagnostics.js";
|
|
|
4
4
|
import { loadConfiguration } from "./config.js";
|
|
5
5
|
import { resolveRuntimePaths } from "./paths.js";
|
|
6
6
|
import { addRepository } from "./repositories.js";
|
|
7
|
-
import {
|
|
8
|
-
import { formatCoordinatorEvent, runForegroundReview } from "./runtime.js";
|
|
7
|
+
import { updateSelf } from "./update.js";
|
|
9
8
|
const help = `Usage: daynight --daemon-review
|
|
10
9
|
daynight add-repo <remote> [--path <path>]
|
|
11
10
|
daynight review list|ls
|
|
11
|
+
daynight update
|
|
12
12
|
|
|
13
13
|
Commands:
|
|
14
14
|
add-repo Add a repository to configuration for the next review startup
|
|
15
15
|
review list|ls List tracked ongoing PRs and recorded review status
|
|
16
|
+
update Update this npm global installation to the latest version
|
|
16
17
|
|
|
17
18
|
Options:
|
|
18
19
|
--daemon-review Run foreground PR review until interrupted
|
|
@@ -43,12 +44,29 @@ Includes Draft PRs, saved review status, attempts, retry deadlines and errors.
|
|
|
43
44
|
Last observed identifies the latest successful repository observation.
|
|
44
45
|
Running is a recorded review state and does not establish process liveness.
|
|
45
46
|
|
|
47
|
+
Options:
|
|
48
|
+
-h, --help Show this help
|
|
49
|
+
`;
|
|
50
|
+
const updateHelp = `Usage: daynight update
|
|
51
|
+
|
|
52
|
+
Update the current npm global installation to the registry's latest version.
|
|
53
|
+
An already-current or newer installation is kept. npm configuration and
|
|
54
|
+
authentication select the registry; Daynight configuration and review state are not read.
|
|
55
|
+
Restart any running reviewer after updating to use the new version.
|
|
56
|
+
|
|
46
57
|
Options:
|
|
47
58
|
-h, --help Show this help
|
|
48
59
|
`;
|
|
49
60
|
const parseCommand = (args) => {
|
|
50
61
|
if (args.length === 0)
|
|
51
62
|
throw new Error("Choose a command.");
|
|
63
|
+
if (args[0] === "update") {
|
|
64
|
+
if (args.length === 1)
|
|
65
|
+
return { kind: "update" };
|
|
66
|
+
if (args.length === 2 && (args[1] === "--help" || args[1] === "-h"))
|
|
67
|
+
return { kind: "help", text: updateHelp };
|
|
68
|
+
throw new Error("Expected daynight update. Run daynight update --help for usage.");
|
|
69
|
+
}
|
|
52
70
|
if (args[0] === "review") {
|
|
53
71
|
const remaining = args.slice(1);
|
|
54
72
|
const isHelp = (value) => value === "--help" || value === "-h";
|
|
@@ -125,6 +143,19 @@ export const runCli = async (args, dependencies) => {
|
|
|
125
143
|
return 0;
|
|
126
144
|
}
|
|
127
145
|
try {
|
|
146
|
+
if (command.kind === "update") {
|
|
147
|
+
const result = await dependencies.update();
|
|
148
|
+
if (result.status === "updated") {
|
|
149
|
+
stdout(`Updated daynight from ${result.previousVersion} to ${result.targetVersion}.\nRestart any running reviewer to use the new version.\n`);
|
|
150
|
+
}
|
|
151
|
+
else if (result.status === "current") {
|
|
152
|
+
stdout(`daynight ${result.previousVersion} is already up to date.\n`);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
stdout(`daynight ${result.previousVersion} is newer than latest ${result.targetVersion}.\n`);
|
|
156
|
+
}
|
|
157
|
+
return 0;
|
|
158
|
+
}
|
|
128
159
|
const homeDirectory = dependencies.homeDirectory();
|
|
129
160
|
const runtimePaths = resolveRuntimePaths(homeDirectory);
|
|
130
161
|
if (command.kind === "review-list") {
|
|
@@ -150,14 +181,21 @@ export const runCli = async (args, dependencies) => {
|
|
|
150
181
|
};
|
|
151
182
|
export const defaultCliDependencies = (version) => ({
|
|
152
183
|
version,
|
|
184
|
+
update: updateSelf,
|
|
153
185
|
homeDirectory: homedir,
|
|
154
186
|
workingDirectory: process.cwd,
|
|
155
187
|
addRepository,
|
|
156
|
-
listReviews
|
|
188
|
+
listReviews: async (paths) => {
|
|
189
|
+
const { listReviews } = await import("./review-list.js");
|
|
190
|
+
return listReviews(paths);
|
|
191
|
+
},
|
|
157
192
|
loadConfiguration,
|
|
158
|
-
runReview: (configuration, paths) =>
|
|
159
|
-
|
|
160
|
-
|
|
193
|
+
runReview: async (configuration, paths) => {
|
|
194
|
+
const { formatCoordinatorEvent, runForegroundReview } = await import("./runtime.js");
|
|
195
|
+
await runForegroundReview(configuration, paths, {
|
|
196
|
+
log: (event) => { process.stderr.write(`${formatCoordinatorEvent(event)}\n`); },
|
|
197
|
+
});
|
|
198
|
+
},
|
|
161
199
|
stdout: (text) => { process.stdout.write(text); },
|
|
162
200
|
stderr: (text) => { process.stderr.write(text); },
|
|
163
201
|
});
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/update.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type UpdateResult = {
|
|
2
|
+
status: "current" | "ahead" | "updated";
|
|
3
|
+
previousVersion: string;
|
|
4
|
+
targetVersion: string;
|
|
5
|
+
};
|
|
6
|
+
export type UpdateCommand = {
|
|
7
|
+
executable: string;
|
|
8
|
+
arguments: string[];
|
|
9
|
+
cwd: string;
|
|
10
|
+
environment: NodeJS.ProcessEnv;
|
|
11
|
+
timeoutMs: number;
|
|
12
|
+
output: "capture" | "inherit";
|
|
13
|
+
};
|
|
14
|
+
type UpdateOperations = {
|
|
15
|
+
readFile: (filename: string) => Promise<string>;
|
|
16
|
+
realpath: (filename: string) => Promise<string>;
|
|
17
|
+
readCmdShim: (filename: string) => Promise<string>;
|
|
18
|
+
run: (command: UpdateCommand) => Promise<string>;
|
|
19
|
+
};
|
|
20
|
+
export type UpdateOptions = {
|
|
21
|
+
packageDirectory?: string;
|
|
22
|
+
platform?: NodeJS.Platform;
|
|
23
|
+
nodeExecutable?: string;
|
|
24
|
+
workingDirectory?: string;
|
|
25
|
+
environment?: NodeJS.ProcessEnv;
|
|
26
|
+
operations?: UpdateOperations;
|
|
27
|
+
};
|
|
28
|
+
/** Parent interruption and command limits terminate only this invocation's process tree before rejecting. */
|
|
29
|
+
export declare const runUpdateCommand: (command: UpdateCommand) => Promise<string>;
|
|
30
|
+
/** Updates only the npm global installation containing this module; no configuration or review state is opened. */
|
|
31
|
+
export declare const updateSelf: (options?: UpdateOptions) => Promise<UpdateResult>;
|
|
32
|
+
export {};
|
package/dist/update.js
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { readFile, realpath, stat } from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import readCmdShim from "read-cmd-shim";
|
|
5
|
+
import { SemVer, compare } from "semver";
|
|
6
|
+
const packageName = "@codetreker/daynight";
|
|
7
|
+
const recovery = "Use the original package manager, or install globally with npm install --global @codetreker/daynight@latest.";
|
|
8
|
+
const unsupported = () => new Error(`Self-update requires the current npm global installation and its daynight launcher. ${recovery}`);
|
|
9
|
+
/** Parent interruption and command limits terminate only this invocation's process tree before rejecting. */
|
|
10
|
+
export const runUpdateCommand = async (command) => {
|
|
11
|
+
let taskkill;
|
|
12
|
+
if (process.platform === "win32") {
|
|
13
|
+
const systemRoot = Object.entries(command.environment).find(([name]) => name.toLowerCase() === "systemroot")?.[1];
|
|
14
|
+
if (systemRoot === undefined || !path.win32.isAbsolute(systemRoot))
|
|
15
|
+
throw new Error("Cannot supervise the update command: SystemRoot must name the Windows installation directory.");
|
|
16
|
+
taskkill = path.win32.join(systemRoot, "System32", "taskkill.exe");
|
|
17
|
+
try {
|
|
18
|
+
if (!(await stat(taskkill)).isFile())
|
|
19
|
+
throw new Error("taskkill.exe is not a file.");
|
|
20
|
+
}
|
|
21
|
+
catch (cause) {
|
|
22
|
+
throw new Error("Cannot supervise the update command because Windows taskkill.exe is unavailable.", { cause });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return new Promise((resolve, reject) => {
|
|
26
|
+
const child = spawn(command.executable, command.arguments, {
|
|
27
|
+
cwd: command.cwd,
|
|
28
|
+
env: command.environment,
|
|
29
|
+
windowsHide: true,
|
|
30
|
+
detached: true,
|
|
31
|
+
stdio: ["inherit", command.output === "capture" ? "pipe" : "inherit", "inherit"],
|
|
32
|
+
});
|
|
33
|
+
let output = "";
|
|
34
|
+
let failure;
|
|
35
|
+
let termination;
|
|
36
|
+
const terminate = () => {
|
|
37
|
+
if (child.pid === undefined || termination !== undefined)
|
|
38
|
+
return;
|
|
39
|
+
if (process.platform === "win32") {
|
|
40
|
+
termination = new Promise((done) => {
|
|
41
|
+
const terminator = spawn(taskkill, ["/PID", String(child.pid), "/T", "/F"], { windowsHide: true, stdio: "inherit", timeout: 10_000, killSignal: "SIGKILL" });
|
|
42
|
+
terminator.once("error", (cause) => { failure = new Error(`Cannot terminate the npm process tree: ${cause.message}`, { cause: failure === undefined ? cause : failure }); child.kill("SIGKILL"); });
|
|
43
|
+
terminator.once("close", (code) => {
|
|
44
|
+
if (code !== 0) {
|
|
45
|
+
failure = new Error(`Cannot confirm termination of the npm process tree: taskkill exited with ${String(code)}.`, { cause: failure });
|
|
46
|
+
child.kill("SIGKILL");
|
|
47
|
+
}
|
|
48
|
+
done();
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const signal = (value) => {
|
|
54
|
+
try {
|
|
55
|
+
process.kill(-child.pid, value);
|
|
56
|
+
}
|
|
57
|
+
catch (cause) {
|
|
58
|
+
if (!(cause instanceof Error && "code" in cause && cause.code === "ESRCH"))
|
|
59
|
+
failure = new Error(`Cannot terminate the npm process group: ${String(cause)}`, { cause: failure === undefined ? cause : failure });
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
signal("SIGKILL");
|
|
63
|
+
termination = Promise.resolve();
|
|
64
|
+
};
|
|
65
|
+
const interrupt = (signal) => {
|
|
66
|
+
if (failure === undefined)
|
|
67
|
+
failure = new Error(`The update command was interrupted by ${signal}.`);
|
|
68
|
+
terminate();
|
|
69
|
+
};
|
|
70
|
+
const interruptByInt = () => { interrupt("SIGINT"); };
|
|
71
|
+
const interruptByTerm = () => { interrupt("SIGTERM"); };
|
|
72
|
+
process.on("SIGINT", interruptByInt);
|
|
73
|
+
process.on("SIGTERM", interruptByTerm);
|
|
74
|
+
child.stdout?.setEncoding("utf8");
|
|
75
|
+
child.stdout?.on("data", (chunk) => {
|
|
76
|
+
if (failure !== undefined)
|
|
77
|
+
return;
|
|
78
|
+
output += chunk;
|
|
79
|
+
if (Buffer.byteLength(output, "utf8") > 64 * 1024) {
|
|
80
|
+
failure = new Error("npm returned more than 64 KiB while checking the update version.");
|
|
81
|
+
terminate();
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
const timer = setTimeout(() => {
|
|
85
|
+
if (failure === undefined)
|
|
86
|
+
failure = new Error(`The update command timed out after ${command.timeoutMs / 1_000} seconds.`);
|
|
87
|
+
terminate();
|
|
88
|
+
}, command.timeoutMs);
|
|
89
|
+
child.once("error", (cause) => { if (failure === undefined)
|
|
90
|
+
failure = cause; });
|
|
91
|
+
child.once("close", async (code, signal) => {
|
|
92
|
+
clearTimeout(timer);
|
|
93
|
+
if (termination !== undefined)
|
|
94
|
+
await termination;
|
|
95
|
+
process.removeListener("SIGINT", interruptByInt);
|
|
96
|
+
process.removeListener("SIGTERM", interruptByTerm);
|
|
97
|
+
if (failure !== undefined)
|
|
98
|
+
reject(failure);
|
|
99
|
+
else if (signal !== null)
|
|
100
|
+
reject(new Error(`The update command was terminated by ${signal}.`));
|
|
101
|
+
else if (code !== 0)
|
|
102
|
+
reject(new Error(`The update command exited with code ${String(code)}.`));
|
|
103
|
+
else
|
|
104
|
+
resolve(output);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
const defaultOperations = {
|
|
109
|
+
readFile: (filename) => readFile(filename, "utf8"),
|
|
110
|
+
realpath,
|
|
111
|
+
readCmdShim,
|
|
112
|
+
run: runUpdateCommand,
|
|
113
|
+
};
|
|
114
|
+
const parseVersion = (value, subject) => {
|
|
115
|
+
if (typeof value !== "string")
|
|
116
|
+
throw new Error(`${subject} must be a canonical semantic version.`);
|
|
117
|
+
let parsed;
|
|
118
|
+
try {
|
|
119
|
+
parsed = new SemVer(value);
|
|
120
|
+
}
|
|
121
|
+
catch (cause) {
|
|
122
|
+
throw new Error(`${subject} must be a canonical semantic version.`, { cause });
|
|
123
|
+
}
|
|
124
|
+
const canonical = `${parsed.version}${parsed.build.length === 0 ? "" : `+${parsed.build.join(".")}`}`;
|
|
125
|
+
if (value !== canonical)
|
|
126
|
+
throw new Error(`${subject} must be a canonical semantic version.`);
|
|
127
|
+
return value;
|
|
128
|
+
};
|
|
129
|
+
const isMissing = (cause) => cause instanceof Error && "code" in cause && (cause.code === "ENOENT" || cause.code === "ENOTDIR");
|
|
130
|
+
/** Updates only the npm global installation containing this module; no configuration or review state is opened. */
|
|
131
|
+
export const updateSelf = async (options = {}) => {
|
|
132
|
+
const operations = options.operations === undefined ? defaultOperations : options.operations;
|
|
133
|
+
const platform = options.platform === undefined ? process.platform : options.platform;
|
|
134
|
+
const paths = platform === "win32" ? path.win32 : path.posix;
|
|
135
|
+
const environment = options.environment === undefined ? process.env : options.environment;
|
|
136
|
+
const nodeExecutable = options.nodeExecutable === undefined ? process.execPath : options.nodeExecutable;
|
|
137
|
+
const packageDirectory = await operations.realpath(options.packageDirectory === undefined ? path.resolve(import.meta.dirname, "..") : options.packageDirectory);
|
|
138
|
+
const samePath = (left, right) => paths.relative(left, right) === "";
|
|
139
|
+
const contains = (parent, child) => {
|
|
140
|
+
const relative = paths.relative(parent, child);
|
|
141
|
+
return relative === "" || (!relative.startsWith(`..${paths.sep}`) && relative !== ".." && !paths.isAbsolute(relative));
|
|
142
|
+
};
|
|
143
|
+
const manifestAt = async (directory) => {
|
|
144
|
+
const manifest = JSON.parse(await operations.readFile(paths.join(directory, "package.json")));
|
|
145
|
+
if (typeof manifest !== "object" || manifest === null || Array.isArray(manifest))
|
|
146
|
+
throw new Error(`Invalid package manifest in ${directory}.`);
|
|
147
|
+
return manifest;
|
|
148
|
+
};
|
|
149
|
+
const initialManifest = await manifestAt(packageDirectory);
|
|
150
|
+
const validManifest = (manifest) => manifest.name === packageName && manifest.private !== true &&
|
|
151
|
+
typeof manifest.bin === "object" && manifest.bin !== null && "daynight" in manifest.bin && manifest.bin.daynight === "dist/main.js";
|
|
152
|
+
if (!validManifest(initialManifest))
|
|
153
|
+
throw unsupported();
|
|
154
|
+
const previousVersion = parseVersion(initialManifest.version, "The installed package version");
|
|
155
|
+
const prefix = platform === "win32" ? paths.resolve(packageDirectory, "../../..") : paths.resolve(packageDirectory, "../../../..");
|
|
156
|
+
const expectedRoot = platform === "win32" ? paths.join(prefix, "node_modules", packageName) : paths.join(prefix, "lib", "node_modules", packageName);
|
|
157
|
+
if (!samePath(packageDirectory, expectedRoot))
|
|
158
|
+
throw unsupported();
|
|
159
|
+
const main = paths.join(packageDirectory, "dist", "main.js");
|
|
160
|
+
const launcher = platform === "win32" ? paths.join(prefix, "daynight.cmd") : paths.join(prefix, "bin", "daynight");
|
|
161
|
+
const verifyLauncher = async () => {
|
|
162
|
+
try {
|
|
163
|
+
const target = platform === "win32" ? paths.resolve(paths.dirname(launcher), await operations.readCmdShim(launcher)) : launcher;
|
|
164
|
+
if (!samePath(await operations.realpath(target), main) || !samePath(await operations.realpath(main), main))
|
|
165
|
+
throw unsupported();
|
|
166
|
+
}
|
|
167
|
+
catch (cause) {
|
|
168
|
+
if (isMissing(cause) || cause instanceof Error && "code" in cause && cause.code === "ENOTASHIM")
|
|
169
|
+
throw new Error(unsupported().message, { cause });
|
|
170
|
+
throw cause;
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
await verifyLauncher();
|
|
174
|
+
const nodeDirectory = paths.dirname(await operations.realpath(nodeExecutable));
|
|
175
|
+
const npmCandidates = [paths.join(nodeDirectory, "node_modules", "npm", "bin", "npm-cli.js"), paths.resolve(nodeDirectory, "../lib/node_modules/npm/bin/npm-cli.js")];
|
|
176
|
+
const executableName = platform === "win32" ? "npm.cmd" : "npm";
|
|
177
|
+
const pathEntry = Object.entries(environment).find(([name]) => platform === "win32" ? name.toLowerCase() === "path" : name === "PATH");
|
|
178
|
+
if (pathEntry !== undefined && pathEntry[1] !== undefined)
|
|
179
|
+
for (const directory of pathEntry[1].split(paths.delimiter)) {
|
|
180
|
+
if (directory !== "")
|
|
181
|
+
npmCandidates.push(paths.join(directory, executableName));
|
|
182
|
+
}
|
|
183
|
+
let npmCli;
|
|
184
|
+
for (const candidate of npmCandidates) {
|
|
185
|
+
try {
|
|
186
|
+
const target = platform === "win32" && candidate.endsWith(".cmd") ? paths.resolve(paths.dirname(candidate), await operations.readCmdShim(candidate)) : candidate;
|
|
187
|
+
const resolved = await operations.realpath(target);
|
|
188
|
+
if (paths.basename(resolved) !== "npm-cli.js" || contains(packageDirectory, resolved))
|
|
189
|
+
continue;
|
|
190
|
+
const manifest = await manifestAt(paths.resolve(resolved, "../.."));
|
|
191
|
+
if (manifest.name === "npm") {
|
|
192
|
+
npmCli = resolved;
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
catch (cause) {
|
|
197
|
+
if (isMissing(cause) || cause instanceof Error && "code" in cause && cause.code === "ENOTASHIM")
|
|
198
|
+
continue;
|
|
199
|
+
throw cause;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (npmCli === undefined)
|
|
203
|
+
throw new Error(`Cannot locate npm's JavaScript CLI for the current Node.js installation. ${recovery}`);
|
|
204
|
+
const execute = (argumentsValue, output, timeoutMs) => operations.run({
|
|
205
|
+
executable: nodeExecutable, arguments: [npmCli, ...argumentsValue], cwd: prefix, environment, timeoutMs, output,
|
|
206
|
+
});
|
|
207
|
+
const metadata = await execute(["view", `${packageName}@latest`, "version", "--json", "--global", "--prefix", prefix, "--prefer-online"], "capture", 60_000);
|
|
208
|
+
let latest;
|
|
209
|
+
try {
|
|
210
|
+
latest = JSON.parse(metadata);
|
|
211
|
+
}
|
|
212
|
+
catch (cause) {
|
|
213
|
+
throw new Error("npm returned invalid JSON for the latest package version.", { cause });
|
|
214
|
+
}
|
|
215
|
+
const targetVersion = parseVersion(Array.isArray(latest) && latest.length === 1 ? latest[0] : latest, "The latest npm package version");
|
|
216
|
+
const order = compare(previousVersion, targetVersion);
|
|
217
|
+
if (order >= 0)
|
|
218
|
+
return { status: order === 0 ? "current" : "ahead", previousVersion, targetVersion };
|
|
219
|
+
const workingDirectory = await operations.realpath(options.workingDirectory === undefined ? process.cwd() : options.workingDirectory);
|
|
220
|
+
if (contains(packageDirectory, workingDirectory))
|
|
221
|
+
throw new Error("Run daynight update from a directory outside its installation so npm can replace the package.");
|
|
222
|
+
await execute(["install", `${packageName}@${targetVersion}`, "--global", "--prefix", prefix, "--engine-strict", "--force=false", "--no-audit", "--no-fund"], "inherit", 10 * 60_000);
|
|
223
|
+
const installedManifest = await manifestAt(packageDirectory);
|
|
224
|
+
if (!validManifest(installedManifest) || parseVersion(installedManifest.version, "The updated package version") !== targetVersion) {
|
|
225
|
+
throw new Error(`npm completed, but the installed package does not match ${packageName}@${targetVersion}.`);
|
|
226
|
+
}
|
|
227
|
+
await verifyLauncher();
|
|
228
|
+
const installedVersion = (await operations.run({ executable: nodeExecutable, arguments: [main, "--version"], cwd: prefix, environment, timeoutMs: 30_000, output: "capture" })).trim();
|
|
229
|
+
if (installedVersion !== targetVersion)
|
|
230
|
+
throw new Error(`The updated executable returned version ${JSON.stringify(installedVersion)}; expected ${targetVersion}.`);
|
|
231
|
+
return { status: "updated", previousVersion, targetVersion };
|
|
232
|
+
};
|
|
233
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codetreker/daynight",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "A foreground CLI for GitHub pull request reviews",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,6 +26,8 @@
|
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"better-sqlite3": "13.0.3",
|
|
28
28
|
"cross-spawn": "7.0.6",
|
|
29
|
+
"read-cmd-shim": "6.0.0",
|
|
30
|
+
"semver": "7.8.5",
|
|
29
31
|
"yaml": "2.9.1"
|
|
30
32
|
},
|
|
31
33
|
"devDependencies": {
|
|
@@ -33,10 +35,9 @@
|
|
|
33
35
|
"@types/cross-spawn": "6.0.6",
|
|
34
36
|
"@types/node": "24.19.2",
|
|
35
37
|
"@types/semver": "7.8.0",
|
|
36
|
-
"semver": "7.8.5",
|
|
37
38
|
"typescript": "7.0.2",
|
|
38
39
|
"vite": "8.3.4",
|
|
39
40
|
"vitest": "5.0.5"
|
|
40
41
|
},
|
|
41
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "98cb6a8b2366c5cab2497e29d48afe613a35b004"
|
|
42
43
|
}
|