@rcrsr/rill-cli 0.11.0 → 0.12.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/dist/cli-run.d.ts +9 -0
- package/dist/cli-run.d.ts.map +1 -0
- package/dist/cli-run.js +282 -0
- package/dist/cli-run.js.map +1 -0
- package/dist/run/runner.d.ts +24 -0
- package/dist/run/runner.d.ts.map +1 -0
- package/dist/run/runner.js +258 -0
- package/dist/run/runner.js.map +1 -0
- package/dist/run/types.d.ts +17 -0
- package/dist/run/types.d.ts.map +1 -0
- package/dist/run/types.js +5 -0
- package/dist/run/types.js.map +1 -0
- package/package.json +6 -3
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* rill-run: Extension-aware rill script runner.
|
|
4
|
+
* Loads extensions from rill-config.json, generates bindings, and executes scripts.
|
|
5
|
+
*/
|
|
6
|
+
import type { RunCliOptions } from './run/types.js';
|
|
7
|
+
export declare function parseCliArgs(argv?: string[]): RunCliOptions;
|
|
8
|
+
export declare function main(): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=cli-run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-run.d.ts","sourceRoot":"","sources":["../src/cli-run.ts"],"names":[],"mappings":";AACA;;;GAGG;AAyBH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAsCpD,wBAAgB,YAAY,CAC1B,IAAI,GAAE,MAAM,EAA0B,GACrC,aAAa,CA6Cf;AAqCD,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA0L1C"}
|
package/dist/cli-run.js
ADDED
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* rill-run: Extension-aware rill script runner.
|
|
4
|
+
* Loads extensions from rill-config.json, generates bindings, and executes scripts.
|
|
5
|
+
*/
|
|
6
|
+
import { readFileSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
7
|
+
import { dirname, resolve } from 'node:path';
|
|
8
|
+
import { parseArgs } from 'node:util';
|
|
9
|
+
import { config as dotenvConfig } from 'dotenv';
|
|
10
|
+
import { parse, execute, createRuntimeContext, invokeCallable, isScriptCallable, VERSION, } from '@rcrsr/rill';
|
|
11
|
+
import { resolveConfigPath, loadProject, parseMainField, introspectHandler, marshalCliArgs, ConfigError, } from '@rcrsr/rill-config';
|
|
12
|
+
import { explainError } from './cli-explain.js';
|
|
13
|
+
import { runScript } from './run/runner.js';
|
|
14
|
+
// ============================================================
|
|
15
|
+
// HELP TEXT
|
|
16
|
+
// ============================================================
|
|
17
|
+
const USAGE = `\
|
|
18
|
+
Usage: rill-run [args...]
|
|
19
|
+
|
|
20
|
+
Options:
|
|
21
|
+
--config <path> Config file path (default: search from cwd)
|
|
22
|
+
--format <mode> Output format: human, json, compact (default: human)
|
|
23
|
+
--verbose Show full error details (default: false)
|
|
24
|
+
--max-stack-depth <n> Error stack frame limit (default: 10)
|
|
25
|
+
--create-bindings Write bindings source to config-defined file and exit
|
|
26
|
+
--explain <code> Print error code documentation
|
|
27
|
+
--help Print this help message and exit
|
|
28
|
+
--version Print version and exit`.trimEnd();
|
|
29
|
+
// ============================================================
|
|
30
|
+
// BASE OPTIONS (used to separate known flags from handler args)
|
|
31
|
+
// ============================================================
|
|
32
|
+
const BASE_OPTIONS = {
|
|
33
|
+
config: { type: 'string' },
|
|
34
|
+
format: { type: 'string' },
|
|
35
|
+
verbose: { type: 'boolean' },
|
|
36
|
+
'max-stack-depth': { type: 'string' },
|
|
37
|
+
'create-bindings': { type: 'boolean' },
|
|
38
|
+
help: { type: 'boolean' },
|
|
39
|
+
version: { type: 'boolean' },
|
|
40
|
+
explain: { type: 'string' },
|
|
41
|
+
};
|
|
42
|
+
// ============================================================
|
|
43
|
+
// PARSE ARGS
|
|
44
|
+
// ============================================================
|
|
45
|
+
export function parseCliArgs(argv = process.argv.slice(2)) {
|
|
46
|
+
const { values, positionals } = parseArgs({
|
|
47
|
+
args: argv,
|
|
48
|
+
options: BASE_OPTIONS,
|
|
49
|
+
allowPositionals: true,
|
|
50
|
+
strict: false,
|
|
51
|
+
});
|
|
52
|
+
if (values['help'] === true) {
|
|
53
|
+
process.stdout.write(USAGE + '\n');
|
|
54
|
+
process.exit(0);
|
|
55
|
+
}
|
|
56
|
+
if (values['version'] === true) {
|
|
57
|
+
process.stdout.write(`rill-run ${VERSION}\n`);
|
|
58
|
+
process.exit(0);
|
|
59
|
+
}
|
|
60
|
+
if (positionals.length === 0 && values['create-bindings'] === undefined) {
|
|
61
|
+
process.stderr.write('Error: no script path provided\n\n' + USAGE + '\n');
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
const scriptPath = positionals[0];
|
|
65
|
+
const scriptArgs = positionals.slice(1);
|
|
66
|
+
const rawFormat = values['format'];
|
|
67
|
+
const format = rawFormat === 'json' || rawFormat === 'compact' ? rawFormat : 'human';
|
|
68
|
+
const rawDepth = values['max-stack-depth'];
|
|
69
|
+
const parsedDepth = rawDepth !== undefined ? parseInt(rawDepth, 10) : NaN;
|
|
70
|
+
const maxStackDepth = !isNaN(parsedDepth) && parsedDepth >= 0 ? parsedDepth : 10;
|
|
71
|
+
return {
|
|
72
|
+
scriptPath,
|
|
73
|
+
scriptArgs,
|
|
74
|
+
config: values['config'] ?? './rill-config.json',
|
|
75
|
+
format,
|
|
76
|
+
verbose: values['verbose'] === true,
|
|
77
|
+
maxStackDepth,
|
|
78
|
+
explain: values['explain'],
|
|
79
|
+
createBindings: values['create-bindings'] === true,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
// ============================================================
|
|
83
|
+
// HANDLER ARG EXTRACTION
|
|
84
|
+
// ============================================================
|
|
85
|
+
/**
|
|
86
|
+
* Extract unknown flags from argv as handler parameter strings.
|
|
87
|
+
* Filters out known base options and their values.
|
|
88
|
+
*/
|
|
89
|
+
function extractHandlerArgs(argv) {
|
|
90
|
+
const { values } = parseArgs({
|
|
91
|
+
args: argv,
|
|
92
|
+
options: BASE_OPTIONS,
|
|
93
|
+
allowPositionals: true,
|
|
94
|
+
strict: false,
|
|
95
|
+
});
|
|
96
|
+
const knownKeys = new Set(Object.keys(BASE_OPTIONS));
|
|
97
|
+
const handlerArgs = {};
|
|
98
|
+
for (const [key, value] of Object.entries(values)) {
|
|
99
|
+
if (knownKeys.has(key))
|
|
100
|
+
continue;
|
|
101
|
+
if (typeof value === 'string') {
|
|
102
|
+
handlerArgs[key] = value;
|
|
103
|
+
}
|
|
104
|
+
else if (value === true) {
|
|
105
|
+
handlerArgs[key] = '';
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return handlerArgs;
|
|
109
|
+
}
|
|
110
|
+
// ============================================================
|
|
111
|
+
// MAIN
|
|
112
|
+
// ============================================================
|
|
113
|
+
export async function main() {
|
|
114
|
+
dotenvConfig({ quiet: true });
|
|
115
|
+
const argv = process.argv.slice(2);
|
|
116
|
+
const opts = parseCliArgs(argv);
|
|
117
|
+
if (opts.explain !== undefined) {
|
|
118
|
+
const doc = explainError(opts.explain);
|
|
119
|
+
if (doc !== null) {
|
|
120
|
+
process.stdout.write(doc + '\n');
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
process.stdout.write(`${opts.explain}: No documentation available.\n`);
|
|
124
|
+
}
|
|
125
|
+
process.exit(0);
|
|
126
|
+
}
|
|
127
|
+
const hasExplicitConfig = opts.config !== './rill-config.json';
|
|
128
|
+
let configPath;
|
|
129
|
+
try {
|
|
130
|
+
configPath = resolveConfigPath({
|
|
131
|
+
...(hasExplicitConfig ? { configFlag: opts.config } : {}),
|
|
132
|
+
cwd: process.cwd(),
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
if (err instanceof ConfigError) {
|
|
137
|
+
process.stderr.write(err.message + '\n');
|
|
138
|
+
process.exit(1);
|
|
139
|
+
}
|
|
140
|
+
throw err;
|
|
141
|
+
}
|
|
142
|
+
let project;
|
|
143
|
+
try {
|
|
144
|
+
project = await loadProject({
|
|
145
|
+
configPath,
|
|
146
|
+
env: process.env,
|
|
147
|
+
rillVersion: VERSION,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
if (err instanceof ConfigError) {
|
|
152
|
+
process.stderr.write(err.message + '\n');
|
|
153
|
+
process.exit(1);
|
|
154
|
+
}
|
|
155
|
+
throw err;
|
|
156
|
+
}
|
|
157
|
+
// Create bindings and exit early if --create-bindings was set
|
|
158
|
+
if (opts.createBindings === true) {
|
|
159
|
+
const extBindingsPath = resolve(process.cwd(), project.config.extensions?.bindings ?? 'bindings/ext.rill');
|
|
160
|
+
const ctxBindingsPath = resolve(process.cwd(), project.config.context?.bindings ?? 'bindings/context.rill');
|
|
161
|
+
mkdirSync(dirname(extBindingsPath), { recursive: true });
|
|
162
|
+
writeFileSync(extBindingsPath, project.extensionBindings + '\n');
|
|
163
|
+
mkdirSync(dirname(ctxBindingsPath), { recursive: true });
|
|
164
|
+
writeFileSync(ctxBindingsPath, project.contextBindings + '\n');
|
|
165
|
+
process.exit(0);
|
|
166
|
+
}
|
|
167
|
+
// Handler mode: main field contains "file.rill:handlerName"
|
|
168
|
+
const mainField = project.config.main;
|
|
169
|
+
if (mainField !== undefined && mainField.includes(':')) {
|
|
170
|
+
const { filePath, handlerName } = parseMainField(mainField);
|
|
171
|
+
const absolutePath = resolve(process.cwd(), filePath);
|
|
172
|
+
let source;
|
|
173
|
+
try {
|
|
174
|
+
source = readFileSync(absolutePath, 'utf-8');
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
178
|
+
process.stderr.write(message + '\n');
|
|
179
|
+
process.exit(1);
|
|
180
|
+
}
|
|
181
|
+
let ast;
|
|
182
|
+
try {
|
|
183
|
+
ast = parse(source);
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
187
|
+
process.stderr.write(message + '\n');
|
|
188
|
+
process.exit(1);
|
|
189
|
+
}
|
|
190
|
+
const runtimeOptions = {
|
|
191
|
+
...project.resolverConfig,
|
|
192
|
+
parseSource: parse,
|
|
193
|
+
callbacks: {
|
|
194
|
+
onLog: (msg) => {
|
|
195
|
+
process.stdout.write(msg + '\n');
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
maxCallStackDepth: opts.maxStackDepth,
|
|
199
|
+
};
|
|
200
|
+
const ctx = createRuntimeContext(runtimeOptions);
|
|
201
|
+
try {
|
|
202
|
+
await execute(ast, ctx);
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
206
|
+
process.stderr.write(message + '\n');
|
|
207
|
+
process.exit(1);
|
|
208
|
+
}
|
|
209
|
+
const handlerValue = handlerName !== undefined ? ctx.variables.get(handlerName) : undefined;
|
|
210
|
+
if (handlerValue === undefined || !isScriptCallable(handlerValue)) {
|
|
211
|
+
process.stderr.write(`Handler not found: $${handlerName ?? '(none)'} is not a closure\n`);
|
|
212
|
+
process.exit(1);
|
|
213
|
+
}
|
|
214
|
+
const introspection = introspectHandler(handlerValue);
|
|
215
|
+
const rawHandlerArgs = extractHandlerArgs(argv);
|
|
216
|
+
let handlerArgs;
|
|
217
|
+
try {
|
|
218
|
+
handlerArgs = marshalCliArgs(rawHandlerArgs, introspection.params);
|
|
219
|
+
}
|
|
220
|
+
catch (err) {
|
|
221
|
+
if (err instanceof ConfigError) {
|
|
222
|
+
process.stderr.write(err.message + '\n');
|
|
223
|
+
process.exit(1);
|
|
224
|
+
}
|
|
225
|
+
throw err;
|
|
226
|
+
}
|
|
227
|
+
ctx.pipeValue = handlerArgs;
|
|
228
|
+
let handlerResult;
|
|
229
|
+
try {
|
|
230
|
+
handlerResult = await invokeCallable(handlerValue, [], ctx);
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
234
|
+
process.stderr.write(message + '\n');
|
|
235
|
+
process.exit(1);
|
|
236
|
+
}
|
|
237
|
+
finally {
|
|
238
|
+
for (const dispose of project.disposes) {
|
|
239
|
+
try {
|
|
240
|
+
await dispose();
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
// Ignore dispose errors
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
if (typeof handlerResult === 'string' && handlerResult.length > 0) {
|
|
248
|
+
process.stdout.write(handlerResult + '\n');
|
|
249
|
+
}
|
|
250
|
+
process.exit(0);
|
|
251
|
+
}
|
|
252
|
+
// Module mode: use main field as script path, or use CLI positional
|
|
253
|
+
const scriptPath = mainField !== undefined
|
|
254
|
+
? resolve(process.cwd(), mainField)
|
|
255
|
+
: opts.scriptPath;
|
|
256
|
+
const runOpts = {
|
|
257
|
+
...opts,
|
|
258
|
+
scriptPath,
|
|
259
|
+
};
|
|
260
|
+
const runResult = await runScript(runOpts, project.config, project.extTree, project.extensionBindings, [...project.disposes]);
|
|
261
|
+
if (runResult.output !== undefined) {
|
|
262
|
+
process.stdout.write(runResult.output + '\n');
|
|
263
|
+
}
|
|
264
|
+
if (runResult.errorOutput !== undefined) {
|
|
265
|
+
process.stderr.write(runResult.errorOutput + '\n');
|
|
266
|
+
}
|
|
267
|
+
process.exit(runResult.exitCode);
|
|
268
|
+
}
|
|
269
|
+
// ============================================================
|
|
270
|
+
// ENTRY
|
|
271
|
+
// ============================================================
|
|
272
|
+
const shouldRunMain = process.env['NODE_ENV'] !== 'test' &&
|
|
273
|
+
!process.env['VITEST'] &&
|
|
274
|
+
!process.env['VITEST_WORKER_ID'];
|
|
275
|
+
if (shouldRunMain) {
|
|
276
|
+
main().catch((err) => {
|
|
277
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
278
|
+
process.stderr.write(`Fatal error: ${message}\n`);
|
|
279
|
+
process.exit(1);
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=cli-run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-run.js","sourceRoot":"","sources":["../src/cli-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Script runner for rill-run.
|
|
3
|
+
* Builds runtime options, executes rill scripts, and maps results to exit codes.
|
|
4
|
+
*/
|
|
5
|
+
import { type SchemeResolver } from '@rcrsr/rill';
|
|
6
|
+
import type { NestedExtConfig, RillConfigFile } from '@rcrsr/rill-config';
|
|
7
|
+
import type { RunCliOptions } from './types.js';
|
|
8
|
+
export interface RunResult {
|
|
9
|
+
readonly exitCode: number;
|
|
10
|
+
readonly output?: string | undefined;
|
|
11
|
+
readonly errorOutput?: string | undefined;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Build a custom module scheme resolver.
|
|
15
|
+
* - ID 'ext' → returns generated bindings source
|
|
16
|
+
* - ID 'ext.*' → drills into extTree subtree and returns bindings for that node
|
|
17
|
+
* - All other IDs → delegates to moduleResolver with the modules config
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildModuleResolver(bindingsSource: string, modulesConfig: Record<string, string>, extTree: NestedExtConfig): SchemeResolver;
|
|
20
|
+
/**
|
|
21
|
+
* Run a rill script file with the given extension tree and config.
|
|
22
|
+
*/
|
|
23
|
+
export declare function runScript(opts: RunCliOptions, config: RillConfigFile, extTree: NestedExtConfig, bindingsSrc: string, disposes: Array<() => void | Promise<void>>): Promise<RunResult>;
|
|
24
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/run/runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAWL,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMhD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AA4CD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,OAAO,EAAE,eAAe,GACvB,cAAc,CAwChB;AA6ID;;GAEG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAC1C,OAAO,CAAC,SAAS,CAAC,CA4FpB"}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Script runner for rill-run.
|
|
3
|
+
* Builds runtime options, executes rill scripts, and maps results to exit codes.
|
|
4
|
+
*/
|
|
5
|
+
import { readFileSync } from 'node:fs';
|
|
6
|
+
import { parse, execute, createRuntimeContext, extResolver, moduleResolver, toNative, isTuple, } from '@rcrsr/rill';
|
|
7
|
+
import { ParseError, RillError, getCallStack } from '@rcrsr/rill';
|
|
8
|
+
import { buildExtensionBindings, isLeafFunction } from '@rcrsr/rill-config';
|
|
9
|
+
// ============================================================
|
|
10
|
+
// TREE CONVERSION
|
|
11
|
+
// ============================================================
|
|
12
|
+
function convertTreeToRillValues(tree) {
|
|
13
|
+
const result = {};
|
|
14
|
+
for (const [key, value] of Object.entries(tree)) {
|
|
15
|
+
if (typeof value === 'object' &&
|
|
16
|
+
value !== null &&
|
|
17
|
+
'fn' in value &&
|
|
18
|
+
typeof value.fn === 'function' &&
|
|
19
|
+
'params' in value) {
|
|
20
|
+
const rillFn = value;
|
|
21
|
+
result[key] = {
|
|
22
|
+
__type: 'callable',
|
|
23
|
+
kind: 'application',
|
|
24
|
+
isProperty: false,
|
|
25
|
+
fn: rillFn.fn,
|
|
26
|
+
params: rillFn.params,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
result[key] = convertTreeToRillValues(value);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
// ============================================================
|
|
36
|
+
// MODULE RESOLVER
|
|
37
|
+
// ============================================================
|
|
38
|
+
/**
|
|
39
|
+
* Build a custom module scheme resolver.
|
|
40
|
+
* - ID 'ext' → returns generated bindings source
|
|
41
|
+
* - ID 'ext.*' → drills into extTree subtree and returns bindings for that node
|
|
42
|
+
* - All other IDs → delegates to moduleResolver with the modules config
|
|
43
|
+
*/
|
|
44
|
+
export function buildModuleResolver(bindingsSource, modulesConfig, extTree) {
|
|
45
|
+
const moduleConfig = {};
|
|
46
|
+
for (const [id, path] of Object.entries(modulesConfig)) {
|
|
47
|
+
if (id !== 'ext') {
|
|
48
|
+
moduleConfig[id] = path;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const resolver = (resource) => {
|
|
52
|
+
if (resource === 'ext') {
|
|
53
|
+
return { kind: 'source', text: bindingsSource };
|
|
54
|
+
}
|
|
55
|
+
if (resource.startsWith('ext.')) {
|
|
56
|
+
const suffix = resource.slice('ext.'.length);
|
|
57
|
+
const segments = suffix.split('.');
|
|
58
|
+
let node = extTree;
|
|
59
|
+
let fullyResolved = true;
|
|
60
|
+
for (const segment of segments) {
|
|
61
|
+
const child = node[segment];
|
|
62
|
+
if (child === undefined) {
|
|
63
|
+
fullyResolved = false;
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
if (isLeafFunction(child)) {
|
|
67
|
+
fullyResolved = false;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
node = child;
|
|
71
|
+
}
|
|
72
|
+
if (fullyResolved && node !== extTree) {
|
|
73
|
+
const subtreeSource = buildExtensionBindings(node, suffix);
|
|
74
|
+
return { kind: 'source', text: subtreeSource };
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return moduleResolver(resource, moduleConfig);
|
|
78
|
+
};
|
|
79
|
+
return resolver;
|
|
80
|
+
}
|
|
81
|
+
// ============================================================
|
|
82
|
+
// EXIT CODE MAPPING
|
|
83
|
+
// ============================================================
|
|
84
|
+
function mapResultToRunResult(result, format) {
|
|
85
|
+
if (isTuple(result)) {
|
|
86
|
+
const tuple = result;
|
|
87
|
+
if (tuple.entries.length === 2) {
|
|
88
|
+
const code = tuple.entries[0];
|
|
89
|
+
const message = tuple.entries[1];
|
|
90
|
+
if (typeof code === 'number' && typeof message === 'string') {
|
|
91
|
+
return {
|
|
92
|
+
exitCode: code,
|
|
93
|
+
output: message.length > 0 ? message : undefined,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (result === false || result === '') {
|
|
99
|
+
return { exitCode: 1 };
|
|
100
|
+
}
|
|
101
|
+
const formatted = formatOutput(result, format);
|
|
102
|
+
return { exitCode: 0, output: formatted };
|
|
103
|
+
}
|
|
104
|
+
function formatOutput(value, format) {
|
|
105
|
+
const native = toNative(value);
|
|
106
|
+
if (format === 'json' || format === 'compact') {
|
|
107
|
+
return JSON.stringify(native.value);
|
|
108
|
+
}
|
|
109
|
+
if (typeof value === 'string') {
|
|
110
|
+
return value;
|
|
111
|
+
}
|
|
112
|
+
return JSON.stringify(native.value, null, 2);
|
|
113
|
+
}
|
|
114
|
+
// ============================================================
|
|
115
|
+
// ERROR FORMATTING
|
|
116
|
+
// ============================================================
|
|
117
|
+
function resolveSourceSnippet(location, sources, filePath) {
|
|
118
|
+
if (sources.script !== undefined) {
|
|
119
|
+
const lines = sources.script.split('\n');
|
|
120
|
+
const idx = location.line - 1;
|
|
121
|
+
if (idx >= 0 &&
|
|
122
|
+
idx < lines.length &&
|
|
123
|
+
location.column <= lines[idx].length + 1) {
|
|
124
|
+
return {
|
|
125
|
+
label: filePath ?? '<script>',
|
|
126
|
+
...(lines[idx] !== undefined ? { sourceLine: lines[idx] } : {}),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (sources.bindings !== undefined) {
|
|
131
|
+
const lines = sources.bindings.split('\n');
|
|
132
|
+
const idx = location.line - 1;
|
|
133
|
+
if (idx >= 0 && idx < lines.length) {
|
|
134
|
+
return {
|
|
135
|
+
label: '<generated bindings>',
|
|
136
|
+
...(lines[idx] !== undefined ? { sourceLine: lines[idx] } : {}),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return { label: filePath ?? '<unknown>' };
|
|
141
|
+
}
|
|
142
|
+
function formatRillError(error, verbose, maxStackDepth, filePath, sources) {
|
|
143
|
+
const data = error.toData();
|
|
144
|
+
const parts = [];
|
|
145
|
+
parts.push(`${data.errorId}: ${data.message}`);
|
|
146
|
+
if (data.location !== undefined && sources !== undefined) {
|
|
147
|
+
const match = resolveSourceSnippet(data.location, sources, filePath);
|
|
148
|
+
parts.push(` at ${match.label}:${data.location.line}:${data.location.column}`);
|
|
149
|
+
if (match.sourceLine !== undefined) {
|
|
150
|
+
parts.push('');
|
|
151
|
+
const lineNum = String(data.location.line);
|
|
152
|
+
parts.push(` ${lineNum} | ${match.sourceLine}`);
|
|
153
|
+
const caretCol = Math.max(0, data.location.column - 1);
|
|
154
|
+
parts.push(` ${' '.repeat(lineNum.length)} | ${' '.repeat(caretCol)}^`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else if (data.location !== undefined) {
|
|
158
|
+
parts.push(` at line ${data.location.line}, column ${data.location.column}`);
|
|
159
|
+
}
|
|
160
|
+
if (verbose &&
|
|
161
|
+
data.context !== undefined &&
|
|
162
|
+
Object.keys(data.context).length > 0) {
|
|
163
|
+
parts.push(` context: ${JSON.stringify(data.context, null, 2)}`);
|
|
164
|
+
}
|
|
165
|
+
if (verbose && data.helpUrl !== undefined) {
|
|
166
|
+
parts.push(` help: ${data.helpUrl}`);
|
|
167
|
+
}
|
|
168
|
+
const frames = getCallStack(error);
|
|
169
|
+
const visibleFrames = frames.slice(0, maxStackDepth);
|
|
170
|
+
for (const frame of visibleFrames) {
|
|
171
|
+
const loc = `${frame.location.start.line}:${frame.location.start.column}`;
|
|
172
|
+
const name = frame.functionName !== undefined ? ` in ${frame.functionName}` : '';
|
|
173
|
+
const ctx = frame.context !== undefined ? ` (${frame.context})` : '';
|
|
174
|
+
parts.push(` at ${loc}${name}${ctx}`);
|
|
175
|
+
}
|
|
176
|
+
return parts.join('\n');
|
|
177
|
+
}
|
|
178
|
+
// ============================================================
|
|
179
|
+
// RUNNER
|
|
180
|
+
// ============================================================
|
|
181
|
+
/**
|
|
182
|
+
* Run a rill script file with the given extension tree and config.
|
|
183
|
+
*/
|
|
184
|
+
export async function runScript(opts, config, extTree, bindingsSrc, disposes) {
|
|
185
|
+
if (!opts.scriptPath) {
|
|
186
|
+
return { exitCode: 1, errorOutput: 'no script path provided' };
|
|
187
|
+
}
|
|
188
|
+
let source;
|
|
189
|
+
try {
|
|
190
|
+
source = readFileSync(opts.scriptPath, 'utf-8');
|
|
191
|
+
}
|
|
192
|
+
catch (err) {
|
|
193
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
194
|
+
return { exitCode: 1, errorOutput: message };
|
|
195
|
+
}
|
|
196
|
+
const extConfig = convertTreeToRillValues(extTree);
|
|
197
|
+
const modulesConfig = config.modules ?? {};
|
|
198
|
+
const customModuleResolver = buildModuleResolver(bindingsSrc, modulesConfig, extTree);
|
|
199
|
+
const runtimeOptions = {
|
|
200
|
+
resolvers: {
|
|
201
|
+
ext: extResolver,
|
|
202
|
+
module: customModuleResolver,
|
|
203
|
+
},
|
|
204
|
+
configurations: {
|
|
205
|
+
resolvers: {
|
|
206
|
+
ext: extConfig,
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
parseSource: parse,
|
|
210
|
+
callbacks: {
|
|
211
|
+
onLog: (msg) => {
|
|
212
|
+
process.stdout.write(msg + '\n');
|
|
213
|
+
},
|
|
214
|
+
},
|
|
215
|
+
maxCallStackDepth: opts.maxStackDepth,
|
|
216
|
+
};
|
|
217
|
+
const ctx = createRuntimeContext(runtimeOptions);
|
|
218
|
+
if (opts.scriptArgs.length > 0) {
|
|
219
|
+
ctx.pipeValue = opts.scriptArgs.join(' ');
|
|
220
|
+
}
|
|
221
|
+
let ast;
|
|
222
|
+
try {
|
|
223
|
+
ast = parse(source);
|
|
224
|
+
}
|
|
225
|
+
catch (err) {
|
|
226
|
+
if (err instanceof ParseError) {
|
|
227
|
+
const formatted = formatRillError(err, opts.verbose, opts.maxStackDepth, opts.scriptPath, { script: source });
|
|
228
|
+
return { exitCode: 1, errorOutput: formatted };
|
|
229
|
+
}
|
|
230
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
231
|
+
return { exitCode: 1, errorOutput: message };
|
|
232
|
+
}
|
|
233
|
+
let result;
|
|
234
|
+
try {
|
|
235
|
+
const execResult = await execute(ast, ctx);
|
|
236
|
+
result = execResult.result;
|
|
237
|
+
}
|
|
238
|
+
catch (err) {
|
|
239
|
+
if (err instanceof RillError) {
|
|
240
|
+
const formatted = formatRillError(err, opts.verbose, opts.maxStackDepth, opts.scriptPath, { script: source, bindings: bindingsSrc });
|
|
241
|
+
return { exitCode: 1, errorOutput: formatted };
|
|
242
|
+
}
|
|
243
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
244
|
+
return { exitCode: 1, errorOutput: message };
|
|
245
|
+
}
|
|
246
|
+
finally {
|
|
247
|
+
for (const dispose of disposes) {
|
|
248
|
+
try {
|
|
249
|
+
await dispose();
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
// Ignore dispose errors
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return mapResultToRunResult(result, opts.format);
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/run/runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACL,KAAK,EACL,OAAO,EACP,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,QAAQ,EACR,OAAO,GAKR,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAc5E,+DAA+D;AAC/D,kBAAkB;AAClB,+DAA+D;AAE/D,SAAS,uBAAuB,CAC9B,IAAqB;IAErB,MAAM,MAAM,GAA8B,EAAE,CAAC;IAE7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IACE,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,KAAK,IAAI;YACd,IAAI,IAAI,KAAK;YACb,OAAQ,KAAyB,CAAC,EAAE,KAAK,UAAU;YACnD,QAAQ,IAAI,KAAK,EACjB,CAAC;YACD,MAAM,MAAM,GAAG,KAGd,CAAC;YACF,MAAM,CAAC,GAAG,CAAC,GAAG;gBACZ,MAAM,EAAE,UAAmB;gBAC3B,IAAI,EAAE,aAAsB;gBAC5B,UAAU,EAAE,KAAK;gBACjB,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,MAAM,EAAE,MAAM,CAAC,MAAM;aACE,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,uBAAuB,CACnC,KAAwB,CACD,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+DAA+D;AAC/D,kBAAkB;AAClB,+DAA+D;AAE/D;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,cAAsB,EACtB,aAAqC,EACrC,OAAwB;IAExB,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QACvD,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAmB,CAAC,QAAgB,EAAE,EAAE;QACpD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;QAClD,CAAC;QACD,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,IAAI,GAAuD,OAAO,CAAC;YACvE,IAAI,aAAa,GAAG,IAAI,CAAC;YACzB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAI,IAAwB,CAAC,OAAO,CAAC,CAAC;gBACjD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,aAAa,GAAG,KAAK,CAAC;oBACtB,MAAM;gBACR,CAAC;gBACD,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1B,aAAa,GAAG,KAAK,CAAC;oBACtB,MAAM;gBACR,CAAC;gBACD,IAAI,GAAG,KAAwB,CAAC;YAClC,CAAC;YACD,IAAI,aAAa,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACtC,MAAM,aAAa,GAAG,sBAAsB,CAC1C,IAAuB,EACvB,MAAM,CACP,CAAC;gBACF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;YACjD,CAAC;QACH,CAAC;QACD,OAAO,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC,CAAC;IACF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,+DAA+D;AAC/D,oBAAoB;AACpB,+DAA+D;AAE/D,SAAS,oBAAoB,CAC3B,MAAiB,EACjB,MAA+B;IAE/B,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,MAAmB,CAAC;QAClC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC5D,OAAO;oBACL,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;iBACjD,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QACtC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,YAAY,CACnB,KAAgB,EAChB,MAA+B;IAE/B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D,SAAS,oBAAoB,CAC3B,QAA0C,EAC1C,OAA+C,EAC/C,QAAiB;IAEjB,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;QAC9B,IACE,GAAG,IAAI,CAAC;YACR,GAAG,GAAG,KAAK,CAAC,MAAM;YAClB,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAE,CAAC,MAAM,GAAG,CAAC,EACzC,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,QAAQ,IAAI,UAAU;gBAC7B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;QAC9B,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACnC,OAAO;gBACL,KAAK,EAAE,sBAAsB;gBAC7B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,IAAI,WAAW,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,eAAe,CACtB,KAAgB,EAChB,OAAgB,EAChB,aAAqB,EACrB,QAAiB,EACjB,OAAgD;IAEhD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAE/C,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CACR,QAAQ,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CACpE,CAAC;QACF,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACvD,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CACR,aAAa,IAAI,CAAC,QAAQ,CAAC,IAAI,YAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAClE,CAAC;IACJ,CAAC;IAED,IACE,OAAO;QACP,IAAI,CAAC,OAAO,KAAK,SAAS;QAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EACpC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IACrD,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC1E,MAAM,IAAI,GACR,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,+DAA+D;AAC/D,SAAS;AACT,+DAA+D;AAE/D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAmB,EACnB,MAAsB,EACtB,OAAwB,EACxB,WAAmB,EACnB,QAA2C;IAE3C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,SAAS,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAC3C,MAAM,oBAAoB,GAAG,mBAAmB,CAC9C,WAAW,EACX,aAAa,EACb,OAAO,CACR,CAAC;IAEF,MAAM,cAAc,GAAmB;QACrC,SAAS,EAAE;YACT,GAAG,EAAE,WAAW;YAChB,MAAM,EAAE,oBAAoB;SAC7B;QACD,cAAc,EAAE;YACd,SAAS,EAAE;gBACT,GAAG,EAAE,SAAS;aACf;SACF;QACD,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE;YACT,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE;gBACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;YACnC,CAAC;SACF;QACD,iBAAiB,EAAE,IAAI,CAAC,aAAa;KACtC,CAAC;IAEF,MAAM,GAAG,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAEjD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,GAA6B,CAAC;IAClC,IAAI,CAAC;QACH,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,eAAe,CAC/B,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,UAAU,EACf,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB,CAAC;YACF,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QACjD,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,MAAiB,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC3C,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAI,GAAG,YAAY,SAAS,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,eAAe,CAC/B,GAAG,EACH,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,UAAU,EACf,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,CAC1C,CAAC;YACF,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QACjD,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAC/C,CAAC;YAAS,CAAC;QACT,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,OAAO,EAAE,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for rill-run.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Parsed CLI options from process.argv.
|
|
6
|
+
*/
|
|
7
|
+
export interface RunCliOptions {
|
|
8
|
+
readonly scriptPath?: string | undefined;
|
|
9
|
+
readonly scriptArgs: string[];
|
|
10
|
+
readonly config: string;
|
|
11
|
+
readonly format: 'human' | 'json' | 'compact';
|
|
12
|
+
readonly verbose: boolean;
|
|
13
|
+
readonly maxStackDepth: number;
|
|
14
|
+
readonly explain?: string | undefined;
|
|
15
|
+
readonly createBindings?: boolean | undefined;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/run/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/run/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rcrsr/rill-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "CLI tools for the rill scripting language",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Andre Bremer",
|
|
@@ -15,11 +15,14 @@
|
|
|
15
15
|
"bin": {
|
|
16
16
|
"rill-exec": "./dist/cli-exec.js",
|
|
17
17
|
"rill-eval": "./dist/cli-eval.js",
|
|
18
|
-
"rill-check": "./dist/cli-check.js"
|
|
18
|
+
"rill-check": "./dist/cli-check.js",
|
|
19
|
+
"rill-run": "./dist/cli-run.js"
|
|
19
20
|
},
|
|
20
21
|
"dependencies": {
|
|
22
|
+
"dotenv": "^16.0.0",
|
|
21
23
|
"yaml": "^2.8.2",
|
|
22
|
-
"@rcrsr/rill": "^0.
|
|
24
|
+
"@rcrsr/rill": "^0.12.0",
|
|
25
|
+
"@rcrsr/rill-config": "^0.12.0"
|
|
23
26
|
},
|
|
24
27
|
"files": [
|
|
25
28
|
"dist"
|