rigline 1.0.0-alpha.0 → 1.0.0-alpha.1
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/build.js +0 -12
- package/dist/index.js +69 -176
- package/package.json +4 -3
- package/dist/build.js.map +0 -1
- package/dist/index.js.map +0 -1
package/dist/build.js
CHANGED
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `rigline build`: the convenience preset that turns a plugin's TypeScript into the one file its
|
|
3
|
-
* manifest points at.
|
|
4
|
-
*
|
|
5
|
-
* The contract a plugin meets is an output, not a toolchain (decisions.md, P6): one browser-target
|
|
6
|
-
* ES module plus rigline.json. This is the shortest way to produce that output and nothing more.
|
|
7
|
-
* Everything the entry imports is bundled in, `@rigline/plugin-api` included, because a plugin
|
|
8
|
-
* directory is copied into the extension as it stands and nothing there resolves a bare specifier.
|
|
9
|
-
* Source maps are inline for the same reason the loader's are: the webview's CSP makes a sibling
|
|
10
|
-
* `.map` fetch a gamble.
|
|
11
|
-
*/
|
|
12
1
|
import { existsSync, readFileSync } from "node:fs";
|
|
13
2
|
import { join, relative, resolve } from "node:path";
|
|
14
3
|
import { UserError } from "@rigline/core";
|
|
15
4
|
import { build as bundle } from "rolldown";
|
|
16
|
-
/** Build one plugin from its source entry to the `entry` its manifest names. */
|
|
17
5
|
export async function buildPlugin(options = {}) {
|
|
18
6
|
const dir = resolve(options.dir ?? process.cwd());
|
|
19
7
|
const manifestPath = join(dir, "rigline.json");
|
package/dist/index.js
CHANGED
|
@@ -1,111 +1,91 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* The rigline command: a thin surface over @rigline/core.
|
|
4
|
-
*
|
|
5
|
-
* Commands land here as core grows. Every command throws UserError for a problem a person must
|
|
6
|
-
* fix and lets anything else propagate with its stack, so a bug is never dressed up as advice.
|
|
7
|
-
*/
|
|
8
2
|
import { existsSync, watch as fsWatch, readdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
9
3
|
import { basename, dirname, join, relative, resolve } from "node:path";
|
|
10
4
|
import { fileURLToPath } from "node:url";
|
|
11
5
|
import { parseArgs } from "node:util";
|
|
12
6
|
import { addFromNpm, addPlugin, CORE_VERSION, check, collect, diffScans, EXTENSIONS_DIR, extensionVersion, findExtension, formatDiff, formatDoctor, formatFlow, formatPlugins, formatUpdates, generate, harvestAll, hostVerdict, inspect, install, installedExtensions, listPlugins, readAnchorOverrides, readBundles, removePlugin, restoreAll, riglinePaths, scanOf, UserError, update, updatePlugins, verdict, watch, } from "@rigline/core";
|
|
13
7
|
import { buildPlugin } from "./build.js";
|
|
14
|
-
const USAGE = `rigline ${CORE_VERSION}
|
|
15
|
-
|
|
16
|
-
rigline codegen [DIR] [--check] [--out FILE]
|
|
17
|
-
Harvest the installed extension (or DIR) and write ./generated.ts: the identifier
|
|
18
|
-
augmentation your plugins compile against, and the baseline install diffs. Commit it.
|
|
19
|
-
--check compares instead of writing and exits 1 when the file is out of date. Either
|
|
20
|
-
way it exits 1 if a curated anchor claims to name one element and this version
|
|
21
|
-
applies its class in more than one place. It reads the shipped anchor table, never
|
|
22
|
-
~/.rigline/anchors.json: its verdict is about this repository's table.
|
|
23
|
-
|
|
24
|
-
rigline diff DIR_A DIR_B
|
|
25
|
-
Compare the identifier layers of two extension directories.
|
|
26
|
-
|
|
27
|
-
rigline build [DIR] [--source FILE]
|
|
28
|
-
Bundle a plugin's src/index.ts (or --source) into the entry its rigline.json names.
|
|
29
|
-
|
|
30
|
-
rigline install [--ext DIR] [--payload DIR]
|
|
31
|
-
Inject the loader into every installed extension version (or DIR), baking the enabled
|
|
32
|
-
plugins, and report what moved since the baseline and which plugins each version
|
|
33
|
-
refuses. Any entry in ~/.rigline/anchors.json is applied and named, with what this
|
|
34
|
-
version makes of it. Rewrites ./generated.ts when the directory has one and records
|
|
35
|
-
the new baseline; never commits either. Run it after an extension update, and reload
|
|
36
|
-
webviews afterwards. Exits 1 when a person is needed.
|
|
37
|
-
|
|
38
|
-
rigline check [--ext DIR]
|
|
39
|
-
Read-only. Per installed version (or DIR): what moved since the baseline, which
|
|
40
|
-
plugins this version would refuse and by which identifier, which curated anchors it
|
|
41
|
-
lacks, and what it makes of each entry in ~/.rigline/anchors.json. Exits 1 when a
|
|
42
|
-
person is needed.
|
|
43
|
-
|
|
44
|
-
rigline watch [--interval SECONDS]
|
|
45
|
-
install, and again whenever the set of installed extension directories changes,
|
|
46
|
-
which is what an extension update looks like from outside VS Code.
|
|
47
|
-
|
|
48
|
-
rigline dev [DIR...]
|
|
49
|
-
Build the named plugin directories (or every first-party one), re-inject, and rebuild
|
|
50
|
-
on every source change. Reload webviews after each one.
|
|
51
|
-
|
|
52
|
-
rigline add PATH|SPEC [--now]
|
|
53
|
-
Install a plugin into ~/.rigline/plugins, say what it can do, and re-inject. PATH is a
|
|
54
|
-
directory; SPEC is an npm package, optionally @version or @tag. A published version
|
|
55
|
-
must be a day old before it is installed; --now takes it anyway. No package manager
|
|
56
|
-
runs, nothing is resolved, and none of the plugin's own code is evaluated.
|
|
57
|
-
|
|
58
|
-
rigline update [NAME...] [--now]
|
|
59
|
-
Move each plugin installed from npm to whatever its tag resolves to now, and
|
|
60
|
-
re-inject. A plugin pinned to a version, added from a directory, or placed by hand is
|
|
61
|
-
reported and left alone, as is a newer version too young to install.
|
|
62
|
-
|
|
63
|
-
rigline remove NAME
|
|
64
|
-
Delete a plugin rigline installed, and re-inject. A plugin you did not install this
|
|
65
|
-
way is switched off in ~/.rigline/config.json instead; this will not delete it.
|
|
66
|
-
|
|
67
|
-
rigline list
|
|
68
|
-
Every plugin found, in the order they load: where it came from, whether it is
|
|
69
|
-
switched off, and what its manifest says it can do.
|
|
70
|
-
|
|
71
|
-
rigline status
|
|
72
|
-
Per installed version: is each bundle vanilla or patched, judged against its backup.
|
|
73
|
-
|
|
74
|
-
rigline restore
|
|
75
|
-
Every installed version back to the extension's own bytes. Needs neither VS Code nor
|
|
76
|
-
the extension to be working.
|
|
77
|
-
|
|
78
|
-
rigline doctor [--out FILE] [--ext DIR]
|
|
79
|
-
A markdown diagnostic to paste into a bug report: per installed version, whether it is
|
|
80
|
-
patched, what the payload holds, which plugins are baked in and what any host patch
|
|
81
|
-
did. For what the panel itself was doing, copy the probe's report from the RIG badge.
|
|
8
|
+
const USAGE = `rigline ${CORE_VERSION}
|
|
9
|
+
|
|
10
|
+
rigline codegen [DIR] [--check] [--out FILE]
|
|
11
|
+
Harvest the installed extension (or DIR) and write ./generated.ts: the identifier
|
|
12
|
+
augmentation your plugins compile against, and the baseline install diffs. Commit it.
|
|
13
|
+
--check compares instead of writing and exits 1 when the file is out of date. Either
|
|
14
|
+
way it exits 1 if a curated anchor claims to name one element and this version
|
|
15
|
+
applies its class in more than one place. It reads the shipped anchor table, never
|
|
16
|
+
~/.rigline/anchors.json: its verdict is about this repository's table.
|
|
17
|
+
|
|
18
|
+
rigline diff DIR_A DIR_B
|
|
19
|
+
Compare the identifier layers of two extension directories.
|
|
20
|
+
|
|
21
|
+
rigline build [DIR] [--source FILE]
|
|
22
|
+
Bundle a plugin's src/index.ts (or --source) into the entry its rigline.json names.
|
|
23
|
+
|
|
24
|
+
rigline install [--ext DIR] [--payload DIR]
|
|
25
|
+
Inject the loader into every installed extension version (or DIR), baking the enabled
|
|
26
|
+
plugins, and report what moved since the baseline and which plugins each version
|
|
27
|
+
refuses. Any entry in ~/.rigline/anchors.json is applied and named, with what this
|
|
28
|
+
version makes of it. Rewrites ./generated.ts when the directory has one and records
|
|
29
|
+
the new baseline; never commits either. Run it after an extension update, and reload
|
|
30
|
+
webviews afterwards. Exits 1 when a person is needed.
|
|
31
|
+
|
|
32
|
+
rigline check [--ext DIR]
|
|
33
|
+
Read-only. Per installed version (or DIR): what moved since the baseline, which
|
|
34
|
+
plugins this version would refuse and by which identifier, which curated anchors it
|
|
35
|
+
lacks, and what it makes of each entry in ~/.rigline/anchors.json. Exits 1 when a
|
|
36
|
+
person is needed.
|
|
37
|
+
|
|
38
|
+
rigline watch [--interval SECONDS]
|
|
39
|
+
install, and again whenever the set of installed extension directories changes,
|
|
40
|
+
which is what an extension update looks like from outside VS Code.
|
|
41
|
+
|
|
42
|
+
rigline dev [DIR...]
|
|
43
|
+
Build the named plugin directories (or every first-party one), re-inject, and rebuild
|
|
44
|
+
on every source change. Reload webviews after each one.
|
|
45
|
+
|
|
46
|
+
rigline add PATH|SPEC [--now]
|
|
47
|
+
Install a plugin into ~/.rigline/plugins, say what it can do, and re-inject. PATH is a
|
|
48
|
+
directory; SPEC is an npm package, optionally @version or @tag. A published version
|
|
49
|
+
must be a day old before it is installed; --now takes it anyway. No package manager
|
|
50
|
+
runs, nothing is resolved, and none of the plugin's own code is evaluated.
|
|
51
|
+
|
|
52
|
+
rigline update [NAME...] [--now]
|
|
53
|
+
Move each plugin installed from npm to whatever its tag resolves to now, and
|
|
54
|
+
re-inject. A plugin pinned to a version, added from a directory, or placed by hand is
|
|
55
|
+
reported and left alone, as is a newer version too young to install.
|
|
56
|
+
|
|
57
|
+
rigline remove NAME
|
|
58
|
+
Delete a plugin rigline installed, and re-inject. A plugin you did not install this
|
|
59
|
+
way is switched off in ~/.rigline/config.json instead; this will not delete it.
|
|
60
|
+
|
|
61
|
+
rigline list
|
|
62
|
+
Every plugin found, in the order they load: where it came from, whether it is
|
|
63
|
+
switched off, and what its manifest says it can do.
|
|
64
|
+
|
|
65
|
+
rigline status
|
|
66
|
+
Per installed version: is each bundle vanilla or patched, judged against its backup.
|
|
67
|
+
|
|
68
|
+
rigline restore
|
|
69
|
+
Every installed version back to the extension's own bytes. Needs neither VS Code nor
|
|
70
|
+
the extension to be working.
|
|
71
|
+
|
|
72
|
+
rigline doctor [--out FILE] [--ext DIR]
|
|
73
|
+
A markdown diagnostic to paste into a bug report: per installed version, whether it is
|
|
74
|
+
patched, what the payload holds, which plugins are baked in and what any host patch
|
|
75
|
+
did. For what the panel itself was doing, copy the probe's report from the RIG badge.
|
|
82
76
|
`;
|
|
83
|
-
/** The prebuilt pre.js and post.js, from the host package's build. */
|
|
84
77
|
function defaultPayloadDir() {
|
|
85
78
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
86
79
|
return resolve(here, "..", "..", "host", "dist");
|
|
87
80
|
}
|
|
88
|
-
/** The first-party plugins in this checkout. Plugins a person installs live under ~/.rigline. */
|
|
89
81
|
function repoPluginsDir() {
|
|
90
82
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
91
83
|
return resolve(here, "..", "..", "..", "plugins");
|
|
92
84
|
}
|
|
93
|
-
/** Where plugins are discovered from, and which of them a person has turned off. */
|
|
94
85
|
function pluginOptions() {
|
|
95
86
|
const paths = riglinePaths();
|
|
96
87
|
return { roots: [repoPluginsDir(), paths.plugins], last: ["probe"], configPath: paths.config };
|
|
97
88
|
}
|
|
98
|
-
/**
|
|
99
|
-
* Inject into every installed version and print the report.
|
|
100
|
-
*
|
|
101
|
-
* `install` is this and nothing else; `add` and `remove` run it too, because they change the plugin
|
|
102
|
-
* set and leaving the payload stale behind them would mean a person who added a plugin has to know
|
|
103
|
-
* about a second command before anything appears (D56).
|
|
104
|
-
*
|
|
105
|
-
* No extension installed is not a failure here. `add` has already put the plugin where it belongs,
|
|
106
|
-
* and saying so and stopping is a better answer than an error about a directory the person may be
|
|
107
|
-
* about to create by installing the extension.
|
|
108
|
-
*/
|
|
109
89
|
function reinject(options = {}) {
|
|
110
90
|
const targets = options.exts ?? installedExtensions();
|
|
111
91
|
if (targets.length === 0) {
|
|
@@ -118,8 +98,6 @@ function reinject(options = {}) {
|
|
|
118
98
|
exts: targets,
|
|
119
99
|
payloadDir: options.payloadDir ?? defaultPayloadDir(),
|
|
120
100
|
plugins: pluginOptions(),
|
|
121
|
-
// Only where the directory already has one; this never creates a harvest for somebody who has
|
|
122
|
-
// not asked for one, and it never commits what it rewrites (D30).
|
|
123
101
|
codegen: true,
|
|
124
102
|
});
|
|
125
103
|
console.log(formatFlow(report));
|
|
@@ -128,14 +106,6 @@ function reinject(options = {}) {
|
|
|
128
106
|
: `\nReload with Developer: Reload Webviews (current window only).`);
|
|
129
107
|
return report.attention.length > 0 ? 1 : 0;
|
|
130
108
|
}
|
|
131
|
-
/**
|
|
132
|
-
* Installs a plugin from a directory. No network and no package manager (D47): a plugin is a
|
|
133
|
-
* manifest and a built module, and everything `add` does is around the copy rather than inside it.
|
|
134
|
-
*
|
|
135
|
-
* What it can do is printed because this is the moment it means something (D26): installing a
|
|
136
|
-
* plugin is the act that says yes, and nothing after it asks again, so the sentences belong here
|
|
137
|
-
* rather than in a prompt nobody can answer usefully.
|
|
138
|
-
*/
|
|
139
109
|
async function addCommand(args) {
|
|
140
110
|
const { values, positionals } = parseArgs({
|
|
141
111
|
args,
|
|
@@ -162,8 +132,6 @@ async function addCommand(args) {
|
|
|
162
132
|
for (const sentence of result.can)
|
|
163
133
|
console.log(` - ${sentence}`);
|
|
164
134
|
for (const patch of result.manifest.patches) {
|
|
165
|
-
// Named apart, and never folded in with the capability sentences: a host patch is the one
|
|
166
|
-
// declaration that reaches outside the webview, into the extension's own bundle.
|
|
167
135
|
console.log(` - patches extension.js${patch.required ? " (required)" : ""}: ${patch.why}`);
|
|
168
136
|
}
|
|
169
137
|
if (result.disabled) {
|
|
@@ -172,13 +140,6 @@ async function addCommand(args) {
|
|
|
172
140
|
console.log("");
|
|
173
141
|
return reinject();
|
|
174
142
|
}
|
|
175
|
-
/**
|
|
176
|
-
* Whether this is a directory rather than an npm package.
|
|
177
|
-
*
|
|
178
|
-
* The same rule every package manager uses, said out loud: a leading dot or a path separator, or a
|
|
179
|
-
* directory that is simply there. An npm name cannot hold a separator except the one in a scope,
|
|
180
|
-
* and a scope starts with `@`, so the two vocabularies do not overlap.
|
|
181
|
-
*/
|
|
182
143
|
function isPathSpec(spec) {
|
|
183
144
|
if (spec.startsWith("@"))
|
|
184
145
|
return false;
|
|
@@ -186,11 +147,6 @@ function isPathSpec(spec) {
|
|
|
186
147
|
return true;
|
|
187
148
|
return existsSync(join(resolve(spec), "rigline.json"));
|
|
188
149
|
}
|
|
189
|
-
/**
|
|
190
|
-
* Moves every plugin installed from npm to what its tag resolves to now (D49).
|
|
191
|
-
*
|
|
192
|
-
* `update` means plugins, which is the whole reason the injection flow is spelled `install` (D55).
|
|
193
|
-
*/
|
|
194
150
|
async function updateCommand(args) {
|
|
195
151
|
const { values, positionals } = parseArgs({
|
|
196
152
|
args,
|
|
@@ -208,8 +164,6 @@ async function updateCommand(args) {
|
|
|
208
164
|
console.log(formatUpdates(updates));
|
|
209
165
|
const moved = updates.some((u) => u.outcome === "updated");
|
|
210
166
|
if (!moved) {
|
|
211
|
-
// Nothing changed on disk, so the payload is already what it should be and re-injecting would
|
|
212
|
-
// be a paragraph of report about a no-op.
|
|
213
167
|
return updates.some((u) => u.outcome === "failed") ? 1 : 0;
|
|
214
168
|
}
|
|
215
169
|
console.log("");
|
|
@@ -235,10 +189,6 @@ function removeCommand(args) {
|
|
|
235
189
|
console.log("");
|
|
236
190
|
return reinject();
|
|
237
191
|
}
|
|
238
|
-
/**
|
|
239
|
-
* The one write command: inject into every installed version, say what moved since the baseline,
|
|
240
|
-
* record the new one. `check` is its read-only half. `update` means plugins, in phase 4 (D55).
|
|
241
|
-
*/
|
|
242
192
|
function installCommand(args) {
|
|
243
193
|
const { values } = parseArgs({
|
|
244
194
|
args,
|
|
@@ -251,7 +201,6 @@ function installCommand(args) {
|
|
|
251
201
|
required: true,
|
|
252
202
|
});
|
|
253
203
|
}
|
|
254
|
-
/** The same roots `pluginOptions` discovers from, named for a report rather than for a loader. */
|
|
255
204
|
function listCommand() {
|
|
256
205
|
const paths = riglinePaths();
|
|
257
206
|
console.log(formatPlugins(listPlugins({
|
|
@@ -277,14 +226,6 @@ function statusCommand() {
|
|
|
277
226
|
}
|
|
278
227
|
return 0;
|
|
279
228
|
}
|
|
280
|
-
/**
|
|
281
|
-
* The diagnostic collector (D53). Always exits 0: a machine with no VS Code logs, or none inside
|
|
282
|
-
* the window, still gets an install-state report, and a person whose panel has just frozen should
|
|
283
|
-
* not also have to work out why the tool that was meant to explain it failed.
|
|
284
|
-
*
|
|
285
|
-
* `--ext` and `--logs` point it at copies rather than at what is installed, which is how this gets
|
|
286
|
-
* rehearsed against somebody else's log bundle without a test ever touching a live directory (D39).
|
|
287
|
-
*/
|
|
288
229
|
function doctorCommand(args) {
|
|
289
230
|
const { values } = parseArgs({
|
|
290
231
|
args,
|
|
@@ -294,8 +235,6 @@ function doctorCommand(args) {
|
|
|
294
235
|
const report = collect({ exts: values.ext ? [resolve(values.ext)] : undefined });
|
|
295
236
|
const markdown = formatDoctor(report);
|
|
296
237
|
if (values.out === undefined) {
|
|
297
|
-
// Straight to stdout, unadorned, so `rigline doctor | clip` and `> doctor.md` both produce the
|
|
298
|
-
// document and nothing else. Every other word this command has to say goes to stderr.
|
|
299
238
|
process.stdout.write(markdown);
|
|
300
239
|
return 0;
|
|
301
240
|
}
|
|
@@ -316,8 +255,6 @@ function restoreCommand() {
|
|
|
316
255
|
noBackup++;
|
|
317
256
|
console.log(`NOT restored: ${result.ext} (${result.reason})`);
|
|
318
257
|
}
|
|
319
|
-
// Reported whichever way the webview side went: an extension host still carrying a
|
|
320
|
-
// substitution is the failure a person must know about, and it is invisible from the panel.
|
|
321
258
|
if (result.hostReason) {
|
|
322
259
|
hostFailed++;
|
|
323
260
|
console.log(` extension.js NOT restored: ${result.hostReason}`);
|
|
@@ -332,14 +269,6 @@ function restoreCommand() {
|
|
|
332
269
|
console.log("Reload the window afterwards.");
|
|
333
270
|
return noBackup + hostFailed > 0 ? 1 : 0;
|
|
334
271
|
}
|
|
335
|
-
/**
|
|
336
|
-
* Where a harvest is committed: `generated.ts` in the directory the command was run from.
|
|
337
|
-
*
|
|
338
|
-
* The same rule for this repository and for an author's, which is the point — nothing here knows
|
|
339
|
-
* it is being run inside Rigline's own checkout. It is the working directory rather than a path
|
|
340
|
-
* derived from this file's location because the published CLI lives in `node_modules`, where a
|
|
341
|
-
* relative walk upwards means nothing.
|
|
342
|
-
*/
|
|
343
272
|
function defaultGeneratedPath() {
|
|
344
273
|
return resolve(process.cwd(), "generated.ts");
|
|
345
274
|
}
|
|
@@ -355,10 +284,6 @@ function codegen(args) {
|
|
|
355
284
|
const out = values.out ?? defaultGeneratedPath();
|
|
356
285
|
const generated = generate(harvestAll(readBundles(ext)));
|
|
357
286
|
const label = relative(process.cwd(), out) || out;
|
|
358
|
-
// Asked before the `--check` branch and again after the write, because it is a verdict about the
|
|
359
|
-
// anchor table and not about the file. Asking it only on the writing path let the one invocation
|
|
360
|
-
// that runs unattended go green over it: codegen writes `generated.ts` and *then* fails, so a
|
|
361
|
-
// maintainer who commits the file it just wrote leaves `--check` comparing equal and saying so.
|
|
362
287
|
const ambiguous = reportAmbiguousAnchors(generated);
|
|
363
288
|
if (values.check) {
|
|
364
289
|
const current = existsSync(out) ? readFileSync(out, "utf8") : "";
|
|
@@ -381,16 +306,6 @@ function codegen(args) {
|
|
|
381
306
|
console.log(`wrote: ${label}`);
|
|
382
307
|
return ambiguous ? 1 : 0;
|
|
383
308
|
}
|
|
384
|
-
/**
|
|
385
|
-
* Name every anchor that claims to be one element and is not, and say whether there were any.
|
|
386
|
-
*
|
|
387
|
-
* The one thing codegen fails over that is not a broken harvest, and it fails *here* rather than at
|
|
388
|
-
* install for a reason (D7): an ambiguous singleton means this repo's anchor table is wrong, the
|
|
389
|
-
* repair is a refinement somebody can write today, and a maintainer is standing here reading this.
|
|
390
|
-
* On a user's machine the same verdict is an attention line and a refusal of the plugins that
|
|
391
|
-
* declared the anchor, because an upstream release that starts reusing a class is not a reason to
|
|
392
|
-
* leave every other plugin uninjected.
|
|
393
|
-
*/
|
|
394
309
|
function reportAmbiguousAnchors(generated) {
|
|
395
310
|
if (generated.anchors.ambiguous.length === 0)
|
|
396
311
|
return false;
|
|
@@ -421,7 +336,6 @@ async function build(args) {
|
|
|
421
336
|
console.log(`built ${built.input} -> ${built.output}`);
|
|
422
337
|
return 0;
|
|
423
338
|
}
|
|
424
|
-
/** `--ext DIR`, for rehearsing against a copy rather than against what is installed (D39). */
|
|
425
339
|
function extOption(args) {
|
|
426
340
|
const { values } = parseArgs({ args, options: { ext: { type: "string" } } });
|
|
427
341
|
return values.ext ? [resolve(values.ext)] : undefined;
|
|
@@ -431,10 +345,6 @@ function checkCommand(args) {
|
|
|
431
345
|
console.log(formatFlow(report));
|
|
432
346
|
return report.attention.length > 0 ? 1 : 0;
|
|
433
347
|
}
|
|
434
|
-
/**
|
|
435
|
-
* Runs until interrupted. Its exit code is the last report's, so a watcher stopped after an update
|
|
436
|
-
* that needs a person still says so, and `rigline watch; echo $?` from a script is meaningful.
|
|
437
|
-
*/
|
|
438
348
|
function watchCommand(args) {
|
|
439
349
|
const { values } = parseArgs({
|
|
440
350
|
args,
|
|
@@ -453,15 +363,12 @@ function watchCommand(args) {
|
|
|
453
363
|
codegen: true,
|
|
454
364
|
intervalMs: seconds * 1000,
|
|
455
365
|
onReport(report) {
|
|
456
|
-
console.log(`
|
|
366
|
+
console.log(`
|
|
457
367
|
[${new Date().toISOString()}]`);
|
|
458
368
|
console.log(formatFlow(report));
|
|
459
369
|
code = report.attention.length > 0 ? 1 : 0;
|
|
460
370
|
},
|
|
461
371
|
onError(error) {
|
|
462
|
-
// Reported and survived, never fatal: a harvest run against a directory VS Code is still
|
|
463
|
-
// writing fails once and succeeds on the next pass, and a watcher that exits then is a
|
|
464
|
-
// watcher that is never running when it is needed.
|
|
465
372
|
console.error(`rigline watch: ${error instanceof Error ? error.message : String(error)}`);
|
|
466
373
|
code = 1;
|
|
467
374
|
},
|
|
@@ -475,14 +382,6 @@ function watchCommand(args) {
|
|
|
475
382
|
process.once("SIGTERM", stop);
|
|
476
383
|
});
|
|
477
384
|
}
|
|
478
|
-
/**
|
|
479
|
-
* The development loop: build, inject, and do it again on every source change.
|
|
480
|
-
*
|
|
481
|
-
* It rebuilds and re-injects rather than watching the injected copy, because a plugin's shipped
|
|
482
|
-
* form is a directory the installer copies; there is nothing on the other side to watch. Re-running
|
|
483
|
-
* the install refreshes the payload in place without rewriting the bundle, so the cost of a change
|
|
484
|
-
* is a rebuild and a webview reload.
|
|
485
|
-
*/
|
|
486
385
|
async function dev(args) {
|
|
487
386
|
const { positionals } = parseArgs({ args, options: {}, allowPositionals: true });
|
|
488
387
|
const dirs = positionals.length > 0
|
|
@@ -495,10 +394,6 @@ async function dev(args) {
|
|
|
495
394
|
const exts = installedExtensions();
|
|
496
395
|
if (exts.length === 0)
|
|
497
396
|
throw new UserError("no Claude Code extension is installed");
|
|
498
|
-
// `install`, `check` and `watch` read `~/.rigline/anchors.json` through the flow, which owns user
|
|
499
|
-
// state. `dev` drives the installer directly, so it reads the file here: a development loop
|
|
500
|
-
// resolving anchors differently from the install it stands in for is a difference nobody would
|
|
501
|
-
// think to look for (D44).
|
|
502
397
|
const overrides = readAnchorOverrides();
|
|
503
398
|
for (const problem of overrides.problems)
|
|
504
399
|
console.error(`rigline dev: ${problem}`);
|
|
@@ -528,8 +423,6 @@ async function dev(args) {
|
|
|
528
423
|
: "Developer: Reload Webviews");
|
|
529
424
|
}
|
|
530
425
|
await once();
|
|
531
|
-
// Debounced, because one editor save can be several filesystem events, and a rebuild racing its
|
|
532
|
-
// own re-install would leave the payload half from each.
|
|
533
426
|
let pending = null;
|
|
534
427
|
let building = false;
|
|
535
428
|
const schedule = () => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rigline",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.1",
|
|
4
4
|
"description": "Install, update and develop plugins for the Claude Code VS Code extension",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"rigline",
|
|
@@ -20,13 +20,14 @@
|
|
|
20
20
|
"type": "module",
|
|
21
21
|
"license": "MIT",
|
|
22
22
|
"files": [
|
|
23
|
-
"dist"
|
|
23
|
+
"dist",
|
|
24
|
+
"!dist/**/*.map"
|
|
24
25
|
],
|
|
25
26
|
"bin": {
|
|
26
27
|
"rigline": "./dist/index.js"
|
|
27
28
|
},
|
|
28
29
|
"dependencies": {
|
|
29
|
-
"@rigline/core": "1.0.0-alpha.
|
|
30
|
+
"@rigline/core": "1.0.0-alpha.1",
|
|
30
31
|
"rolldown": "^1.2.8"
|
|
31
32
|
},
|
|
32
33
|
"scripts": {
|
package/dist/build.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAS3C,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAO,GAAiB,EAAE;IAE1B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,GAAG,sBAAsB,CAAC,CAAC;IACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAwB,CAAC;IACvF,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,SAAS,CAAC,GAAG,YAAY,iBAAiB,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC,CAAC;IAC7D,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,MAAM,CAAC;QACX,KAAK;QACL,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE;KACnF,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;AACxE,CAAC"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|