@taliesinb/mash 0.0.0-stage → 0.1.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/LICENSE +21 -0
- package/README.md +275 -2
- package/bin/mash.ts +253 -0
- package/dist/bin/mash.d.ts +39 -0
- package/dist/bin/mash.d.ts.map +1 -0
- package/dist/bin/mash.js +281 -0
- package/dist/bin/mash.js.map +1 -0
- package/dist/src/analysis/analyze.d.ts +97 -0
- package/dist/src/analysis/analyze.d.ts.map +1 -0
- package/dist/src/analysis/analyze.js +1406 -0
- package/dist/src/analysis/analyze.js.map +1 -0
- package/dist/src/analysis/fs.d.ts +39 -0
- package/dist/src/analysis/fs.d.ts.map +1 -0
- package/dist/src/analysis/fs.js +117 -0
- package/dist/src/analysis/fs.js.map +1 -0
- package/dist/src/analysis/outputs.d.ts +16 -0
- package/dist/src/analysis/outputs.d.ts.map +1 -0
- package/dist/src/analysis/outputs.js +277 -0
- package/dist/src/analysis/outputs.js.map +1 -0
- package/dist/src/analysis/value.d.ts +76 -0
- package/dist/src/analysis/value.d.ts.map +1 -0
- package/dist/src/analysis/value.js +248 -0
- package/dist/src/analysis/value.js.map +1 -0
- package/dist/src/behaviors/defs/core.d.ts +15 -0
- package/dist/src/behaviors/defs/core.d.ts.map +1 -0
- package/dist/src/behaviors/defs/core.js +1084 -0
- package/dist/src/behaviors/defs/core.js.map +1 -0
- package/dist/src/behaviors/defs/devtools.d.ts +9 -0
- package/dist/src/behaviors/defs/devtools.d.ts.map +1 -0
- package/dist/src/behaviors/defs/devtools.js +432 -0
- package/dist/src/behaviors/defs/devtools.js.map +1 -0
- package/dist/src/behaviors/defs/macos.d.ts +12 -0
- package/dist/src/behaviors/defs/macos.d.ts.map +1 -0
- package/dist/src/behaviors/defs/macos.js +454 -0
- package/dist/src/behaviors/defs/macos.js.map +1 -0
- package/dist/src/behaviors/defs/tools.d.ts +9 -0
- package/dist/src/behaviors/defs/tools.d.ts.map +1 -0
- package/dist/src/behaviors/defs/tools.js +639 -0
- package/dist/src/behaviors/defs/tools.js.map +1 -0
- package/dist/src/behaviors/dsl.d.ts +95 -0
- package/dist/src/behaviors/dsl.d.ts.map +1 -0
- package/dist/src/behaviors/dsl.js +267 -0
- package/dist/src/behaviors/dsl.js.map +1 -0
- package/dist/src/behaviors/index.d.ts +12 -0
- package/dist/src/behaviors/index.d.ts.map +1 -0
- package/dist/src/behaviors/index.js +18 -0
- package/dist/src/behaviors/index.js.map +1 -0
- package/dist/src/behaviors/registry.d.ts +45 -0
- package/dist/src/behaviors/registry.d.ts.map +1 -0
- package/dist/src/behaviors/registry.js +266 -0
- package/dist/src/behaviors/registry.js.map +1 -0
- package/dist/src/behaviors/roles.d.ts +29 -0
- package/dist/src/behaviors/roles.d.ts.map +1 -0
- package/dist/src/behaviors/roles.js +198 -0
- package/dist/src/behaviors/roles.js.map +1 -0
- package/dist/src/behaviors/types.d.ts +120 -0
- package/dist/src/behaviors/types.d.ts.map +1 -0
- package/dist/src/behaviors/types.js +12 -0
- package/dist/src/behaviors/types.js.map +1 -0
- package/dist/src/index.d.ts +27 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +24 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/integrations/deepsea.d.ts +121 -0
- package/dist/src/integrations/deepsea.d.ts.map +1 -0
- package/dist/src/integrations/deepsea.js +199 -0
- package/dist/src/integrations/deepsea.js.map +1 -0
- package/dist/src/machine.d.ts +139 -0
- package/dist/src/machine.d.ts.map +1 -0
- package/dist/src/machine.js +400 -0
- package/dist/src/machine.js.map +1 -0
- package/dist/src/parser/ast.d.ts +369 -0
- package/dist/src/parser/ast.d.ts.map +1 -0
- package/dist/src/parser/ast.js +17 -0
- package/dist/src/parser/ast.js.map +1 -0
- package/dist/src/parser/parser.d.ts +48 -0
- package/dist/src/parser/parser.d.ts.map +1 -0
- package/dist/src/parser/parser.js +1950 -0
- package/dist/src/parser/parser.js.map +1 -0
- package/dist/src/policy/effects.d.ts +86 -0
- package/dist/src/policy/effects.d.ts.map +1 -0
- package/dist/src/policy/effects.js +53 -0
- package/dist/src/policy/effects.js.map +1 -0
- package/dist/src/policy/policy.d.ts +130 -0
- package/dist/src/policy/policy.d.ts.map +1 -0
- package/dist/src/policy/policy.js +532 -0
- package/dist/src/policy/policy.js.map +1 -0
- package/dist/src/printer/doc.d.ts +151 -0
- package/dist/src/printer/doc.d.ts.map +1 -0
- package/dist/src/printer/doc.js +409 -0
- package/dist/src/printer/doc.js.map +1 -0
- package/dist/src/printer/highlight.d.ts +53 -0
- package/dist/src/printer/highlight.d.ts.map +1 -0
- package/dist/src/printer/highlight.js +339 -0
- package/dist/src/printer/highlight.js.map +1 -0
- package/dist/src/printer/html.d.ts +72 -0
- package/dist/src/printer/html.d.ts.map +1 -0
- package/dist/src/printer/html.js +423 -0
- package/dist/src/printer/html.js.map +1 -0
- package/dist/src/printer/print.d.ts +63 -0
- package/dist/src/printer/print.d.ts.map +1 -0
- package/dist/src/printer/print.js +484 -0
- package/dist/src/printer/print.js.map +1 -0
- package/dist/src/printer/summary.d.ts +50 -0
- package/dist/src/printer/summary.d.ts.map +1 -0
- package/dist/src/printer/summary.js +621 -0
- package/dist/src/printer/summary.js.map +1 -0
- package/dist/src/trace/events.d.ts +183 -0
- package/dist/src/trace/events.d.ts.map +1 -0
- package/dist/src/trace/events.js +9 -0
- package/dist/src/trace/events.js.map +1 -0
- package/dist/src/trace/progress.d.ts +58 -0
- package/dist/src/trace/progress.d.ts.map +1 -0
- package/dist/src/trace/progress.js +83 -0
- package/dist/src/trace/progress.js.map +1 -0
- package/dist/src/vm/arith.d.ts +29 -0
- package/dist/src/vm/arith.d.ts.map +1 -0
- package/dist/src/vm/arith.js +258 -0
- package/dist/src/vm/arith.js.map +1 -0
- package/dist/src/vm/builtins.d.ts +31 -0
- package/dist/src/vm/builtins.d.ts.map +1 -0
- package/dist/src/vm/builtins.js +1773 -0
- package/dist/src/vm/builtins.js.map +1 -0
- package/dist/src/vm/emulate.d.ts +75 -0
- package/dist/src/vm/emulate.d.ts.map +1 -0
- package/dist/src/vm/emulate.js +380 -0
- package/dist/src/vm/emulate.js.map +1 -0
- package/dist/src/vm/expand.d.ts +68 -0
- package/dist/src/vm/expand.d.ts.map +1 -0
- package/dist/src/vm/expand.js +744 -0
- package/dist/src/vm/expand.js.map +1 -0
- package/dist/src/vm/external.d.ts +34 -0
- package/dist/src/vm/external.d.ts.map +1 -0
- package/dist/src/vm/external.js +228 -0
- package/dist/src/vm/external.js.map +1 -0
- package/dist/src/vm/fifo.d.ts +66 -0
- package/dist/src/vm/fifo.d.ts.map +1 -0
- package/dist/src/vm/fifo.js +232 -0
- package/dist/src/vm/fifo.js.map +1 -0
- package/dist/src/vm/interp.d.ts +209 -0
- package/dist/src/vm/interp.d.ts.map +1 -0
- package/dist/src/vm/interp.js +1641 -0
- package/dist/src/vm/interp.js.map +1 -0
- package/dist/src/vm/io.d.ts +180 -0
- package/dist/src/vm/io.d.ts.map +1 -0
- package/dist/src/vm/io.js +502 -0
- package/dist/src/vm/io.js.map +1 -0
- package/dist/src/vm/pattern.d.ts +46 -0
- package/dist/src/vm/pattern.d.ts.map +1 -0
- package/dist/src/vm/pattern.js +498 -0
- package/dist/src/vm/pattern.js.map +1 -0
- package/dist/src/vm/proc.d.ts +94 -0
- package/dist/src/vm/proc.d.ts.map +1 -0
- package/dist/src/vm/proc.js +130 -0
- package/dist/src/vm/proc.js.map +1 -0
- package/dist/src/vm/state.d.ts +104 -0
- package/dist/src/vm/state.d.ts.map +1 -0
- package/dist/src/vm/state.js +233 -0
- package/dist/src/vm/state.js.map +1 -0
- package/dist/src/vm/test.d.ts +11 -0
- package/dist/src/vm/test.d.ts.map +1 -0
- package/dist/src/vm/test.js +277 -0
- package/dist/src/vm/test.js.map +1 -0
- package/package.json +63 -4
- package/src/analysis/analyze.ts +1395 -0
- package/src/analysis/fs.ts +121 -0
- package/src/analysis/outputs.ts +242 -0
- package/src/analysis/value.ts +264 -0
- package/src/behaviors/defs/core.ts +970 -0
- package/src/behaviors/defs/devtools.ts +400 -0
- package/src/behaviors/defs/macos.ts +426 -0
- package/src/behaviors/defs/tools.ts +596 -0
- package/src/behaviors/dsl.ts +293 -0
- package/src/behaviors/index.ts +19 -0
- package/src/behaviors/registry.ts +261 -0
- package/src/behaviors/roles.ts +187 -0
- package/src/behaviors/types.ts +127 -0
- package/src/index.ts +27 -0
- package/src/integrations/deepsea.ts +259 -0
- package/src/machine.ts +483 -0
- package/src/parser/ast.ts +472 -0
- package/src/parser/parser.ts +1826 -0
- package/src/policy/effects.ts +102 -0
- package/src/policy/policy.ts +578 -0
- package/src/printer/doc.ts +454 -0
- package/src/printer/highlight.ts +283 -0
- package/src/printer/html.ts +441 -0
- package/src/printer/print.ts +528 -0
- package/src/printer/summary.ts +601 -0
- package/src/trace/events.ts +102 -0
- package/src/trace/progress.ts +119 -0
- package/src/vm/arith.ts +236 -0
- package/src/vm/builtins.ts +1590 -0
- package/src/vm/emulate.ts +337 -0
- package/src/vm/expand.ts +721 -0
- package/src/vm/external.ts +265 -0
- package/src/vm/fifo.ts +226 -0
- package/src/vm/interp.ts +1623 -0
- package/src/vm/io.ts +570 -0
- package/src/vm/pattern.ts +477 -0
- package/src/vm/proc.ts +147 -0
- package/src/vm/state.ts +267 -0
- package/src/vm/test.ts +253 -0
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `[[ ... ]]` and `test` / `[` evaluation.
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'node:fs';
|
|
5
|
+
import * as path from 'node:path';
|
|
6
|
+
import { ArithError } from "./arith.js";
|
|
7
|
+
import { matchPattern } from "./pattern.js";
|
|
8
|
+
import { CommandError } from "./proc.js";
|
|
9
|
+
import { newVar, SET_O_NAMES } from "./state.js";
|
|
10
|
+
function statSafe(p, link = false) {
|
|
11
|
+
try {
|
|
12
|
+
return link ? fs.lstatSync(p) : fs.statSync(p);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function access(p, mode) {
|
|
19
|
+
try {
|
|
20
|
+
fs.accessSync(p, mode);
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function fileTest(op, operand, proc) {
|
|
28
|
+
const p = path.resolve(proc.state.cwd, operand);
|
|
29
|
+
switch (op) {
|
|
30
|
+
case '-e':
|
|
31
|
+
case '-a': return statSafe(p) !== null;
|
|
32
|
+
case '-f': return statSafe(p)?.isFile() ?? false;
|
|
33
|
+
case '-d': return statSafe(p)?.isDirectory() ?? false;
|
|
34
|
+
case '-h':
|
|
35
|
+
case '-L': return statSafe(p, true)?.isSymbolicLink() ?? false;
|
|
36
|
+
case '-s': return (statSafe(p)?.size ?? 0) > 0;
|
|
37
|
+
case '-r': return access(p, fs.constants.R_OK);
|
|
38
|
+
case '-w': return access(p, fs.constants.W_OK);
|
|
39
|
+
case '-x': return access(p, fs.constants.X_OK);
|
|
40
|
+
case '-p': return statSafe(p)?.isFIFO() ?? false;
|
|
41
|
+
case '-S': return statSafe(p)?.isSocket() ?? false;
|
|
42
|
+
case '-b': return statSafe(p)?.isBlockDevice() ?? false;
|
|
43
|
+
case '-c': return statSafe(p)?.isCharacterDevice() ?? false;
|
|
44
|
+
case '-g': return ((statSafe(p)?.mode ?? 0) & 0o2000) !== 0;
|
|
45
|
+
case '-u': return ((statSafe(p)?.mode ?? 0) & 0o4000) !== 0;
|
|
46
|
+
case '-k': return ((statSafe(p)?.mode ?? 0) & 0o1000) !== 0;
|
|
47
|
+
case '-O': return statSafe(p)?.uid === process.getuid?.();
|
|
48
|
+
case '-G': return statSafe(p)?.gid === process.getgid?.();
|
|
49
|
+
case '-N': {
|
|
50
|
+
const s = statSafe(p);
|
|
51
|
+
return s !== null && s.mtimeMs > s.atimeMs;
|
|
52
|
+
}
|
|
53
|
+
case '-t': return false;
|
|
54
|
+
default: throw new CommandError(`${op}: unary operator expected`, 2);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function unaryTest(op, operand, proc) {
|
|
58
|
+
switch (op) {
|
|
59
|
+
case '-n': return operand !== '';
|
|
60
|
+
case '-z': return operand === '';
|
|
61
|
+
case '-v': {
|
|
62
|
+
const m = /^([A-Za-z_][A-Za-z0-9_]*)(?:\[(.*)\])?$/.exec(operand);
|
|
63
|
+
if (!m)
|
|
64
|
+
return false;
|
|
65
|
+
const v = proc.state.lookup(m[1]);
|
|
66
|
+
if (!v || v.value === null)
|
|
67
|
+
return false;
|
|
68
|
+
if (m[2] === undefined)
|
|
69
|
+
return true;
|
|
70
|
+
if (v.value.kind === 'indexed')
|
|
71
|
+
return v.value.values.has(Number(m[2]));
|
|
72
|
+
if (v.value.kind === 'assoc')
|
|
73
|
+
return v.value.values.has(m[2]);
|
|
74
|
+
return m[2] === '0';
|
|
75
|
+
}
|
|
76
|
+
case '-o': {
|
|
77
|
+
const opt = SET_O_NAMES[operand];
|
|
78
|
+
return opt !== undefined && proc.state.options[opt];
|
|
79
|
+
}
|
|
80
|
+
case '-t': return false;
|
|
81
|
+
default: return fileTest(op, operand, proc);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function intOf(s) {
|
|
85
|
+
const t = s.trim();
|
|
86
|
+
if (!/^[+-]?\d+$/.test(t))
|
|
87
|
+
throw new CommandError(`${s}: integer expression expected`, 2);
|
|
88
|
+
return BigInt(t);
|
|
89
|
+
}
|
|
90
|
+
function binaryTest(op, a, b, proc) {
|
|
91
|
+
switch (op) {
|
|
92
|
+
case '=':
|
|
93
|
+
case '==': return a === b;
|
|
94
|
+
case '!=': return a !== b;
|
|
95
|
+
case '<': return a < b;
|
|
96
|
+
case '>': return a > b;
|
|
97
|
+
case '-eq': return intOf(a) === intOf(b);
|
|
98
|
+
case '-ne': return intOf(a) !== intOf(b);
|
|
99
|
+
case '-lt': return intOf(a) < intOf(b);
|
|
100
|
+
case '-le': return intOf(a) <= intOf(b);
|
|
101
|
+
case '-gt': return intOf(a) > intOf(b);
|
|
102
|
+
case '-ge': return intOf(a) >= intOf(b);
|
|
103
|
+
case '-nt':
|
|
104
|
+
case '-ot': {
|
|
105
|
+
const sa = statSafe(path.resolve(proc.state.cwd, a));
|
|
106
|
+
const sb = statSafe(path.resolve(proc.state.cwd, b));
|
|
107
|
+
if (op === '-nt')
|
|
108
|
+
return sa !== null && (sb === null || sa.mtimeMs > sb.mtimeMs);
|
|
109
|
+
return sb !== null && (sa === null || sa.mtimeMs < sb.mtimeMs);
|
|
110
|
+
}
|
|
111
|
+
case '-ef': {
|
|
112
|
+
const sa = statSafe(path.resolve(proc.state.cwd, a));
|
|
113
|
+
const sb = statSafe(path.resolve(proc.state.cwd, b));
|
|
114
|
+
return sa !== null && sb !== null && sa.dev === sb.dev && sa.ino === sb.ino;
|
|
115
|
+
}
|
|
116
|
+
default: throw new CommandError(`${op}: binary operator expected`, 2);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/** POSIX ERE → JS regex source (character classes, mostly). */
|
|
120
|
+
function ereToJs(re) {
|
|
121
|
+
return re.replace(/\[:(alpha|digit|alnum|upper|lower|space|blank|punct|xdigit|word|cntrl|print|graph):\]/g, (_, c) => ({
|
|
122
|
+
alpha: 'a-zA-Z', digit: '0-9', alnum: 'a-zA-Z0-9', upper: 'A-Z', lower: 'a-z', space: '\\s', blank: ' \\t',
|
|
123
|
+
punct: '!-\\/:-@\\[-`{-~', xdigit: '0-9a-fA-F', word: '\\w', cntrl: '\\x00-\\x1f', print: '\\x20-\\x7e', graph: '\\x21-\\x7e',
|
|
124
|
+
}[c]));
|
|
125
|
+
}
|
|
126
|
+
async function expandRegex(word, proc, interp) {
|
|
127
|
+
let out = '';
|
|
128
|
+
for (const part of word.parts) {
|
|
129
|
+
const w = { ...word, parts: [part] };
|
|
130
|
+
const s = await interp.expander.expandString(w, proc);
|
|
131
|
+
const quoted = part.type === 'SglQuoted' || part.type === 'DblQuoted' || part.type === 'Escaped';
|
|
132
|
+
out += quoted ? s.replace(/[\\^$.*+?()[\]{}|/]/g, (c) => '\\' + c) : s;
|
|
133
|
+
}
|
|
134
|
+
return out;
|
|
135
|
+
}
|
|
136
|
+
const ARITH_OPS = new Set(['-eq', '-ne', '-lt', '-le', '-gt', '-ge']);
|
|
137
|
+
export async function evalCond(e, proc, interp) {
|
|
138
|
+
switch (e.type) {
|
|
139
|
+
case 'CondGroup': return evalCond(e.expr, proc, interp);
|
|
140
|
+
case 'CondNot': return !(await evalCond(e.operand, proc, interp));
|
|
141
|
+
case 'CondAndOr': {
|
|
142
|
+
const l = await evalCond(e.left, proc, interp);
|
|
143
|
+
if (e.op === '&&')
|
|
144
|
+
return l && (await evalCond(e.right, proc, interp));
|
|
145
|
+
return l || (await evalCond(e.right, proc, interp));
|
|
146
|
+
}
|
|
147
|
+
case 'CondWord': return (await interp.expander.expandString(e.word, proc)) !== '';
|
|
148
|
+
case 'CondUnary': return unaryTest(e.op, await interp.expander.expandString(e.operand, proc), proc);
|
|
149
|
+
case 'CondBinary': {
|
|
150
|
+
const left = await interp.expander.expandString(e.left, proc);
|
|
151
|
+
if (e.op === '==' || e.op === '=' || e.op === '!=') {
|
|
152
|
+
const pat = await interp.expander.expandPattern(e.right, proc);
|
|
153
|
+
const m = matchPattern(left, pat, { nocase: proc.state.shopts.has('nocasematch') });
|
|
154
|
+
return e.op === '!=' ? !m : m;
|
|
155
|
+
}
|
|
156
|
+
if (e.op === '=~') {
|
|
157
|
+
const src = await expandRegex(e.right, proc, interp);
|
|
158
|
+
let re;
|
|
159
|
+
try {
|
|
160
|
+
re = new RegExp(ereToJs(src), proc.state.shopts.has('nocasematch') ? 'i' : '');
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
throw new CommandError(`invalid regular expression: ${src}`, 2);
|
|
164
|
+
}
|
|
165
|
+
const m = re.exec(left);
|
|
166
|
+
const values = new Map();
|
|
167
|
+
if (m)
|
|
168
|
+
m.forEach((g, i) => values.set(i, g ?? ''));
|
|
169
|
+
proc.state.globals.set('BASH_REMATCH', newVar({ kind: 'indexed', values }));
|
|
170
|
+
return m !== null;
|
|
171
|
+
}
|
|
172
|
+
const right = await interp.expander.expandString(e.right, proc);
|
|
173
|
+
if (ARITH_OPS.has(e.op)) {
|
|
174
|
+
try {
|
|
175
|
+
const a = await interp.arithText(left, proc);
|
|
176
|
+
const b = await interp.arithText(right, proc);
|
|
177
|
+
return binaryTest(e.op, String(a), String(b), proc);
|
|
178
|
+
}
|
|
179
|
+
catch (err) {
|
|
180
|
+
if (err instanceof ArithError)
|
|
181
|
+
throw new CommandError(err.message, 2);
|
|
182
|
+
throw err;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return binaryTest(e.op, left, right, proc);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
const UNARY = new Set(['-a', '-b', '-c', '-d', '-e', '-f', '-g', '-h', '-k', '-p', '-r', '-s', '-t', '-u', '-w', '-x', '-G', '-L', '-N', '-O', '-S', '-z', '-n', '-o', '-v']);
|
|
190
|
+
const BINARY = new Set(['=', '==', '!=', '<', '>', '-eq', '-ne', '-lt', '-le', '-gt', '-ge', '-nt', '-ot', '-ef']);
|
|
191
|
+
/** `test` / `[`: returns 0 (true), 1 (false); throws CommandError(2) on syntax errors. */
|
|
192
|
+
export function evalTest(args, proc) {
|
|
193
|
+
const tooMany = () => {
|
|
194
|
+
throw new CommandError('too many arguments', 2);
|
|
195
|
+
};
|
|
196
|
+
const parseOr = (a) => {
|
|
197
|
+
// split on -o at top level (lowest precedence), respecting parens
|
|
198
|
+
let depth = 0;
|
|
199
|
+
for (let i = a.length - 1; i >= 0; i--) {
|
|
200
|
+
if (a[i] === ')')
|
|
201
|
+
depth++;
|
|
202
|
+
else if (a[i] === '(')
|
|
203
|
+
depth--;
|
|
204
|
+
else if (a[i] === '-o' && depth === 0 && i > 0 && i < a.length - 1)
|
|
205
|
+
return parseOr(a.slice(0, i)) || parseAnd(a.slice(i + 1));
|
|
206
|
+
}
|
|
207
|
+
return parseAnd(a);
|
|
208
|
+
};
|
|
209
|
+
const parseAnd = (a) => {
|
|
210
|
+
let depth = 0;
|
|
211
|
+
for (let i = a.length - 1; i >= 0; i--) {
|
|
212
|
+
if (a[i] === ')')
|
|
213
|
+
depth++;
|
|
214
|
+
else if (a[i] === '(')
|
|
215
|
+
depth--;
|
|
216
|
+
else if (a[i] === '-a' && depth === 0 && i > 0 && i < a.length - 1)
|
|
217
|
+
return parseAnd(a.slice(0, i)) && prim(a.slice(i + 1), true);
|
|
218
|
+
}
|
|
219
|
+
return prim(a, true);
|
|
220
|
+
};
|
|
221
|
+
const prim = (a, fromLogic = false) => {
|
|
222
|
+
switch (a.length) {
|
|
223
|
+
case 0: return false;
|
|
224
|
+
case 1: return a[0] !== '';
|
|
225
|
+
case 2:
|
|
226
|
+
if (a[0] === '!')
|
|
227
|
+
return !prim(a.slice(1));
|
|
228
|
+
if (UNARY.has(a[0]))
|
|
229
|
+
return unaryTest(a[0], a[1], proc);
|
|
230
|
+
throw new CommandError(`${a[0]}: unary operator expected`, 2);
|
|
231
|
+
case 3:
|
|
232
|
+
if (BINARY.has(a[1]))
|
|
233
|
+
return binaryTest(a[1], a[0], a[2], proc);
|
|
234
|
+
if (a[0] === '!')
|
|
235
|
+
return !prim(a.slice(1));
|
|
236
|
+
if (a[0] === '(' && a[2] === ')')
|
|
237
|
+
return prim([a[1]]);
|
|
238
|
+
if (a[1] === '-a' || a[1] === '-o')
|
|
239
|
+
return parseOr(a);
|
|
240
|
+
throw new CommandError(`${a[1]}: binary operator expected`, 2);
|
|
241
|
+
case 4:
|
|
242
|
+
if (a[0] === '!')
|
|
243
|
+
return !prim(a.slice(1));
|
|
244
|
+
if (a[0] === '(' && a[3] === ')')
|
|
245
|
+
return prim(a.slice(1, 3));
|
|
246
|
+
if (fromLogic || (!a.includes('-a') && !a.includes('-o')))
|
|
247
|
+
tooMany();
|
|
248
|
+
return parseOr(a);
|
|
249
|
+
default:
|
|
250
|
+
if (a[0] === '!' && !a.includes('-a') && !a.includes('-o'))
|
|
251
|
+
return !prim(a.slice(1));
|
|
252
|
+
if (a[0] === '(' && a[a.length - 1] === ')') {
|
|
253
|
+
// only if parens balance as a group
|
|
254
|
+
let depth = 0;
|
|
255
|
+
let wraps = true;
|
|
256
|
+
for (let i = 0; i < a.length - 1; i++) {
|
|
257
|
+
if (a[i] === '(')
|
|
258
|
+
depth++;
|
|
259
|
+
else if (a[i] === ')')
|
|
260
|
+
depth--;
|
|
261
|
+
if (depth === 0) {
|
|
262
|
+
wraps = false;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
if (wraps)
|
|
267
|
+
return prim(a.slice(1, -1));
|
|
268
|
+
}
|
|
269
|
+
if (fromLogic || (!a.includes('-a') && !a.includes('-o')))
|
|
270
|
+
tooMany();
|
|
271
|
+
return parseOr(a);
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
const hasLogic = args.length > 4 && (args.includes('-a') || args.includes('-o'));
|
|
275
|
+
return (hasLogic ? parseOr(args) : prim(args)) ? 0 : 1;
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/vm/test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,65 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taliesinb/mash",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A bash virtual machine: span-preserving parser, static effect analysis, policy-checked streaming execution, behavior definitions for executables, and tracing hooks.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"bash",
|
|
7
|
+
"shell",
|
|
8
|
+
"interpreter",
|
|
9
|
+
"sandbox",
|
|
10
|
+
"static-analysis",
|
|
11
|
+
"agent",
|
|
12
|
+
"tracing"
|
|
13
|
+
],
|
|
14
|
+
"homepage": "https://github.com/taliesinb/mash#readme",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/taliesinb/mash/issues"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "git+https://github.com/taliesinb/mash.git"
|
|
21
|
+
},
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"author": "Taliesin Beynon",
|
|
24
|
+
"type": "module",
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"types": "./dist/src/index.d.ts",
|
|
28
|
+
"default": "./dist/src/index.js"
|
|
29
|
+
},
|
|
30
|
+
"./integrations/deepsea": {
|
|
31
|
+
"types": "./dist/src/integrations/deepsea.d.ts",
|
|
32
|
+
"default": "./dist/src/integrations/deepsea.js"
|
|
33
|
+
},
|
|
34
|
+
"./package.json": "./package.json"
|
|
35
|
+
},
|
|
36
|
+
"types": "./dist/src/index.d.ts",
|
|
37
|
+
"bin": {
|
|
38
|
+
"mash": "dist/bin/mash.js"
|
|
39
|
+
},
|
|
40
|
+
"files": [
|
|
41
|
+
"dist",
|
|
42
|
+
"src",
|
|
43
|
+
"bin",
|
|
44
|
+
"README.md",
|
|
45
|
+
"LICENSE"
|
|
46
|
+
],
|
|
47
|
+
"engines": {
|
|
48
|
+
"node": ">=24"
|
|
49
|
+
},
|
|
50
|
+
"publishConfig": {
|
|
51
|
+
"access": "public"
|
|
52
|
+
},
|
|
53
|
+
"scripts": {
|
|
54
|
+
"test": "vitest run",
|
|
55
|
+
"typecheck": "tsc --noEmit -p .",
|
|
56
|
+
"build": "rm -rf dist && tsc -p tsconfig.build.json",
|
|
57
|
+
"prepublishOnly": "pnpm typecheck && pnpm test && pnpm build",
|
|
58
|
+
"mash": "node bin/mash.ts"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@types/node": "^24.19.2",
|
|
62
|
+
"typescript": "^6.0.3",
|
|
63
|
+
"vitest": "^4.1.12"
|
|
64
|
+
}
|
|
65
|
+
}
|