edfcore 0.3.35 → 0.3.36
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/CHANGELOG.md +13 -0
- package/dist/cli-run.d.ts.map +1 -1
- package/dist/cli-run.js +31 -0
- package/dist/cli-run.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/package.json +1 -1
- package/src/cli-run.ts +34 -0
- package/src/constants.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,19 @@ alone does not tell you whether you were affected.
|
|
|
6
6
|
edfcore is pre-1.0. Patch releases have carried behaviour changes where the old behaviour was a
|
|
7
7
|
defect; those are called out below.
|
|
8
8
|
|
|
9
|
+
## 0.3.36
|
|
10
|
+
|
|
11
|
+
- **Fixed** `edfcore recording.edf` — forgetting the subcommand — reporting
|
|
12
|
+
`edfcore recording.edf: no file given`. `parseArgs` puts the first non-flag argument in
|
|
13
|
+
`command`, and the file check ran before the command check, so the message printed the filename
|
|
14
|
+
that WAS given as though it were the command and blamed the one argument that is not missing.
|
|
15
|
+
- The command is now checked first, and a bare filename gets a hint: *unknown command
|
|
16
|
+
"recording.edf" — that looks like a file, so the command before it is missing*. An unknown
|
|
17
|
+
command that does not look like a path is named without the hint, and a real command missing its
|
|
18
|
+
file still says "no file given". Exit code stays 2 for all three.
|
|
19
|
+
- Forgetting the subcommand is the commonest CLI slip after `--help`, which this project already
|
|
20
|
+
had to fix once — `edfcore --help` used to fall through to "no command" and exit 2.
|
|
21
|
+
|
|
9
22
|
## 0.3.35
|
|
10
23
|
|
|
11
24
|
- **Changed** the envelope path to refuse a bad `signalIndex` with `EdfChannelNotFoundError`, which
|
package/dist/cli-run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-run.d.ts","sourceRoot":"","sources":["../src/cli-run.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC3C,QAAQ,CAAC,KAAK,EAAG,IAAI,CAAU;gBAEnB,OAAO,EAAE,MAAM;CAI5B;AAED,iDAAiD;AACjD,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"cli-run.d.ts","sourceRoot":"","sources":["../src/cli-run.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC3C,QAAQ,CAAC,KAAK,EAAG,IAAI,CAAU;gBAEnB,OAAO,EAAE,MAAM;CAI5B;AAED,iDAAiD;AACjD,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAmCD,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAkDvD;AAwBD,wBAAsB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CA2NnE"}
|
package/dist/cli-run.js
CHANGED
|
@@ -54,6 +54,18 @@ Options
|
|
|
54
54
|
|
|
55
55
|
Exit codes: 0 success, 1 the file is unreadable or failed validation, 2 bad usage.
|
|
56
56
|
`;
|
|
57
|
+
/**
|
|
58
|
+
* Every command the switch below handles, so an unrecognised one is refused before the file is
|
|
59
|
+
* looked for. The two must stay in step; the switch's `default` is the backstop if they drift.
|
|
60
|
+
*/
|
|
61
|
+
const COMMANDS = new Set([
|
|
62
|
+
'header',
|
|
63
|
+
'validate',
|
|
64
|
+
'events',
|
|
65
|
+
'gaps',
|
|
66
|
+
'signals',
|
|
67
|
+
'json',
|
|
68
|
+
]);
|
|
57
69
|
export function parseArgs(argv) {
|
|
58
70
|
const positional = [];
|
|
59
71
|
let patient = false;
|
|
@@ -143,6 +155,23 @@ export async function runCli(args, io) {
|
|
|
143
155
|
io.out(USAGE);
|
|
144
156
|
return 2;
|
|
145
157
|
}
|
|
158
|
+
/*
|
|
159
|
+
* The command is checked BEFORE the file, because otherwise the commonest slip of all is
|
|
160
|
+
* misdiagnosed. `parseArgs` puts the first non-flag argument in `command`, so
|
|
161
|
+
* `edfcore recording.edf` — forgetting the subcommand — reported "edfcore recording.edf: no
|
|
162
|
+
* file given", printing the filename that WAS given as though it were the command and blaming
|
|
163
|
+
* the argument that is not missing. The mistake is an unrecognised command, and the branch
|
|
164
|
+
* below already names that correctly (fixed in 0.3.36).
|
|
165
|
+
*/
|
|
166
|
+
if (!COMMANDS.has(command)) {
|
|
167
|
+
// A bare filename is the likely intent, so say which word is missing rather than only which
|
|
168
|
+
// one is wrong.
|
|
169
|
+
const looksLikeAFile = /[./\\]/.test(command);
|
|
170
|
+
io.err(`edfcore: unknown command ${JSON.stringify(command)}` +
|
|
171
|
+
(looksLikeAFile ? ' — that looks like a file, so the command before it is missing' : '') +
|
|
172
|
+
`\n\n${USAGE}`);
|
|
173
|
+
return 2;
|
|
174
|
+
}
|
|
146
175
|
if (file === undefined) {
|
|
147
176
|
io.err(`edfcore ${command}: no file given\n\n${USAGE}`);
|
|
148
177
|
return 2;
|
|
@@ -290,6 +319,8 @@ export async function runCli(args, io) {
|
|
|
290
319
|
return 0;
|
|
291
320
|
}
|
|
292
321
|
default:
|
|
322
|
+
// Unreachable: `COMMANDS` above is the same set, and a command outside it was already
|
|
323
|
+
// refused. Kept so the switch stays total if a case is ever removed without the set.
|
|
293
324
|
io.err(`edfcore: unknown command ${JSON.stringify(command)}\n\n${USAGE}`);
|
|
294
325
|
return 2;
|
|
295
326
|
}
|
package/dist/cli-run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-run.js","sourceRoot":"","sources":["../src/cli-run.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,aAAc,SAAQ,UAAU;IAClC,KAAK,GAAG,IAAa,CAAC;IAE/B,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AASD,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;CAkBb,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-run.js","sourceRoot":"","sources":["../src/cli-run.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -109,5 +109,5 @@ export declare const SIGNAL_FIELD_BLOCK_OFFSETS: {
|
|
|
109
109
|
readonly reserved: 224;
|
|
110
110
|
};
|
|
111
111
|
/** Published package version. Kept in sync with package.json by a test. */
|
|
112
|
-
export declare const VERSION = "0.3.
|
|
112
|
+
export declare const VERSION = "0.3.36";
|
|
113
113
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.js
CHANGED
package/package.json
CHANGED
package/src/cli-run.ts
CHANGED
|
@@ -66,6 +66,19 @@ Options
|
|
|
66
66
|
Exit codes: 0 success, 1 the file is unreadable or failed validation, 2 bad usage.
|
|
67
67
|
`;
|
|
68
68
|
|
|
69
|
+
/**
|
|
70
|
+
* Every command the switch below handles, so an unrecognised one is refused before the file is
|
|
71
|
+
* looked for. The two must stay in step; the switch's `default` is the backstop if they drift.
|
|
72
|
+
*/
|
|
73
|
+
const COMMANDS: ReadonlySet<string> = new Set([
|
|
74
|
+
'header',
|
|
75
|
+
'validate',
|
|
76
|
+
'events',
|
|
77
|
+
'gaps',
|
|
78
|
+
'signals',
|
|
79
|
+
'json',
|
|
80
|
+
]);
|
|
81
|
+
|
|
69
82
|
export interface Args {
|
|
70
83
|
readonly command: string | undefined;
|
|
71
84
|
readonly file: string | undefined;
|
|
@@ -170,6 +183,25 @@ export async function runCli(args: Args, io: CliIo): Promise<number> {
|
|
|
170
183
|
io.out(USAGE);
|
|
171
184
|
return 2;
|
|
172
185
|
}
|
|
186
|
+
/*
|
|
187
|
+
* The command is checked BEFORE the file, because otherwise the commonest slip of all is
|
|
188
|
+
* misdiagnosed. `parseArgs` puts the first non-flag argument in `command`, so
|
|
189
|
+
* `edfcore recording.edf` — forgetting the subcommand — reported "edfcore recording.edf: no
|
|
190
|
+
* file given", printing the filename that WAS given as though it were the command and blaming
|
|
191
|
+
* the argument that is not missing. The mistake is an unrecognised command, and the branch
|
|
192
|
+
* below already names that correctly (fixed in 0.3.36).
|
|
193
|
+
*/
|
|
194
|
+
if (!COMMANDS.has(command)) {
|
|
195
|
+
// A bare filename is the likely intent, so say which word is missing rather than only which
|
|
196
|
+
// one is wrong.
|
|
197
|
+
const looksLikeAFile = /[./\\]/.test(command);
|
|
198
|
+
io.err(
|
|
199
|
+
`edfcore: unknown command ${JSON.stringify(command)}` +
|
|
200
|
+
(looksLikeAFile ? ' — that looks like a file, so the command before it is missing' : '') +
|
|
201
|
+
`\n\n${USAGE}`,
|
|
202
|
+
);
|
|
203
|
+
return 2;
|
|
204
|
+
}
|
|
173
205
|
if (file === undefined) {
|
|
174
206
|
io.err(`edfcore ${command}: no file given\n\n${USAGE}`);
|
|
175
207
|
return 2;
|
|
@@ -345,6 +377,8 @@ export async function runCli(args: Args, io: CliIo): Promise<number> {
|
|
|
345
377
|
}
|
|
346
378
|
|
|
347
379
|
default:
|
|
380
|
+
// Unreachable: `COMMANDS` above is the same set, and a command outside it was already
|
|
381
|
+
// refused. Kept so the switch stays total if a case is ever removed without the set.
|
|
348
382
|
io.err(`edfcore: unknown command ${JSON.stringify(command)}\n\n${USAGE}`);
|
|
349
383
|
return 2;
|
|
350
384
|
}
|
package/src/constants.ts
CHANGED