@poe-platform/safe-bash 0.1.534 → 0.1.536
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/safe-bash/chunks/chunk-5Y4AEZB2.js +517 -0
- package/dist/safe-bash/chunks/chunk-5Y4AEZB2.js.map +7 -0
- package/dist/safe-bash/chunks/{chunk-IKATLB4I.js → chunk-AVXYPKV7.js} +7 -5
- package/dist/safe-bash/chunks/{chunk-IKATLB4I.js.map → chunk-AVXYPKV7.js.map} +1 -1
- package/dist/safe-bash/chunks/chunk-FRSZDCZA.js +1236 -0
- package/dist/safe-bash/chunks/chunk-FRSZDCZA.js.map +7 -0
- package/dist/safe-bash/chunks/{chunk-LUJYX5H5.js → chunk-L2GZSOSJ.js} +245 -747
- package/dist/safe-bash/chunks/chunk-L2GZSOSJ.js.map +7 -0
- package/dist/safe-bash/chunks/{chunk-54Z5EUCW.js → chunk-M7KZ7V4P.js} +2 -2
- package/dist/safe-bash/chunks/{chunk-UGMUVHIY.js → chunk-NVUC5B2R.js} +10 -188
- package/dist/safe-bash/chunks/{chunk-UGMUVHIY.js.map → chunk-NVUC5B2R.js.map} +3 -3
- package/dist/safe-bash/chunks/{chunk-2GV4WO7O.js → chunk-PPVCI2F2.js} +2 -2
- package/dist/safe-bash/chunks/chunk-QY2XHZTE.js +192 -0
- package/dist/safe-bash/chunks/chunk-QY2XHZTE.js.map +7 -0
- package/dist/safe-bash/chunks/{chunk-6MHYEBAJ.js → chunk-UZELUFGF.js} +8 -6
- package/dist/safe-bash/chunks/{chunk-6MHYEBAJ.js.map → chunk-UZELUFGF.js.map} +1 -1
- package/dist/safe-bash/chunks/chunk-XROAIPKA.js +12095 -0
- package/dist/safe-bash/chunks/chunk-XROAIPKA.js.map +7 -0
- package/dist/safe-bash/commands/csplit/command.d.ts +6 -0
- package/dist/safe-bash/commands/csplit/command.d.ts.map +1 -0
- package/dist/safe-bash/commands/csplit/command.js +78 -0
- package/dist/safe-bash/commands/csplit/command.js.map +1 -0
- package/dist/safe-bash/commands/csplit/index.browser.js +14 -0
- package/dist/safe-bash/commands/csplit/index.browser.js.map +7 -0
- package/dist/safe-bash/commands/csplit/index.d.ts +7 -0
- package/dist/safe-bash/commands/csplit/index.d.ts.map +1 -0
- package/dist/safe-bash/commands/csplit/index.js +21 -0
- package/dist/safe-bash/commands/csplit/index.js.map +1 -0
- package/dist/safe-bash/commands/csplit/internal.d.ts +61 -0
- package/dist/safe-bash/commands/csplit/internal.d.ts.map +1 -0
- package/dist/safe-bash/commands/csplit/internal.js +147 -0
- package/dist/safe-bash/commands/csplit/internal.js.map +1 -0
- package/dist/safe-bash/commands/csplit/io.d.ts +52 -0
- package/dist/safe-bash/commands/csplit/io.d.ts.map +1 -0
- package/dist/safe-bash/commands/csplit/io.js +330 -0
- package/dist/safe-bash/commands/csplit/io.js.map +1 -0
- package/dist/safe-bash/commands/csplit/options.d.ts +16 -0
- package/dist/safe-bash/commands/csplit/options.d.ts.map +1 -0
- package/dist/safe-bash/commands/csplit/options.js +178 -0
- package/dist/safe-bash/commands/csplit/options.js.map +1 -0
- package/dist/safe-bash/commands/csplit/patterns.d.ts +19 -0
- package/dist/safe-bash/commands/csplit/patterns.d.ts.map +1 -0
- package/dist/safe-bash/commands/csplit/patterns.js +92 -0
- package/dist/safe-bash/commands/csplit/patterns.js.map +1 -0
- package/dist/safe-bash/commands/csplit/quoting.d.ts +2 -0
- package/dist/safe-bash/commands/csplit/quoting.d.ts.map +1 -0
- package/dist/safe-bash/commands/csplit/quoting.js +138 -0
- package/dist/safe-bash/commands/csplit/quoting.js.map +1 -0
- package/dist/safe-bash/commands/csplit/split.d.ts +18 -0
- package/dist/safe-bash/commands/csplit/split.d.ts.map +1 -0
- package/dist/safe-bash/commands/csplit/split.js +122 -0
- package/dist/safe-bash/commands/csplit/split.js.map +1 -0
- package/dist/safe-bash/commands/expr/bre-engine.d.ts +4 -1
- package/dist/safe-bash/commands/expr/bre-engine.d.ts.map +1 -1
- package/dist/safe-bash/commands/expr/bre-engine.js +724 -13
- package/dist/safe-bash/commands/expr/bre-engine.js.map +1 -1
- package/dist/safe-bash/commands/expr/bre-worker.d.ts +2 -1
- package/dist/safe-bash/commands/expr/bre-worker.d.ts.map +1 -1
- package/dist/safe-bash/commands/expr/bre-worker.js +10 -1
- package/dist/safe-bash/commands/expr/bre-worker.js.map +1 -1
- package/dist/safe-bash/commands/network/index.browser.js +5 -3
- package/dist/safe-bash/commands/pr/command.d.ts +4 -0
- package/dist/safe-bash/commands/pr/command.d.ts.map +1 -0
- package/dist/safe-bash/commands/pr/command.js +117 -0
- package/dist/safe-bash/commands/pr/command.js.map +1 -0
- package/dist/safe-bash/commands/pr/format.d.ts +52 -0
- package/dist/safe-bash/commands/pr/format.d.ts.map +1 -0
- package/dist/safe-bash/commands/pr/format.js +527 -0
- package/dist/safe-bash/commands/pr/format.js.map +1 -0
- package/dist/safe-bash/commands/pr/index.browser.js +13 -0
- package/dist/safe-bash/commands/pr/index.browser.js.map +7 -0
- package/dist/safe-bash/commands/pr/index.d.ts +7 -0
- package/dist/safe-bash/commands/pr/index.d.ts.map +1 -0
- package/dist/safe-bash/commands/pr/index.js +13 -0
- package/dist/safe-bash/commands/pr/index.js.map +1 -0
- package/dist/safe-bash/commands/pr/internal.d.ts +61 -0
- package/dist/safe-bash/commands/pr/internal.d.ts.map +1 -0
- package/dist/safe-bash/commands/pr/internal.js +181 -0
- package/dist/safe-bash/commands/pr/internal.js.map +1 -0
- package/dist/safe-bash/commands/pr/io.d.ts +37 -0
- package/dist/safe-bash/commands/pr/io.d.ts.map +1 -0
- package/dist/safe-bash/commands/pr/io.js +210 -0
- package/dist/safe-bash/commands/pr/io.js.map +1 -0
- package/dist/safe-bash/commands/pr/options.d.ts +36 -0
- package/dist/safe-bash/commands/pr/options.d.ts.map +1 -0
- package/dist/safe-bash/commands/pr/options.js +250 -0
- package/dist/safe-bash/commands/pr/options.js.map +1 -0
- package/dist/safe-bash/commands/regex-execution/bounded-provider.d.ts.map +1 -1
- package/dist/safe-bash/commands/regex-execution/bounded-provider.js +16 -5
- package/dist/safe-bash/commands/regex-execution/bounded-provider.js.map +1 -1
- package/dist/safe-bash/commands/regex-execution/portable.d.ts +3 -1
- package/dist/safe-bash/commands/regex-execution/portable.d.ts.map +1 -1
- package/dist/safe-bash/commands/regex-execution/portable.js +17 -4
- package/dist/safe-bash/commands/regex-execution/portable.js.map +1 -1
- package/dist/safe-bash/commands/regex-execution/protocol.d.ts +31 -0
- package/dist/safe-bash/commands/regex-execution/protocol.d.ts.map +1 -1
- package/dist/safe-bash/commands/regex-execution/protocol.js +83 -0
- package/dist/safe-bash/commands/regex-execution/protocol.js.map +1 -1
- package/dist/safe-bash/commands/regex-execution/provider.d.ts +2 -2
- package/dist/safe-bash/commands/regex-execution/provider.d.ts.map +1 -1
- package/dist/safe-bash/commands/regex-execution/worker.js +16 -2
- package/dist/safe-bash/commands/regex-execution/worker.js.map +1 -1
- package/dist/safe-bash/commands/xml/index.browser.js +4 -3
- package/dist/safe-bash/commands/yq/index.browser.js +5 -4
- package/dist/safe-bash/core.browser.js +1953 -4081
- package/dist/safe-bash/core.browser.js.map +4 -4
- package/dist/safe-bash/core.d.ts +2 -0
- package/dist/safe-bash/core.d.ts.map +1 -1
- package/dist/safe-bash/core.js +2 -0
- package/dist/safe-bash/core.js.map +1 -1
- package/dist/safe-bash/plugins/composition.d.ts +5 -0
- package/dist/safe-bash/plugins/composition.d.ts.map +1 -1
- package/dist/safe-bash/plugins/composition.js +7 -1
- package/dist/safe-bash/plugins/composition.js.map +1 -1
- package/dist/safe-bash/plugins/index.js +1 -1
- package/dist/safe-bash/plugins/index.js.map +1 -1
- package/dist/safe-bash/shell/runtime.d.ts.map +1 -1
- package/dist/safe-bash/shell/runtime.js +28 -3
- package/dist/safe-bash/shell/runtime.js.map +1 -1
- package/package.json +14 -2
- package/dist/safe-bash/chunks/chunk-LUJYX5H5.js.map +0 -7
- /package/dist/safe-bash/chunks/{chunk-54Z5EUCW.js.map → chunk-M7KZ7V4P.js.map} +0 -0
- /package/dist/safe-bash/chunks/{chunk-2GV4WO7O.js.map → chunk-PPVCI2F2.js.map} +0 -0
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
import { FsError, dirname, resolvePath } from "../../contracts/index.js";
|
|
2
|
+
import { writeFileOutput } from "../../contracts/filesystem-output.js";
|
|
3
|
+
import { retainFileSystemCleanup } from "@poe-platform/safe-fs/core";
|
|
4
|
+
import { Budget, CsplitError, fsDetail, missing, pathText } from "./internal.js";
|
|
5
|
+
export function sameIdentity(first, second) {
|
|
6
|
+
return ((typeof first.identityScope === "object" && first.identityScope !== null) || typeof first.identityScope === "symbol")
|
|
7
|
+
&& first.identityScope === second.identityScope && Number.isSafeInteger(first.dev) && Number.isSafeInteger(first.ino)
|
|
8
|
+
&& first.dev >= 0 && first.ino >= 0 && first.dev === second.dev && first.ino === second.ino;
|
|
9
|
+
}
|
|
10
|
+
export class Lifecycle {
|
|
11
|
+
budget;
|
|
12
|
+
pending = new Set();
|
|
13
|
+
cleanups = [];
|
|
14
|
+
closing;
|
|
15
|
+
constructor(budget) {
|
|
16
|
+
this.budget = budget;
|
|
17
|
+
budget.context.registerCleanup?.(() => this.close());
|
|
18
|
+
}
|
|
19
|
+
cleanup(action) {
|
|
20
|
+
this.assertOpen();
|
|
21
|
+
this.cleanups.push(action);
|
|
22
|
+
}
|
|
23
|
+
assertOpen() {
|
|
24
|
+
this.budget.context.signal.throwIfAborted();
|
|
25
|
+
if (this.closing)
|
|
26
|
+
throw new CsplitError("command is closed");
|
|
27
|
+
}
|
|
28
|
+
async operation(action) {
|
|
29
|
+
this.assertOpen();
|
|
30
|
+
this.budget.charge();
|
|
31
|
+
const pending = Promise.resolve().then(() => { this.assertOpen(); return action(); });
|
|
32
|
+
this.pending.add(pending);
|
|
33
|
+
try {
|
|
34
|
+
const value = await pending;
|
|
35
|
+
this.assertOpen();
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
this.pending.delete(pending);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
close() {
|
|
43
|
+
return this.closing ??= (async () => {
|
|
44
|
+
while (this.pending.size)
|
|
45
|
+
await Promise.allSettled([...this.pending]);
|
|
46
|
+
const failures = [];
|
|
47
|
+
for (const cleanup of this.cleanups) {
|
|
48
|
+
try {
|
|
49
|
+
await cleanup();
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
failures.push(error);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (failures.length === 1)
|
|
56
|
+
throw failures[0];
|
|
57
|
+
if (failures.length > 1)
|
|
58
|
+
throw new AggregateError(failures, "csplit cleanup failed");
|
|
59
|
+
})();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export class Lines {
|
|
63
|
+
lifecycle;
|
|
64
|
+
lines = [];
|
|
65
|
+
partial = [];
|
|
66
|
+
partialBytes = 0;
|
|
67
|
+
total = 0;
|
|
68
|
+
emptyChunks = 0;
|
|
69
|
+
iterator;
|
|
70
|
+
ended = false;
|
|
71
|
+
path;
|
|
72
|
+
identity;
|
|
73
|
+
constructor(lifecycle) {
|
|
74
|
+
this.lifecycle = lifecycle;
|
|
75
|
+
lifecycle.cleanup(async () => { if (!this.ended)
|
|
76
|
+
await this.iterator?.return?.(); });
|
|
77
|
+
}
|
|
78
|
+
async open(name) {
|
|
79
|
+
if (name === "-") {
|
|
80
|
+
this.identity = this.lifecycle.budget.context.stdinInput?.stat;
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const { context, limits } = this.lifecycle.budget;
|
|
84
|
+
this.lifecycle.budget.check(name.length, limits.maxPathBytes, "input path bytes");
|
|
85
|
+
this.path = resolvePath(context.cwd, pathText(name));
|
|
86
|
+
this.identity = await this.lifecycle.operation(() => context.fs.stat(this.path, { signal: context.signal }));
|
|
87
|
+
if (this.identity.type !== "file")
|
|
88
|
+
throw new CsplitError("read error: Is a directory");
|
|
89
|
+
}
|
|
90
|
+
assertOutput(path, existing) {
|
|
91
|
+
if (path === this.path || existing && this.identity && sameIdentity(existing, this.identity))
|
|
92
|
+
throw new CsplitError("output would overwrite the input file");
|
|
93
|
+
if (existing && this.identity && !sameIdentity(this.identity, this.identity))
|
|
94
|
+
throw new CsplitError("cannot overwrite an existing output with unknown input identity");
|
|
95
|
+
}
|
|
96
|
+
async source() {
|
|
97
|
+
const { context, limits } = this.lifecycle.budget;
|
|
98
|
+
if (this.path === undefined)
|
|
99
|
+
return context.stdin;
|
|
100
|
+
const { fs, signal } = context;
|
|
101
|
+
const capabilities = await this.lifecycle.operation(async () => await fs.capabilitiesFor?.(this.path, { signal }) ?? fs.capabilities);
|
|
102
|
+
if (fs.readStream && capabilities.streamingRead !== false)
|
|
103
|
+
return fs.readStream(this.path, { signal, chunkSize: 65_536 });
|
|
104
|
+
if (this.identity.size > Math.min(limits.maxInputBytes, limits.maxBufferedBytes / 2))
|
|
105
|
+
throw new CsplitError("buffered input bytes limit exceeded");
|
|
106
|
+
const value = await this.lifecycle.operation(() => fs.readFile(this.path, { signal, maxBytes: limits.maxInputBytes }));
|
|
107
|
+
return { async *[Symbol.asyncIterator]() { yield value; } };
|
|
108
|
+
}
|
|
109
|
+
appendLine() {
|
|
110
|
+
const { budget } = this.lifecycle;
|
|
111
|
+
budget.check(this.lines.length + 1, budget.limits.maxLines, "line count");
|
|
112
|
+
const line = new Uint8Array(this.partialBytes);
|
|
113
|
+
let offset = 0;
|
|
114
|
+
for (const part of this.partial) {
|
|
115
|
+
line.set(part, offset);
|
|
116
|
+
offset += part.length;
|
|
117
|
+
}
|
|
118
|
+
this.lines.push(line);
|
|
119
|
+
this.partial = [];
|
|
120
|
+
this.partialBytes = 0;
|
|
121
|
+
}
|
|
122
|
+
async get(number) {
|
|
123
|
+
const { budget } = this.lifecycle;
|
|
124
|
+
while (this.lines.length < number && !this.ended) {
|
|
125
|
+
this.lifecycle.assertOpen();
|
|
126
|
+
if (!this.iterator)
|
|
127
|
+
await this.lifecycle.operation(async () => {
|
|
128
|
+
this.iterator = (await this.source())[Symbol.asyncIterator]();
|
|
129
|
+
});
|
|
130
|
+
const result = await this.lifecycle.operation(() => this.iterator.next());
|
|
131
|
+
if (result.done) {
|
|
132
|
+
this.ended = true;
|
|
133
|
+
if (this.partialBytes)
|
|
134
|
+
this.appendLine();
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
const chunk = result.value;
|
|
138
|
+
if (!(chunk instanceof Uint8Array))
|
|
139
|
+
throw new CsplitError("input produced a non-byte chunk");
|
|
140
|
+
this.total += chunk.length;
|
|
141
|
+
budget.check(this.total, budget.limits.maxInputBytes, "input bytes");
|
|
142
|
+
budget.check(this.total * 2, budget.limits.maxBufferedBytes, "buffered bytes");
|
|
143
|
+
if (!chunk.length)
|
|
144
|
+
budget.check(++this.emptyChunks, budget.limits.maxEmptyChunks, "empty input chunks");
|
|
145
|
+
budget.charge(chunk.length);
|
|
146
|
+
const owned = Uint8Array.from(chunk);
|
|
147
|
+
let start = 0;
|
|
148
|
+
for (let offset = 0; offset < owned.length; offset++) {
|
|
149
|
+
if (owned[offset] === 10) {
|
|
150
|
+
this.partialBytes += offset + 1 - start;
|
|
151
|
+
budget.check(this.partialBytes, budget.limits.maxLineBytes, "line bytes");
|
|
152
|
+
this.partial.push(owned.subarray(start, offset + 1));
|
|
153
|
+
this.appendLine();
|
|
154
|
+
start = offset + 1;
|
|
155
|
+
}
|
|
156
|
+
if (offset % 4096 === 0) {
|
|
157
|
+
budget.charge(Math.min(4096, owned.length - offset));
|
|
158
|
+
await budget.checkpointWork();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (start < owned.length) {
|
|
162
|
+
this.partialBytes += owned.length - start;
|
|
163
|
+
budget.check(this.partialBytes, budget.limits.maxLineBytes, "line bytes");
|
|
164
|
+
this.partial.push(owned.subarray(start));
|
|
165
|
+
}
|
|
166
|
+
await budget.checkpointWork();
|
|
167
|
+
}
|
|
168
|
+
return this.lines[number - 1];
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
export class Outputs {
|
|
172
|
+
lifecycle;
|
|
173
|
+
options;
|
|
174
|
+
format;
|
|
175
|
+
input;
|
|
176
|
+
index = 0;
|
|
177
|
+
attempts = 0;
|
|
178
|
+
current;
|
|
179
|
+
preserve = false;
|
|
180
|
+
succeeded = false;
|
|
181
|
+
constructor(lifecycle, options, format, input) {
|
|
182
|
+
this.lifecycle = lifecycle;
|
|
183
|
+
this.options = options;
|
|
184
|
+
this.format = format;
|
|
185
|
+
this.input = input;
|
|
186
|
+
}
|
|
187
|
+
async parents(path) {
|
|
188
|
+
const { budget } = this.lifecycle;
|
|
189
|
+
const { context, limits } = budget;
|
|
190
|
+
const components = dirname(path).split("/").filter(Boolean);
|
|
191
|
+
budget.check(components.length, limits.maxPathDepth, "path depth");
|
|
192
|
+
const parents = [];
|
|
193
|
+
let current = "/";
|
|
194
|
+
for (const component of ["", ...components]) {
|
|
195
|
+
if (component)
|
|
196
|
+
current = resolvePath(current, component);
|
|
197
|
+
const identity = await this.lifecycle.operation(() => context.fs.lstat(current, { signal: context.signal }));
|
|
198
|
+
if (identity.type !== "directory" || !sameIdentity(identity, identity))
|
|
199
|
+
throw new CsplitError("unsafe output directory identity");
|
|
200
|
+
parents.push({ path: current, identity });
|
|
201
|
+
}
|
|
202
|
+
return parents;
|
|
203
|
+
}
|
|
204
|
+
async checked(output) {
|
|
205
|
+
await this.checkedParents(output.parents);
|
|
206
|
+
const { context } = this.lifecycle.budget;
|
|
207
|
+
const current = await this.lifecycle.operation(() => context.fs.lstat(output.path, { signal: context.signal }));
|
|
208
|
+
if (!output.identity || current.type !== "file" || !sameIdentity(current, output.identity))
|
|
209
|
+
throw new CsplitError("output changed before mutation");
|
|
210
|
+
}
|
|
211
|
+
async checkedParents(parents) {
|
|
212
|
+
const { context } = this.lifecycle.budget;
|
|
213
|
+
for (const parent of parents) {
|
|
214
|
+
const current = await this.lifecycle.operation(() => context.fs.lstat(parent.path, { signal: context.signal }));
|
|
215
|
+
if (current.type !== "directory" || !sameIdentity(current, parent.identity))
|
|
216
|
+
throw new CsplitError("output parent changed before mutation");
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
async open() {
|
|
220
|
+
const { budget } = this.lifecycle;
|
|
221
|
+
const { context, limits } = budget;
|
|
222
|
+
budget.check(++this.attempts, limits.maxFileAttempts, "output file attempts");
|
|
223
|
+
budget.check(this.index + 1, limits.maxFiles, "output file count");
|
|
224
|
+
const name = this.options.prefix + this.format(this.index);
|
|
225
|
+
budget.check(name.length, limits.maxPathBytes, "output filename bytes");
|
|
226
|
+
const path = resolvePath(context.cwd, pathText(name));
|
|
227
|
+
try {
|
|
228
|
+
const parents = await this.parents(path);
|
|
229
|
+
let existing;
|
|
230
|
+
try {
|
|
231
|
+
existing = await this.lifecycle.operation(() => context.fs.lstat(path, { signal: context.signal }));
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
context.signal.throwIfAborted();
|
|
235
|
+
if (!missing(error))
|
|
236
|
+
throw error;
|
|
237
|
+
}
|
|
238
|
+
if (existing && (existing.type !== "file" || !sameIdentity(existing, existing)))
|
|
239
|
+
throw new CsplitError(`unsafe output file ${budget.quote(name)}`);
|
|
240
|
+
this.input.assertOutput(path, existing);
|
|
241
|
+
const output = { path, name, parents, created: false, removed: false, elided: false, failed: false, size: 0, cleanup: async () => { } };
|
|
242
|
+
output.cleanup = retainFileSystemCleanup(context.fs, async (view) => {
|
|
243
|
+
if (!output.created || !output.identity || !output.elided && (this.succeeded || this.options.keep || this.preserve))
|
|
244
|
+
return;
|
|
245
|
+
try {
|
|
246
|
+
for (const parent of parents) {
|
|
247
|
+
const current = await view.lstat(parent.path);
|
|
248
|
+
if (current.type !== "directory" || !sameIdentity(current, parent.identity))
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
const current = await view.lstat(path);
|
|
252
|
+
if (current.type === "file" && sameIdentity(current, output.identity)) {
|
|
253
|
+
await view.rm(path);
|
|
254
|
+
output.removed = true;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
if (!missing(error))
|
|
259
|
+
throw error;
|
|
260
|
+
}
|
|
261
|
+
}, { maxOperations: limits.maxPathDepth + 3 });
|
|
262
|
+
this.lifecycle.cleanup(output.cleanup);
|
|
263
|
+
await this.checkedParents(parents);
|
|
264
|
+
let admitted;
|
|
265
|
+
try {
|
|
266
|
+
admitted = await this.lifecycle.operation(() => context.fs.lstat(path, { signal: context.signal }));
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
context.signal.throwIfAborted();
|
|
270
|
+
if (!missing(error))
|
|
271
|
+
throw error;
|
|
272
|
+
}
|
|
273
|
+
if (admitted ? !existing || admitted.type !== "file" || !sameIdentity(admitted, existing) : existing !== undefined)
|
|
274
|
+
throw new CsplitError("output changed before creation");
|
|
275
|
+
await this.checkedParents(parents);
|
|
276
|
+
await this.lifecycle.operation(async () => {
|
|
277
|
+
await context.fs.writeFile(path, new Uint8Array(), { signal: context.signal, flag: existing ? "w" : "wx" });
|
|
278
|
+
output.created = true;
|
|
279
|
+
if (existing)
|
|
280
|
+
output.identity = existing;
|
|
281
|
+
const identity = await context.fs.lstat(path, { signal: context.signal });
|
|
282
|
+
if (identity.type !== "file" || !sameIdentity(identity, identity) || existing && !sameIdentity(existing, identity))
|
|
283
|
+
throw new CsplitError("output creation identity unavailable");
|
|
284
|
+
output.identity = identity;
|
|
285
|
+
});
|
|
286
|
+
this.index++;
|
|
287
|
+
this.current = output;
|
|
288
|
+
}
|
|
289
|
+
catch (error) {
|
|
290
|
+
if (error instanceof FsError)
|
|
291
|
+
throw new CsplitError(`${name}: ${fsDetail(error)}`);
|
|
292
|
+
throw error;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
async write(value) {
|
|
296
|
+
const output = this.current;
|
|
297
|
+
if (!output)
|
|
298
|
+
throw new CsplitError("output is not open");
|
|
299
|
+
const { budget } = this.lifecycle;
|
|
300
|
+
budget.fileBytes(value.length);
|
|
301
|
+
try {
|
|
302
|
+
await this.checked(output);
|
|
303
|
+
await this.lifecycle.operation(() => writeFileOutput(budget.context, value, chunk => budget.context.fs.appendFile(output.path, chunk, { signal: budget.context.signal })));
|
|
304
|
+
output.size += value.length;
|
|
305
|
+
}
|
|
306
|
+
catch (error) {
|
|
307
|
+
output.failed = true;
|
|
308
|
+
throw error;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
async finish() {
|
|
312
|
+
const output = this.current;
|
|
313
|
+
if (!output)
|
|
314
|
+
return;
|
|
315
|
+
this.current = undefined;
|
|
316
|
+
if (output.failed)
|
|
317
|
+
return;
|
|
318
|
+
if (!output.size && this.options.elide) {
|
|
319
|
+
await this.checked(output);
|
|
320
|
+
output.elided = true;
|
|
321
|
+
await output.cleanup();
|
|
322
|
+
if (!output.removed)
|
|
323
|
+
throw new CsplitError("output changed before empty-file removal");
|
|
324
|
+
this.index--;
|
|
325
|
+
}
|
|
326
|
+
else if (!this.options.quiet)
|
|
327
|
+
await this.lifecycle.budget.print(`${output.size}\n`);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
//# sourceMappingURL=io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"io.js","sourceRoot":"","sources":["../../../src/commands/csplit/io.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAkC,MAAM,0BAA0B,CAAC;AACzG,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGjF,MAAM,UAAU,YAAY,CAAC,KAAe,EAAE,MAAgB;IAC5D,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC;WACxH,KAAK,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;WAClH,KAAK,CAAC,GAAI,IAAI,CAAC,IAAI,KAAK,CAAC,GAAI,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC;AAClG,CAAC;AAED,MAAM,OAAO,SAAS;IAIC;IAHJ,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IACtC,QAAQ,GAA4B,EAAE,CAAC;IAChD,OAAO,CAA4B;IAC3C,YAAqB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAAI,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAAC,CAAC;IAC9F,OAAO,CAAC,MAA2B;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IACD,UAAU;QACR,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAC/D,CAAC;IACD,KAAK,CAAC,SAAS,CAAQ,MAA4B;QACjD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC;YAAC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC;YAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;gBAC7D,CAAC;YAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAAC,CAAC;IAC3C,CAAC;IACD,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,KAAK,CAAC,KAAK,IAAI,EAAE;YAClC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI;gBAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACtE,MAAM,QAAQ,GAAc,EAAE,CAAC;YAC/B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,IAAI,CAAC;oBAAC,MAAM,OAAO,EAAE,CAAC;gBAAC,CAAC;gBACxB,OAAO,KAAK,EAAE,CAAC;oBAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAAC,CAAC;YACzC,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;QACvF,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;CACF;AAED,MAAM,OAAO,KAAK;IAUK;IATJ,KAAK,GAAiB,EAAE,CAAC;IAClC,OAAO,GAAiB,EAAE,CAAC;IAC3B,YAAY,GAAG,CAAC,CAAC;IACjB,KAAK,GAAG,CAAC,CAAC;IACV,WAAW,GAAG,CAAC,CAAC;IAChB,QAAQ,CAAwC;IAChD,KAAK,GAAG,KAAK,CAAC;IACd,IAAI,CAAqB;IACjC,QAAQ,CAAuB;IAC/B,YAAqB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;QACvC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;YAAC,OAAO;QAAC,CAAC;QAC7F,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAClD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAClF,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9G,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,WAAW,CAAC,4BAA4B,CAAC,CAAC;IACzF,CAAC;IACD,YAAY,CAAC,IAAY,EAAE,QAA8B;QACvD,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,WAAW,CAAC,uCAAuC,CAAC,CAAC;QAC7J,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,WAAW,CAAC,iEAAiE,CAAC,CAAC;IACzK,CAAC;IACO,KAAK,CAAC,MAAM;QAClB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAClD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,KAAK,CAAC;QAClD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC/B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,IAAK,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;QACvI,IAAI,EAAE,CAAC,UAAU,IAAI,YAAY,CAAC,aAAa,KAAK,KAAK;YAAE,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1H,IAAI,IAAI,CAAC,QAAS,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAAE,MAAM,IAAI,WAAW,CAAC,qCAAqC,CAAC,CAAC;QACpJ,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACxH,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,CAAC;IACO,UAAU;QAChB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QAAC,CAAC;QACnF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,MAAc;QACtB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACjD,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;oBAC5D,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;gBAChE,CAAC,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3E,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;gBAClB,IAAI,IAAI,CAAC,YAAY;oBAAE,IAAI,CAAC,UAAU,EAAE,CAAC;gBACzC,MAAM;YACR,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC;gBAAE,MAAM,IAAI,WAAW,CAAC,iCAAiC,CAAC,CAAC;YAC7F,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YACrE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;YAC/E,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;YACxG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;gBACrD,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;oBACzB,IAAI,CAAC,YAAY,IAAI,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;oBACxC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;oBAC1E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;oBACrD,IAAI,CAAC,UAAU,EAAE,CAAC;oBAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;gBACxC,CAAC;gBACD,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;oBACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;oBACrD,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;gBAChC,CAAC;YACH,CAAC;YACD,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC1C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;gBAC1E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC;CACF;AAeD,MAAM,OAAO,OAAO;IAMG;IAA+B;IAA2B;IAA4C;IALnH,KAAK,GAAG,CAAC,CAAC;IACV,QAAQ,GAAG,CAAC,CAAC;IACb,OAAO,CAAqB;IACpC,QAAQ,GAAG,KAAK,CAAC;IACjB,SAAS,GAAG,KAAK,CAAC;IAClB,YAAqB,SAAoB,EAAW,OAAgB,EAAW,MAAiC,EAAW,KAAY;QAAlH,cAAS,GAAT,SAAS,CAAW;QAAW,YAAO,GAAP,OAAO,CAAS;QAAW,WAAM,GAAN,MAAM,CAA2B;QAAW,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IACnI,KAAK,CAAC,OAAO,CAAC,IAAY;QAChC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QACnC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACnE,MAAM,OAAO,GAA2C,EAAE,CAAC;QAC3D,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,KAAK,MAAM,SAAS,IAAI,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;YAC5C,IAAI,SAAS;gBAAE,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC7G,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAAE,MAAM,IAAI,WAAW,CAAC,kCAAkC,CAAC,CAAC;YAClI,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IACO,KAAK,CAAC,OAAO,CAAC,MAAc;QAClC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChH,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,WAAW,CAAC,gCAAgC,CAAC,CAAC;IACtJ,CAAC;IACO,KAAK,CAAC,cAAc,CAAC,OAA0B;QACrD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC1C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAChH,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC;gBAAE,MAAM,IAAI,WAAW,CAAC,uCAAuC,CAAC,CAAC;QAC9I,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI;QACR,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC,CAAC;QAC9E,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC;YACL,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,QAA8B,CAAC;YACnC,IAAI,CAAC;gBAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAAC,CAAC;YAC5G,OAAO,KAAK,EAAE,CAAC;gBAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;oBAAE,MAAM,KAAK,CAAC;YAAC,CAAC;YACpF,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAAE,MAAM,IAAI,WAAW,CAAC,sBAAsB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnJ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACxC,MAAM,MAAM,GAAW,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,EAAE,CAAC;YAC/I,MAAM,CAAC,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;gBAChE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC;oBAAE,OAAO;gBAC5H,IAAI,CAAC;oBACH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;wBAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC9C,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC;4BAAE,OAAO;oBACtF,CAAC;oBACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACvC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACtE,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;wBACpB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;oBACxB,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;wBAAE,MAAM,KAAK,CAAC;gBAAC,CAAC;YACvD,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,QAA8B,CAAC;YACnC,IAAI,CAAC;gBAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAAC,CAAC;YAC5G,OAAO,KAAK,EAAE,CAAC;gBAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;oBAAE,MAAM,KAAK,CAAC;YAAC,CAAC;YACpF,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS;gBAAE,MAAM,IAAI,WAAW,CAAC,gCAAgC,CAAC,CAAC;YAC5K,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;gBACxC,MAAM,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC5G,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBACtB,IAAI,QAAQ;oBAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACzC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1E,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;oBAAE,MAAM,IAAI,WAAW,CAAC,sCAAsC,CAAC,CAAC;gBAClL,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,OAAO;gBAAE,MAAM,IAAI,WAAW,CAAC,GAAG,IAAI,KAAK,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,KAAiB;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,WAAW,CAAC,oBAAoB,CAAC,CAAC;QACzD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3K,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YAAC,MAAM,KAAK,CAAC;QAAC,CAAC;IACxD,CAAC;IACD,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACvC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,MAAM,IAAI,WAAW,CAAC,0CAA0C,CAAC,CAAC;YACvF,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IACxF,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Budget } from "./internal.js";
|
|
2
|
+
export interface Options {
|
|
3
|
+
prefix: string;
|
|
4
|
+
suffix?: string;
|
|
5
|
+
digits: number;
|
|
6
|
+
keep: boolean;
|
|
7
|
+
elide: boolean;
|
|
8
|
+
quiet: boolean;
|
|
9
|
+
suppress: boolean;
|
|
10
|
+
information?: "help" | "version";
|
|
11
|
+
operands: string[];
|
|
12
|
+
}
|
|
13
|
+
export declare function integer(value: string, signed?: boolean): bigint | undefined;
|
|
14
|
+
export declare function parseOptions(args: readonly string[], budget: Budget): Options;
|
|
15
|
+
export declare function suffixFormatter(options: Options, budget: Budget): (index: number) => string;
|
|
16
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/commands/csplit/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAyB,MAAM,eAAe,CAAC;AAE9D,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,MAAM,GAAG,SAAS,CAgBzE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CA6D7E;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAqD3F"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { Budget, CsplitError, pathText } from "./internal.js";
|
|
2
|
+
export function integer(value, signed = false) {
|
|
3
|
+
let offset = 0;
|
|
4
|
+
while (offset < value.length && " \t\n\r\v\f".includes(value[offset]))
|
|
5
|
+
offset++;
|
|
6
|
+
const negative = value[offset] === "-";
|
|
7
|
+
if (negative && !signed)
|
|
8
|
+
return undefined;
|
|
9
|
+
if (negative || value[offset] === "+")
|
|
10
|
+
offset++;
|
|
11
|
+
const start = offset;
|
|
12
|
+
let result = 0n;
|
|
13
|
+
const maximum = signed ? negative ? 9223372036854775808n : 9223372036854775807n : 18446744073709551615n;
|
|
14
|
+
for (; offset < value.length; offset++) {
|
|
15
|
+
const digit = value.charCodeAt(offset) - 48;
|
|
16
|
+
if (digit < 0 || digit > 9)
|
|
17
|
+
return undefined;
|
|
18
|
+
result = result * 10n + BigInt(digit);
|
|
19
|
+
if (result > maximum)
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
return offset === start ? undefined : negative ? -result : result;
|
|
23
|
+
}
|
|
24
|
+
export function parseOptions(args, budget) {
|
|
25
|
+
const parsed = { prefix: "xx", digits: 2, keep: false, elide: false, quiet: false, suppress: false, operands: [] };
|
|
26
|
+
const long = {
|
|
27
|
+
prefix: "f", "suffix-format": "b", "keep-files": "k", "elide-empty-files": "z",
|
|
28
|
+
digits: "n", quiet: "q", silent: "s", "suppress-matched": "suppress", help: "help", version: "version",
|
|
29
|
+
};
|
|
30
|
+
let ended = false;
|
|
31
|
+
const apply = (key, value) => {
|
|
32
|
+
if (key === "f")
|
|
33
|
+
parsed.prefix = value;
|
|
34
|
+
else if (key === "b")
|
|
35
|
+
parsed.suffix = value;
|
|
36
|
+
else if (key === "k")
|
|
37
|
+
parsed.keep = true;
|
|
38
|
+
else if (key === "z")
|
|
39
|
+
parsed.elide = true;
|
|
40
|
+
else if (key === "q" || key === "s")
|
|
41
|
+
parsed.quiet = true;
|
|
42
|
+
else if (key === "suppress")
|
|
43
|
+
parsed.suppress = true;
|
|
44
|
+
else if (key === "n") {
|
|
45
|
+
const count = integer(value, true);
|
|
46
|
+
if (count === undefined || count < 0n || count > 2147483647n)
|
|
47
|
+
throw new CsplitError(`invalid number: ${budget.quote(value)}`);
|
|
48
|
+
budget.check(Number(count), budget.limits.maxPathBytes, "suffix width");
|
|
49
|
+
parsed.digits = Number(count);
|
|
50
|
+
}
|
|
51
|
+
else
|
|
52
|
+
parsed.information = key;
|
|
53
|
+
};
|
|
54
|
+
for (let index = 0; index < args.length; index++) {
|
|
55
|
+
const argument = args[index];
|
|
56
|
+
budget.charge();
|
|
57
|
+
if (ended || argument === "-" || !argument.startsWith("-")) {
|
|
58
|
+
parsed.operands.push(argument);
|
|
59
|
+
if (Object.hasOwn(budget.context.env, "POSIXLY_CORRECT"))
|
|
60
|
+
ended = true;
|
|
61
|
+
}
|
|
62
|
+
else if (argument === "--")
|
|
63
|
+
ended = true;
|
|
64
|
+
else if (argument.startsWith("--")) {
|
|
65
|
+
const equals = argument.indexOf("=");
|
|
66
|
+
const name = argument.slice(2, equals < 0 ? undefined : equals);
|
|
67
|
+
const candidates = Object.keys(long).filter(key => key.startsWith(name));
|
|
68
|
+
if (!Object.hasOwn(long, name) && candidates.length > 1)
|
|
69
|
+
throw new CsplitError(`option ${budget.quote(argument)} is ambiguous; possibilities: ${candidates.map(key => budget.quote(`--${key}`)).join(" ")}`, true);
|
|
70
|
+
const selected = Object.hasOwn(long, name) ? name : candidates[0];
|
|
71
|
+
if (!selected)
|
|
72
|
+
throw new CsplitError(`unrecognized option ${budget.quote(argument)}`, true);
|
|
73
|
+
const key = long[selected];
|
|
74
|
+
let value;
|
|
75
|
+
if ("fbn".includes(key) && key.length === 1) {
|
|
76
|
+
value = equals < 0 ? args[++index] : argument.slice(equals + 1);
|
|
77
|
+
if (value === undefined)
|
|
78
|
+
throw new CsplitError(`option '--${selected}' requires an argument`, true);
|
|
79
|
+
}
|
|
80
|
+
else if (equals >= 0)
|
|
81
|
+
throw new CsplitError(`option '--${selected}' doesn't allow an argument`, true);
|
|
82
|
+
apply(key, value);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
for (let offset = 1; offset < argument.length; offset++) {
|
|
86
|
+
const key = argument[offset];
|
|
87
|
+
if (!"fbknsqz".includes(key))
|
|
88
|
+
throw new CsplitError(`invalid option -- ${budget.quote(key)}`, true);
|
|
89
|
+
let value;
|
|
90
|
+
if ("fbn".includes(key)) {
|
|
91
|
+
value = argument.slice(offset + 1) || args[++index];
|
|
92
|
+
if (value === undefined)
|
|
93
|
+
throw new CsplitError(`option requires an argument -- ${budget.quote(key)}`, true);
|
|
94
|
+
offset = argument.length;
|
|
95
|
+
}
|
|
96
|
+
apply(key, value);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (parsed.information)
|
|
100
|
+
return parsed;
|
|
101
|
+
}
|
|
102
|
+
if (parsed.operands.length < 2)
|
|
103
|
+
throw new CsplitError(parsed.operands.length ? `missing operand after ${budget.quote(args.at(-1))}` : "missing operand", true);
|
|
104
|
+
budget.check(parsed.prefix.length, budget.limits.maxPathBytes, "prefix bytes");
|
|
105
|
+
pathText(parsed.prefix);
|
|
106
|
+
return parsed;
|
|
107
|
+
}
|
|
108
|
+
export function suffixFormatter(options, budget) {
|
|
109
|
+
if (options.suffix === undefined)
|
|
110
|
+
return index => String(index).padStart(options.digits, "0");
|
|
111
|
+
const format = options.suffix;
|
|
112
|
+
let before = "", after = "";
|
|
113
|
+
let conversion;
|
|
114
|
+
for (let offset = 0; offset < format.length; offset++) {
|
|
115
|
+
const character = format[offset];
|
|
116
|
+
if (character !== "%" || format[offset + 1] === "%") {
|
|
117
|
+
if (character === "%")
|
|
118
|
+
offset++;
|
|
119
|
+
if (conversion)
|
|
120
|
+
after += character;
|
|
121
|
+
else
|
|
122
|
+
before += character;
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
if (conversion)
|
|
126
|
+
throw new CsplitError("too many % conversion specifications in suffix");
|
|
127
|
+
let flags = "";
|
|
128
|
+
offset++;
|
|
129
|
+
while (offset < format.length && "-0'#".includes(format[offset]))
|
|
130
|
+
flags += format[offset++];
|
|
131
|
+
let width = 0;
|
|
132
|
+
while (offset < format.length && format[offset] >= "0" && format[offset] <= "9") {
|
|
133
|
+
width = width * 10 + Number(format[offset++]);
|
|
134
|
+
budget.check(width, budget.limits.maxPathBytes, "suffix width");
|
|
135
|
+
}
|
|
136
|
+
let precision;
|
|
137
|
+
if (format[offset] === ".") {
|
|
138
|
+
precision = 0;
|
|
139
|
+
offset++;
|
|
140
|
+
while (offset < format.length && format[offset] >= "0" && format[offset] <= "9") {
|
|
141
|
+
precision = precision * 10 + Number(format[offset++]);
|
|
142
|
+
budget.check(precision, budget.limits.maxPathBytes, "suffix precision");
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const type = format[offset];
|
|
146
|
+
if (type === undefined)
|
|
147
|
+
throw new CsplitError("missing conversion specifier in suffix");
|
|
148
|
+
if (!"diuoxX".includes(type))
|
|
149
|
+
throw new CsplitError(`invalid conversion specifier in suffix: ${type >= " " && type <= "~" ? type : `\\${type.charCodeAt(0).toString(8).padStart(3, "0")}`}`);
|
|
150
|
+
const invalid = "diu".includes(type) ? flags.includes("#") ? "#" : "" : flags.includes("'") ? "'" : "";
|
|
151
|
+
if (invalid)
|
|
152
|
+
throw new CsplitError(`invalid flags in conversion specification: %${invalid}${type}`);
|
|
153
|
+
conversion = { width, flags, type, ...(precision === undefined ? {} : { precision }) };
|
|
154
|
+
}
|
|
155
|
+
if (!conversion)
|
|
156
|
+
throw new CsplitError("missing % conversion specification in suffix");
|
|
157
|
+
const { width, precision, flags, type } = conversion;
|
|
158
|
+
budget.check(options.prefix.length + before.length + after.length + Math.max(width, precision ?? 0, 10) + 2, budget.limits.maxPathBytes, "output filename bytes");
|
|
159
|
+
return index => {
|
|
160
|
+
let number = index === 0 && precision === 0 ? "" : index.toString(type === "o" ? 8 : type === "x" || type === "X" ? 16 : 10);
|
|
161
|
+
if (type === "X")
|
|
162
|
+
number = number.toUpperCase();
|
|
163
|
+
number = number.padStart(precision ?? 0, "0");
|
|
164
|
+
let prefix = "";
|
|
165
|
+
if (flags.includes("#")) {
|
|
166
|
+
if (type === "o" && !number.startsWith("0"))
|
|
167
|
+
prefix = "0";
|
|
168
|
+
else if ((type === "x" || type === "X") && index !== 0)
|
|
169
|
+
prefix = type === "X" ? "0X" : "0x";
|
|
170
|
+
}
|
|
171
|
+
if (flags.includes("0") && !flags.includes("-") && precision === undefined)
|
|
172
|
+
number = number.padStart(Math.max(0, width - prefix.length), "0");
|
|
173
|
+
let rendered = prefix + number;
|
|
174
|
+
rendered = flags.includes("-") ? rendered.padEnd(width) : rendered.padStart(width);
|
|
175
|
+
return before + rendered + after;
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/commands/csplit/options.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { RegexSession } from "../regex-execution/portable.js";
|
|
2
|
+
import { Budget } from "./internal.js";
|
|
3
|
+
export interface Pattern {
|
|
4
|
+
readonly argument: string;
|
|
5
|
+
readonly line?: bigint;
|
|
6
|
+
readonly expression?: Uint8Array;
|
|
7
|
+
readonly ignore: boolean;
|
|
8
|
+
readonly offset: bigint;
|
|
9
|
+
repeat: bigint;
|
|
10
|
+
forever: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare class Matcher {
|
|
13
|
+
readonly session: RegexSession;
|
|
14
|
+
readonly budget: Budget;
|
|
15
|
+
constructor(session: RegexSession, budget: Budget);
|
|
16
|
+
search(pattern: Uint8Array, subject: Uint8Array): Promise<boolean>;
|
|
17
|
+
}
|
|
18
|
+
export declare function preparePatterns(args: readonly string[], matcher: Matcher): Promise<readonly Pattern[]>;
|
|
19
|
+
//# sourceMappingURL=patterns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../src/commands/csplit/patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAsB,MAAM,eAAe,CAAC;AAG3D,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,OAAO;IACN,QAAQ,CAAC,OAAO,EAAE,YAAY;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAA9C,OAAO,EAAE,YAAY,EAAW,MAAM,EAAE,MAAM;IAC7D,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;CAkBzE;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CA8C5G"}
|