@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,454 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Behavior definitions for macOS system tools (most also describe their BSD
|
|
3
|
+
* or Linux namesakes well enough): preferences and property lists, launchd,
|
|
4
|
+
* code signing, network configuration, Spotlight, disk images, diagnostics.
|
|
5
|
+
*
|
|
6
|
+
* Query forms are modeled precisely; forms that change system state the
|
|
7
|
+
* policy has no vocabulary for (network settings, services, firewall) are
|
|
8
|
+
* `unknown` with `complete: false`.
|
|
9
|
+
*/
|
|
10
|
+
import { concat, concrete, hole, known, knownPrefix } from "../../analysis/value.js";
|
|
11
|
+
import { define } from "../dsl.js";
|
|
12
|
+
const args = (inv) => inv.argv.slice(1);
|
|
13
|
+
const isDash = (v) => concrete(v) === '-';
|
|
14
|
+
const QUERY = { anyFlags: true, operands: 'arg*', stdin: false };
|
|
15
|
+
const opaque = (detail) => ({ anyFlags: true, operands: 'arg*', opaque: detail, stdin: 'maybe' });
|
|
16
|
+
/** Commands that only print system information. */
|
|
17
|
+
function info(names, summary) {
|
|
18
|
+
return { names, summary, analyze: () => ({ effects: [], readsStdin: false }) };
|
|
19
|
+
}
|
|
20
|
+
/** A tool whose first word decides: query words are read-only, others change system state. */
|
|
21
|
+
function queryOrChange(names, summary, query, change) {
|
|
22
|
+
return {
|
|
23
|
+
names,
|
|
24
|
+
summary,
|
|
25
|
+
analyze(inv, h) {
|
|
26
|
+
const a = args(inv);
|
|
27
|
+
const first = a.find((x) => knownPrefix(x) !== '' && !/^-(n|v|q)$/.test(concrete(x) ?? ''));
|
|
28
|
+
const w = first === undefined ? '' : concrete(first);
|
|
29
|
+
if (w === undefined)
|
|
30
|
+
return { effects: [{ kind: 'unknown', detail: `${inv.name} with unknown arguments` }], readsStdin: false, complete: false };
|
|
31
|
+
if (first && /^[a-z]/.test(w))
|
|
32
|
+
h.role(first, 'subcommand');
|
|
33
|
+
if (query.test(w))
|
|
34
|
+
return { effects: [], readsStdin: false };
|
|
35
|
+
return { effects: [{ kind: 'unknown', detail: `${inv.name} ${w}: ${change}` }], readsStdin: false, complete: false };
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const home = (h, rest) => concat(h.home() ?? known('~'), known(rest));
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
// preferences and property lists
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
/** defaults [-currentHost | -host H] VERB [DOMAIN] …; a domain may be a plist path. */
|
|
44
|
+
const defaults = {
|
|
45
|
+
names: ['defaults'],
|
|
46
|
+
summary: 'user preferences',
|
|
47
|
+
analyze(inv, h) {
|
|
48
|
+
const a = [...args(inv)];
|
|
49
|
+
while (a.length > 0 && /^-(currentHost|host)$/.test(concrete(a[0]) ?? ''))
|
|
50
|
+
a.splice(0, concrete(a[0]) === '-host' ? 2 : 1);
|
|
51
|
+
const verb = concrete(a[0] ?? known('')) ?? '?';
|
|
52
|
+
if (a[0])
|
|
53
|
+
h.role(a[0], 'subcommand');
|
|
54
|
+
const rest = a.slice(1).filter((x) => !/^-(g|globalDomain|app)$/.test(concrete(x) ?? ''));
|
|
55
|
+
const domain = rest[0];
|
|
56
|
+
const prefs = home(h, '/Library/Preferences');
|
|
57
|
+
// a domain given as a path names that plist (without .plist)
|
|
58
|
+
const target = () => {
|
|
59
|
+
if (!domain || !/^[/~.]/.test(knownPrefix(domain)))
|
|
60
|
+
return prefs;
|
|
61
|
+
const s = concrete(domain);
|
|
62
|
+
return s !== undefined && !s.endsWith('.plist') ? h.resolve(known(s + '.plist')) : h.resolve(domain);
|
|
63
|
+
};
|
|
64
|
+
const isPrefs = (v) => v === prefs;
|
|
65
|
+
if (/^(read|read-type|find|domains|help)$/.test(verb)) {
|
|
66
|
+
const t = target();
|
|
67
|
+
return { effects: [{ kind: 'read', path: t, ...(isPrefs(t) ? { recursive: true } : {}) }], readsStdin: false };
|
|
68
|
+
}
|
|
69
|
+
if (verb === 'export') {
|
|
70
|
+
const t = target();
|
|
71
|
+
const out = rest[1];
|
|
72
|
+
const effects = [{ kind: 'read', path: t, ...(isPrefs(t) ? { recursive: true } : {}) }];
|
|
73
|
+
if (out && !isDash(out))
|
|
74
|
+
effects.push({ kind: 'write', path: h.resolve(out) });
|
|
75
|
+
return { effects, readsStdin: false };
|
|
76
|
+
}
|
|
77
|
+
if (/^(write|delete|rename|import)$/.test(verb)) {
|
|
78
|
+
const t = target();
|
|
79
|
+
const effects = [{ kind: 'write', path: t, ...(isPrefs(t) ? { recursive: true } : {}) }];
|
|
80
|
+
if (verb === 'import' && rest[1]) {
|
|
81
|
+
if (isDash(rest[1]))
|
|
82
|
+
return { effects, readsStdin: true };
|
|
83
|
+
effects.push({ kind: 'read', path: h.resolve(rest[1]) });
|
|
84
|
+
}
|
|
85
|
+
return { effects, readsStdin: false };
|
|
86
|
+
}
|
|
87
|
+
return { effects: [{ kind: 'unknown', detail: `defaults ${verb}` }], readsStdin: false, complete: false };
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
/** plutil: -p/-lint/-type read; -convert/-extract/-insert/-replace/-remove rewrite in place unless -o. */
|
|
91
|
+
const PLUTIL_MODES = { '-p': 0, '-lint': 0, '-help': 0, '-type': 1, '-convert': 1, '-extract': 2, '-insert': 3, '-replace': 3, '-remove': 1, '-create': 1 };
|
|
92
|
+
const plutil = {
|
|
93
|
+
names: ['plutil'],
|
|
94
|
+
summary: 'property list utility',
|
|
95
|
+
analyze(inv, h) {
|
|
96
|
+
const a = args(inv);
|
|
97
|
+
let mode = '-lint';
|
|
98
|
+
let out;
|
|
99
|
+
let ext;
|
|
100
|
+
const files = [];
|
|
101
|
+
let complete = true;
|
|
102
|
+
for (let i = 0; i < a.length; i++) {
|
|
103
|
+
const s = concrete(a[i]);
|
|
104
|
+
if (s === undefined) {
|
|
105
|
+
files.push(a[i]);
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (s in PLUTIL_MODES) {
|
|
109
|
+
mode = s;
|
|
110
|
+
// `-insert KEY -TYPE VALUE`, `-extract KEYPATH FMT`, `-convert FMT`
|
|
111
|
+
i += PLUTIL_MODES[s];
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (s === '-o')
|
|
115
|
+
out = a[++i];
|
|
116
|
+
else if (s === '-e')
|
|
117
|
+
ext = a[++i];
|
|
118
|
+
else if (s === '-s' || s === '-r' || s === '-n' || s === '--' || s === '-x' || s === '-json' || s === '-xml1' || s === '-binary1' || s === '-raw' || s === '-expect') {
|
|
119
|
+
if (s === '-expect')
|
|
120
|
+
i++;
|
|
121
|
+
}
|
|
122
|
+
else if (s.startsWith('-') && s !== '-')
|
|
123
|
+
complete = false;
|
|
124
|
+
else
|
|
125
|
+
files.push(a[i]);
|
|
126
|
+
}
|
|
127
|
+
const effects = [];
|
|
128
|
+
let readsStdin = false;
|
|
129
|
+
for (const f of files) {
|
|
130
|
+
if (isDash(f))
|
|
131
|
+
readsStdin = true;
|
|
132
|
+
else
|
|
133
|
+
effects.push({ kind: 'read', path: h.resolve(f) });
|
|
134
|
+
}
|
|
135
|
+
if (!['-p', '-lint', '-help', '-type'].includes(mode)) {
|
|
136
|
+
if (out) {
|
|
137
|
+
if (!isDash(out))
|
|
138
|
+
effects.push({ kind: 'write', path: h.resolve(out) });
|
|
139
|
+
}
|
|
140
|
+
else if (ext) {
|
|
141
|
+
for (const f of files)
|
|
142
|
+
if (!isDash(f))
|
|
143
|
+
effects.push({ kind: 'write', path: concat(h.resolve(f), known('.'), ext) });
|
|
144
|
+
}
|
|
145
|
+
else
|
|
146
|
+
for (const f of files)
|
|
147
|
+
if (!isDash(f))
|
|
148
|
+
effects.push({ kind: 'write', path: h.resolve(f) });
|
|
149
|
+
}
|
|
150
|
+
return { effects, readsStdin, complete };
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
/** PlistBuddy [-x] [-c CMD]... FILE */
|
|
154
|
+
const plistBuddy = {
|
|
155
|
+
names: ['PlistBuddy'],
|
|
156
|
+
summary: 'edit property lists',
|
|
157
|
+
analyze(inv, h) {
|
|
158
|
+
const a = args(inv);
|
|
159
|
+
const cmds = [];
|
|
160
|
+
let file;
|
|
161
|
+
for (let i = 0; i < a.length; i++) {
|
|
162
|
+
const s = concrete(a[i]);
|
|
163
|
+
if (s === '-c') {
|
|
164
|
+
if (a[i + 1])
|
|
165
|
+
h.role(a[i + 1], 'code');
|
|
166
|
+
cmds.push(a[++i]);
|
|
167
|
+
}
|
|
168
|
+
else if (s === '-x' || s === '-h')
|
|
169
|
+
continue;
|
|
170
|
+
else
|
|
171
|
+
file = a[i];
|
|
172
|
+
}
|
|
173
|
+
if (!file)
|
|
174
|
+
return { effects: [], readsStdin: false };
|
|
175
|
+
const path = h.resolve(file);
|
|
176
|
+
if (cmds.length === 0)
|
|
177
|
+
return { effects: [{ kind: 'read', path }, { kind: 'write', path, maybe: true }, { kind: 'unknown', detail: 'interactive PlistBuddy commands' }], readsStdin: true, complete: false };
|
|
178
|
+
const effects = [{ kind: 'read', path }];
|
|
179
|
+
let complete = true;
|
|
180
|
+
let writes = false;
|
|
181
|
+
for (const c of cmds) {
|
|
182
|
+
const t = c ? concrete(c) : undefined;
|
|
183
|
+
if (t === undefined) {
|
|
184
|
+
complete = false;
|
|
185
|
+
writes = true;
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
const verb = t.trim().split(/\s+/)[0]?.toLowerCase() ?? '';
|
|
189
|
+
if (verb === 'print' || verb === 'help' || verb === 'exit')
|
|
190
|
+
continue;
|
|
191
|
+
if (verb === 'merge' || verb === 'import')
|
|
192
|
+
complete = false; // reads another file
|
|
193
|
+
writes = true;
|
|
194
|
+
}
|
|
195
|
+
if (writes)
|
|
196
|
+
effects.push({ kind: 'write', path, ...(complete ? {} : { maybe: true }) });
|
|
197
|
+
return { effects, readsStdin: false, complete };
|
|
198
|
+
},
|
|
199
|
+
};
|
|
200
|
+
// ---------------------------------------------------------------------------
|
|
201
|
+
// launchd, Xcode, signing
|
|
202
|
+
// ---------------------------------------------------------------------------
|
|
203
|
+
const launchctl = queryOrChange(['launchctl'], 'launchd services', /^(print|print-cache|print-disabled|list|blame|procinfo|hostinfo|examine|dumpstate|dumpjpcategory|managerpid|manageruid|managername|getenv|version|help|error|resolveport|plist)$/, 'starts, stops or configures services');
|
|
204
|
+
const xcodeSelect = define({
|
|
205
|
+
names: ['xcode-select'], summary: 'active developer directory',
|
|
206
|
+
spec: { short: 'hpvr', shortWithArg: 's', long: { help: false, 'print-path': false, version: false, switch: '=s', reset: '=r', install: false } },
|
|
207
|
+
stdin: false, stdout: { type: 'path' },
|
|
208
|
+
when: { 's|r|install': { opaque: 'xcode-select changes the developer directory or installs tools' } },
|
|
209
|
+
});
|
|
210
|
+
/** xcrun [--sdk X] [--toolchain X] TOOL ARGS… | --find TOOL | --show-sdk-*. */
|
|
211
|
+
const xcrun = {
|
|
212
|
+
names: ['xcrun'],
|
|
213
|
+
summary: 'run or locate developer tools',
|
|
214
|
+
analyze(inv, h) {
|
|
215
|
+
const a = args(inv);
|
|
216
|
+
let i = 0;
|
|
217
|
+
for (; i < a.length; i++) {
|
|
218
|
+
const s = concrete(a[i]);
|
|
219
|
+
if (s === undefined)
|
|
220
|
+
return { effects: [{ kind: 'unknown', detail: 'xcrun with unknown arguments' }], readsStdin: 'maybe', complete: false };
|
|
221
|
+
if (s === '--sdk' || s === '-sdk' || s === '--toolchain' || s === '-toolchain') {
|
|
222
|
+
i++;
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
if (/^-(-)?(find|f)$/.test(s) || /^--show-sdk-|^--show-toolchain|^-(-)?(version|help|h|kill-cache|k)$/.test(s))
|
|
226
|
+
return { effects: [], readsStdin: false, stdout: { type: 'path' } };
|
|
227
|
+
if (/^-(-)?(log|verbose|no-cache|l|v|n|r|run)$/.test(s))
|
|
228
|
+
continue;
|
|
229
|
+
break;
|
|
230
|
+
}
|
|
231
|
+
if (i >= a.length)
|
|
232
|
+
return { effects: [], readsStdin: false };
|
|
233
|
+
return h.subcommand(a.slice(i));
|
|
234
|
+
},
|
|
235
|
+
};
|
|
236
|
+
/** codesign: -s/--sign rewrites the operands; -v/-d/--verify/--display read them. */
|
|
237
|
+
const codesign = define({
|
|
238
|
+
names: ['codesign'], summary: 'code signing',
|
|
239
|
+
spec: { short: 'dvfhRoV', shortWithArg: 'siPr', long: { sign: '=s', verify: false, display: false, deep: false, strict: true, force: false, verbose: true, identifier: '=i', entitlements: true, options: true, timestamp: true, 'preserve-metadata': true, keychain: true, requirements: '=r', remove: false, 'remove-signature': false, xml: false, der: false, 'check-notarization': false, 'generate-entitlement-der': false, 'all-architectures': false, prefix: true, 'test-requirement': true, detached: true, bundle: true, file: false, extract: true } },
|
|
240
|
+
operands: 'read*', stdin: false, flags: { entitlements: 'write' },
|
|
241
|
+
when: { 's|remove-signature|remove': { operands: 'write*', flags: { entitlements: 'read', keychain: 'read' } } },
|
|
242
|
+
});
|
|
243
|
+
const spctl = queryOrChange(['spctl'], 'Gatekeeper assessments', /^(-a|--assess|--status|-s|--test|-t|--list|--help|-h)$/, 'changes the Gatekeeper policy');
|
|
244
|
+
const security = {
|
|
245
|
+
names: ['security'],
|
|
246
|
+
summary: 'keychains and certificates',
|
|
247
|
+
analyze(inv, h) {
|
|
248
|
+
const a = args(inv);
|
|
249
|
+
const sub = concrete(a.find((x) => !knownPrefix(x).startsWith('-')) ?? known('')) ?? '?';
|
|
250
|
+
const keychains = home(h, '/Library/Keychains');
|
|
251
|
+
if (/^(find-|dump-|list-|show-|verify-cert$|error$|help$)/.test(sub) || (sub === 'cms' && a.some((x) => concrete(x) === '-D'))) {
|
|
252
|
+
const effects = [{ kind: 'read', path: keychains, recursive: true }, { kind: 'read', path: known('/Library/Keychains'), recursive: true, maybe: true }];
|
|
253
|
+
if (sub === 'cms')
|
|
254
|
+
for (let i = 0; i < a.length; i++)
|
|
255
|
+
if (concrete(a[i]) === '-i' && a[i + 1])
|
|
256
|
+
effects.push({ kind: 'read', path: h.resolve(a[i + 1]) });
|
|
257
|
+
return { effects, readsStdin: sub === 'cms' && !a.some((x) => concrete(x) === '-i') };
|
|
258
|
+
}
|
|
259
|
+
return { effects: [{ kind: 'write', path: keychains, recursive: true, maybe: true }, { kind: 'unknown', detail: `security ${sub}` }], readsStdin: 'maybe', complete: false };
|
|
260
|
+
},
|
|
261
|
+
};
|
|
262
|
+
// ---------------------------------------------------------------------------
|
|
263
|
+
// network
|
|
264
|
+
// ---------------------------------------------------------------------------
|
|
265
|
+
const networkTools = [
|
|
266
|
+
queryOrChange(['ipconfig'], 'network interfaces (macOS)', /^(getifaddr|getoption|getpacket|getsummary|getv6packet|ifcount|getiflist|getra|waitall|help)$/, 'changes interface configuration'),
|
|
267
|
+
{
|
|
268
|
+
names: ['ifconfig'],
|
|
269
|
+
summary: 'network interfaces',
|
|
270
|
+
analyze(inv) {
|
|
271
|
+
// `ifconfig`, `ifconfig -a`, `ifconfig -l`, `ifconfig en0`: queries; more words configure the interface
|
|
272
|
+
const ops = args(inv).filter((x) => !/^-[aludLmvrC]+$/.test(concrete(x) ?? ''));
|
|
273
|
+
if (ops.length <= 1)
|
|
274
|
+
return { effects: [], readsStdin: false };
|
|
275
|
+
return { effects: [{ kind: 'unknown', detail: 'ifconfig configures an interface' }], readsStdin: false, complete: false };
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
names: ['arp', 'ndp'],
|
|
280
|
+
summary: 'address resolution tables',
|
|
281
|
+
analyze(inv) {
|
|
282
|
+
const a = args(inv).map((x) => concrete(x));
|
|
283
|
+
if (a.some((x) => x === undefined || /^-[a-zA-Z]*[dsSf]/.test(x)))
|
|
284
|
+
return { effects: [{ kind: 'unknown', detail: `${inv.name} changes the table` }], readsStdin: false, complete: false };
|
|
285
|
+
return { effects: [], readsStdin: false };
|
|
286
|
+
},
|
|
287
|
+
},
|
|
288
|
+
queryOrChange(['route'], 'routing tables', /^(get|monitor|show|-n)$/, 'changes routes'),
|
|
289
|
+
queryOrChange(['scutil'], 'system configuration', /^(--dns|--proxy|--nwi|--get|-r|-w)$/, 'changes the system configuration'),
|
|
290
|
+
queryOrChange(['networksetup'], 'network settings', /^-(get|list|print|version|help|isBluetooth|show)/, 'changes network settings'),
|
|
291
|
+
queryOrChange(['socketfilterfw'], 'application firewall', /^--(get|list)/, 'changes the firewall'),
|
|
292
|
+
{
|
|
293
|
+
names: ['dscacheutil'],
|
|
294
|
+
summary: 'directory service cache',
|
|
295
|
+
analyze: (inv) => ({ effects: args(inv).some((x) => concrete(x) === '-flushcache') ? [{ kind: 'process', detail: 'flush the DNS cache' }] : [], readsStdin: false }),
|
|
296
|
+
},
|
|
297
|
+
define({ names: ['dns-sd', 'mDNS'], summary: 'Bonjour browsing and registration', anyFlags: true, operands: 'arg*', stdin: false, effects: [{ kind: 'network', detail: 'multicast DNS' }] }),
|
|
298
|
+
define({ names: ['mtr', 'whois'], summary: 'network diagnostics', anyFlags: true, operands: 'url arg*', stdin: false }),
|
|
299
|
+
];
|
|
300
|
+
// ---------------------------------------------------------------------------
|
|
301
|
+
// system state and diagnostics
|
|
302
|
+
// ---------------------------------------------------------------------------
|
|
303
|
+
const systemTools = [
|
|
304
|
+
info(['system_profiler', 'ioreg', 'lsappinfo', 'footprint', 'vmmap', 'heap', 'leaks', 'fs_usage', 'powermetrics', 'nettop', 'csrutil', 'kextstat', 'machine'], 'print system or process information'),
|
|
305
|
+
define({
|
|
306
|
+
names: ['sysctl'], summary: 'kernel state',
|
|
307
|
+
spec: { short: 'abdehiNnoqxAX', shortWithArg: 'f' }, operands: 'arg*', stdin: false,
|
|
308
|
+
// `name=value` and -w set kernel parameters
|
|
309
|
+
extra: (r, { operands, p }) => (p.flags.has('w') || operands.some((o) => knownPrefix(o).includes('=') || concrete(o) === undefined) ? { ...r, effects: [...r.effects, { kind: 'unknown', detail: 'sysctl sets kernel parameters' }], complete: false } : r),
|
|
310
|
+
}),
|
|
311
|
+
define({
|
|
312
|
+
names: ['memory_pressure'], summary: 'memory pressure', spec: { short: 'Q', shortWithArg: 'lSps' }, stdin: false,
|
|
313
|
+
when: { S: { opaque: 'memory_pressure -S simulates memory pressure' } },
|
|
314
|
+
}),
|
|
315
|
+
queryOrChange(['pmset'], 'power management', /^-g$/, 'changes power settings'),
|
|
316
|
+
queryOrChange(['tmutil'], 'Time Machine', /^(listbackups|latestbackup|status|destinationinfo|isexcluded|machinedirectory|listlocalsnapshots|listlocalsnapshotdates|compare|calculatedrift|uniquesize|version|help|verifychecksums)$/, 'changes backups or their settings'),
|
|
317
|
+
queryOrChange(['diskutil'], 'disks and volumes', /^(list|info|information|activity|listFilesystems|apfs|cs|appleRAID|verifyVolume|verifyDisk|image)$/, 'changes disks or volumes'),
|
|
318
|
+
queryOrChange(['hdiutil'], 'disk images', /^(info|imageinfo|verify|checksum|isencrypted|plugins|help|pmap)$/, 'mounts or creates disk images'),
|
|
319
|
+
queryOrChange(['log'], 'unified logging', /^(show|stream|stats|help)$/, 'changes logging configuration or collects archives'),
|
|
320
|
+
queryOrChange(['lsregister'], 'Launch Services database', /^-(dump|h|help)$/, 'changes the Launch Services database'),
|
|
321
|
+
{
|
|
322
|
+
names: ['sample', 'spindump'],
|
|
323
|
+
summary: 'sample a process',
|
|
324
|
+
analyze(inv, h) {
|
|
325
|
+
// writes the report to -file PATH, else into /tmp
|
|
326
|
+
const a = args(inv);
|
|
327
|
+
const i = a.findIndex((x) => concrete(x) === '-file' || concrete(x) === '-o');
|
|
328
|
+
const out = i >= 0 && a[i + 1] ? h.resolve(a[i + 1]) : concat(known('/tmp/'), hole('filename', 'sample report'));
|
|
329
|
+
return { effects: [{ kind: 'write', path: out }], readsStdin: false };
|
|
330
|
+
},
|
|
331
|
+
},
|
|
332
|
+
];
|
|
333
|
+
// ---------------------------------------------------------------------------
|
|
334
|
+
// files, Spotlight, images, screen
|
|
335
|
+
// ---------------------------------------------------------------------------
|
|
336
|
+
const mdfind = {
|
|
337
|
+
names: ['mdfind'],
|
|
338
|
+
summary: 'Spotlight search',
|
|
339
|
+
analyze(inv, h) {
|
|
340
|
+
const a = args(inv);
|
|
341
|
+
const effects = [];
|
|
342
|
+
let complete = true;
|
|
343
|
+
for (let i = 0; i < a.length; i++) {
|
|
344
|
+
const s = concrete(a[i]);
|
|
345
|
+
if (s === '-onlyin' && a[i + 1]) {
|
|
346
|
+
h.role(a[i + 1], 'dir');
|
|
347
|
+
effects.push({ kind: 'read', path: h.resolve(a[++i]), recursive: true });
|
|
348
|
+
}
|
|
349
|
+
else if (s === '-name' || s === '-attr' || s === '-s') {
|
|
350
|
+
if (a[i + 1])
|
|
351
|
+
h.role(a[i + 1], 'pattern');
|
|
352
|
+
i++;
|
|
353
|
+
}
|
|
354
|
+
else if (s === '-live' || s === '-count' || s === '-0' || s === '-literal' || s === '-interpret' || s === '-reprint')
|
|
355
|
+
continue;
|
|
356
|
+
else if (s !== undefined && s.startsWith('-'))
|
|
357
|
+
complete = false;
|
|
358
|
+
else
|
|
359
|
+
h.role(a[i], 'pattern');
|
|
360
|
+
}
|
|
361
|
+
// names (not contents) of matching files anywhere in the index
|
|
362
|
+
if (!effects.length)
|
|
363
|
+
effects.push({ kind: 'read', path: known('/'), recursive: true, maybe: true });
|
|
364
|
+
return { effects, readsStdin: false, complete, stdout: { type: 'path', lines: true } };
|
|
365
|
+
},
|
|
366
|
+
};
|
|
367
|
+
const mdls = define({
|
|
368
|
+
names: ['mdls'], summary: 'Spotlight metadata',
|
|
369
|
+
spec: { longSingle: true, long: { name: true, raw: false, nullMarker: true, plist: true, r: false } },
|
|
370
|
+
operands: 'read*', flags: { plist: 'write' }, stdin: false,
|
|
371
|
+
});
|
|
372
|
+
/** sips: queries (-g) read; anything else rewrites the images, or writes --out. */
|
|
373
|
+
const SIPS_QUERY = new Set(['g', 'getProperty', '1', 'oneLine', 'h', 'help', 'H', 'helpProperties', 'v', 'version', 'debug']);
|
|
374
|
+
const sips = define({
|
|
375
|
+
names: ['sips'], summary: 'image processing (macOS)',
|
|
376
|
+
spec: {
|
|
377
|
+
short: '1hHv', shortWithArg: 'gsdrfcpzZioeEmMxj', arity: { s: 2, c: 2, p: 2, z: 2, M: 2 },
|
|
378
|
+
long: { getProperty: '=g', setProperty: '=s', deleteProperty: '=d', rotate: '=r', flip: '=f', cropToHeightWidth: '=c', padToHeightWidth: '=p', resampleHeightWidth: '=z', resampleHeightWidthMax: '=Z', resampleWidth: true, resampleHeight: true, cropOffset: 2, padColor: true, addIcon: '=i', out: '=o', embedProfile: '=e', embedProfileIfNone: '=E', matchTo: '=m', matchToWithIntent: '=M', extractProfile: '=x', extractTag: 2, js: '=j', oneLine: '=1', help: '=h', helpProperties: '=H', version: '=v', debug: false, optimizeColorForSharing: false, verifyColor: false, deleteColorManagementProperties: false, setColorManagementPropertiesFromFile: true },
|
|
379
|
+
},
|
|
380
|
+
operands: 'read*', stdin: false, flags: { e: 'read', E: 'read', m: 'read', x: 'write', extractTag: 'write' },
|
|
381
|
+
extra: (r, { h, p, operands }) => {
|
|
382
|
+
if (p.flags.has('j'))
|
|
383
|
+
return { ...r, effects: [...r.effects, { kind: 'unknown', detail: 'sips runs a JavaScript file' }], complete: false };
|
|
384
|
+
const modifies = [...p.flags.keys()].some((k) => !SIPS_QUERY.has(k) && !['e', 'E', 'm', 'M', 'x', 'extractTag', 'o'].includes(k)) || ['e', 'E', 'm', 'M'].some((k) => p.flags.has(k));
|
|
385
|
+
if (!modifies)
|
|
386
|
+
return r;
|
|
387
|
+
const out = p.flags.get('o');
|
|
388
|
+
const writes = out && out !== true
|
|
389
|
+
? [{ kind: 'write', path: h.resolve(out), ...(operands.length > 1 ? { recursive: true } : {}) }]
|
|
390
|
+
: operands.map((o) => ({ kind: 'write', path: h.resolve(o) }));
|
|
391
|
+
if (out && out !== true && operands.length > 1)
|
|
392
|
+
h.role(out, 'dir');
|
|
393
|
+
return { ...r, effects: [...r.effects, ...writes] };
|
|
394
|
+
},
|
|
395
|
+
});
|
|
396
|
+
const screencapture = define({
|
|
397
|
+
names: ['screencapture'], summary: 'screenshots (macOS)',
|
|
398
|
+
spec: { short: 'cCdimMoPswWxSaUuvkgbBIrpGJ', shortWithArg: 'RtTlDVBGJf' },
|
|
399
|
+
operands: 'write*', stdin: false,
|
|
400
|
+
when: { c: { operands: 'arg*' }, 'M|P': { effects: [{ kind: 'process', detail: 'opens the capture in an app' }] } },
|
|
401
|
+
});
|
|
402
|
+
const qlmanage = define({
|
|
403
|
+
names: ['qlmanage'], summary: 'Quick Look', spec: { short: 'pthmrxi', shortWithArg: 'osgc', long: {} },
|
|
404
|
+
operands: 'read*', stdin: false, flags: { o: 'write:dir' },
|
|
405
|
+
when: { p: { opaque: 'qlmanage -p opens a preview window' }, r: { effects: [{ kind: 'process', detail: 'resets Quick Look' }] } },
|
|
406
|
+
});
|
|
407
|
+
/** Chrome / Chromium: --headless with an output flag renders a page; anything else is the GUI browser. */
|
|
408
|
+
const chrome = {
|
|
409
|
+
names: ['Google Chrome', 'google-chrome', 'google-chrome-stable', 'chromium', 'chromium-browser', 'chrome', 'Chromium', 'Google Chrome Canary', 'Microsoft Edge', 'Brave Browser'],
|
|
410
|
+
summary: 'web browser',
|
|
411
|
+
analyze(inv, h) {
|
|
412
|
+
const a = args(inv);
|
|
413
|
+
const opt = (name) => {
|
|
414
|
+
for (const x of a) {
|
|
415
|
+
const s = concrete(x);
|
|
416
|
+
if (s === `--${name}`)
|
|
417
|
+
return true;
|
|
418
|
+
if (s?.startsWith(`--${name}=`))
|
|
419
|
+
return known(s.slice(name.length + 3));
|
|
420
|
+
}
|
|
421
|
+
return undefined;
|
|
422
|
+
};
|
|
423
|
+
if (opt('version') || opt('help'))
|
|
424
|
+
return { effects: [], readsStdin: false };
|
|
425
|
+
const headless = opt('headless') !== undefined;
|
|
426
|
+
const effects = [{ kind: 'network', detail: inv.name, maybe: true }];
|
|
427
|
+
const shot = opt('screenshot');
|
|
428
|
+
const pdf = opt('print-to-pdf');
|
|
429
|
+
const profile = opt('user-data-dir');
|
|
430
|
+
effects.push(profile && profile !== true
|
|
431
|
+
? { kind: 'write', path: h.resolve(profile), recursive: true }
|
|
432
|
+
: { kind: 'write', path: home(h, process.platform === 'darwin' ? '/Library/Application Support' : '/.config'), recursive: true, maybe: true });
|
|
433
|
+
if (shot)
|
|
434
|
+
effects.push({ kind: 'write', path: shot === true ? concat(inv.cwd, known('/screenshot.png')) : h.resolve(shot) });
|
|
435
|
+
if (pdf)
|
|
436
|
+
effects.push({ kind: 'write', path: pdf === true ? concat(inv.cwd, known('/output.pdf')) : h.resolve(pdf) });
|
|
437
|
+
for (const x of a) {
|
|
438
|
+
const s = concrete(x);
|
|
439
|
+
if (s !== undefined && !s.startsWith('-') && !/^[a-z]+:/.test(s))
|
|
440
|
+
effects.push({ kind: 'read', path: h.resolve(x) });
|
|
441
|
+
if (s?.startsWith('file://'))
|
|
442
|
+
effects.push({ kind: 'read', path: known(decodeURIComponent(s.slice(7))) });
|
|
443
|
+
}
|
|
444
|
+
const outputOnly = headless && (shot || pdf || opt('dump-dom'));
|
|
445
|
+
if (!outputOnly)
|
|
446
|
+
effects.push({ kind: 'unknown', detail: `${inv.name} runs a browser` });
|
|
447
|
+
return { effects, readsStdin: false, complete: !!outputOnly && !opt('remote-debugging-port') && !opt('remote-debugging-pipe') };
|
|
448
|
+
},
|
|
449
|
+
};
|
|
450
|
+
export const macosBehaviors = [
|
|
451
|
+
defaults, plutil, plistBuddy, launchctl, xcodeSelect, xcrun, codesign, spctl, security,
|
|
452
|
+
...networkTools, ...systemTools, mdfind, mdls, sips, screencapture, qlmanage, chrome,
|
|
453
|
+
];
|
|
454
|
+
//# sourceMappingURL=macos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"macos.js","sourceRoot":"","sources":["../../../../src/behaviors/defs/macos.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Behavior definitions for common command-line tools beyond coreutils:
|
|
3
|
+
* databases, document and media tools, downloaders, crypto, and local
|
|
4
|
+
* service CLIs. Most are table definitions (see ../dsl.ts); tools whose
|
|
5
|
+
* argument syntax the table cannot express (ffmpeg, sqlite3) are written out.
|
|
6
|
+
*/
|
|
7
|
+
import type { Behavior } from '../types.ts';
|
|
8
|
+
export declare const toolBehaviors: Behavior[];
|
|
9
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../../src/behaviors/defs/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,aAAa,CAAA;AAqkBvD,eAAO,MAAM,aAAa,EAAE,QAAQ,EAEnC,CAAA"}
|