@haibun/utils 1.55.4 → 1.55.6
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/README.md +1 -1
- package/build/vcapture/index.js +3 -3
- package/build/vcapture/index.js.map +1 -1
- package/build/vcapture/vcapture-lib.d.ts +2 -3
- package/build/vcapture/vcapture-lib.d.ts.map +1 -1
- package/build/vcapture/vcapture-lib.js +34 -46
- package/build/vcapture/vcapture-lib.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -28,7 +28,7 @@ This feature requires Docker Compose to be installed on the host system.
|
|
|
28
28
|
`--tts`: uses local Kokoro text-to-speech.
|
|
29
29
|
Any prose lines in the tests, along with headings like "Scenario" will be spoken (using kokoro-tts).
|
|
30
30
|
|
|
31
|
-
`--pass-env`: HAIBUN_ENV variables to pass through, for example,
|
|
31
|
+
`--pass-env`: HAIBUN_ENV variables to pass through, for example, `--pass-nv=HAIBUN_STAY=failure,HAIBUN_LOG_LEVEL=log`.
|
|
32
32
|
|
|
33
33
|
Runtime options should be passed to package.json script commands using `-- --option`.
|
|
34
34
|
|
package/build/vcapture/index.js
CHANGED
|
@@ -10,10 +10,10 @@ process.on('unhandledRejection', (err) => {
|
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
12
|
const args = process.argv.slice(2);
|
|
13
|
-
const { testToRun,
|
|
14
|
-
runContainer(testToRun,
|
|
13
|
+
const { testToRun, includeDirs, runOptions } = parseVCaptureArgs(args, printHelp);
|
|
14
|
+
runContainer(testToRun, includeDirs, runOptions);
|
|
15
15
|
function printHelp(exitCode = 1) {
|
|
16
|
-
console.error(`Usage: ${process.argv[1]} [--pass-env] [--recreate[=boolean]] [--tts[=boolean]] [--no-capture] [--help] [--res
|
|
16
|
+
console.error(`Usage: ${process.argv[1]} [--feature-filter] [--pass-env=<ENV=VAR,...>] [--recreate[=boolean]] [--tts[=boolean]] [--no-capture] [--help] [--res=WxH] script filter features files ...`);
|
|
17
17
|
process.exit(exitCode);
|
|
18
18
|
}
|
|
19
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vcapture/index.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAc,EAAE,EAAE;IACnD,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;IAC/C,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;AACF,CAAC,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vcapture/index.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAc,EAAE,EAAE;IACnD,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;IAC/C,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;AACF,CAAC,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAElF,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAEjD,SAAS,SAAS,CAAC,QAAQ,GAAG,CAAC;IAC9B,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,8JAA8J,CAAC,CAAC;IACvM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
1
|
type TRunOptions = {
|
|
3
2
|
recreate: boolean;
|
|
4
3
|
tts: boolean;
|
|
5
4
|
capture: boolean;
|
|
6
5
|
res: string;
|
|
7
6
|
passEnv: string | undefined;
|
|
7
|
+
featureFilter: string | undefined;
|
|
8
8
|
};
|
|
9
|
-
export declare const runContainer: (testToRun: any,
|
|
9
|
+
export declare const runContainer: (testToRun: any, includeDirs: any[], thisRunOptions: TRunOptions) => void;
|
|
10
10
|
export declare function parseVCaptureArgs(args: string[], printHelp: (exitCode?: number) => void): {
|
|
11
11
|
runOptions: TRunOptions;
|
|
12
12
|
testToRun: string;
|
|
13
|
-
filter: string;
|
|
14
13
|
includeDirs: string[];
|
|
15
14
|
};
|
|
16
15
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vcapture-lib.d.ts","sourceRoot":"","sources":["../../src/vcapture/vcapture-lib.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vcapture-lib.d.ts","sourceRoot":"","sources":["../../src/vcapture/vcapture-lib.ts"],"names":[],"mappings":"AAQA,KAAK,WAAW,GAAG;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,cAAS,EAAE,kBAAgB,EAAE,gBAAgB,WAAW,SA8EpF,CAAC;AAKF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI;;;;EAiEvF"}
|
|
@@ -1,20 +1,10 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { getPackageLocation } from '@haibun/core/build/lib/util/workspace-lib.js';
|
|
3
1
|
import { execSync } from 'child_process';
|
|
4
2
|
import { resolve } from 'path';
|
|
5
3
|
import { writeFileSync, unlinkSync, readFileSync, mkdirSync, existsSync } from 'fs';
|
|
6
4
|
import { tmpdir } from 'os';
|
|
5
|
+
import { getPackageLocation } from '@haibun/core/build/lib/util/workspace-lib.js';
|
|
7
6
|
import { HOST_PROJECT_DIR } from '@haibun/core/build/lib/defs.js';
|
|
8
|
-
|
|
9
|
-
console.error('cli Unhandled Rejection:', err);
|
|
10
|
-
if (err && err.stack) {
|
|
11
|
-
console.error(err.stack);
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
console.error(err);
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
export const runContainer = (testToRun, filter, includeDirs = [], thisRunOptions) => {
|
|
7
|
+
export const runContainer = (testToRun, includeDirs = [], thisRunOptions) => {
|
|
18
8
|
try {
|
|
19
9
|
const utilDir = resolve(getPackageLocation(import.meta), '..', '..', 'vcapture');
|
|
20
10
|
const projectDir = process.cwd();
|
|
@@ -23,12 +13,8 @@ export const runContainer = (testToRun, filter, includeDirs = [], thisRunOptions
|
|
|
23
13
|
if (thisRunOptions.passEnv) {
|
|
24
14
|
envs.push(thisRunOptions.passEnv);
|
|
25
15
|
}
|
|
26
|
-
const haibunEnvc = (envs.length > 0) ? `HAIBUN_ENV=${envs.join(',')} ` : '';
|
|
27
|
-
if (thisRunOptions.passEnv) {
|
|
28
|
-
haibunEnvc;
|
|
29
|
-
}
|
|
16
|
+
const haibunEnvc = (envs.length > 0) ? `HAIBUN_ENV=${envs.join(',').replace(/,$/, '')} ` : '';
|
|
30
17
|
const captureDir = resolve(projectDir, 'capture');
|
|
31
|
-
console.info('vcapture running with options:', thisRunOptions);
|
|
32
18
|
if (!existsSync(captureDir)) {
|
|
33
19
|
console.log('Creating capture directory');
|
|
34
20
|
mkdirSync(captureDir, { recursive: true });
|
|
@@ -47,7 +33,7 @@ export const runContainer = (testToRun, filter, includeDirs = [], thisRunOptions
|
|
|
47
33
|
'DISPLAY=:99',
|
|
48
34
|
`RES=${thisRunOptions.res}`,
|
|
49
35
|
`${HOST_PROJECT_DIR}=${projectDir}`,
|
|
50
|
-
`COMMAND_TO_RECORD=${HOST_PROJECT_DIR}="${projectDir}" HAIBUN_LOG_LEVEL=log ${haibunEnvc} npm run ${testToRun} ${
|
|
36
|
+
`COMMAND_TO_RECORD=${HOST_PROJECT_DIR}="${projectDir}" HAIBUN_LOG_LEVEL=log ${haibunEnvc} npm run ${testToRun} -- ${thisRunOptions.featureFilter || ""} ${includeDirs.join(' ')}`
|
|
51
37
|
];
|
|
52
38
|
if (thisRunOptions.tts) {
|
|
53
39
|
composeEnvironment.push('HAIBUN_O_HAIBUN_TTS_CMD=/app/speak-to-wav.sh @WHAT@', 'HAIBUN_O_HAIBUN_TTS_PLAY=aplay @WHAT@');
|
|
@@ -68,7 +54,7 @@ ${(asYamlOptions(composeEnvironment))}
|
|
|
68
54
|
`;
|
|
69
55
|
writeFileSync(tmpFile, composeFile);
|
|
70
56
|
console.log(`Building then starting vcapture container using ${utilDir}`);
|
|
71
|
-
console.log(`Mounting directories:\n${composeVolumes}`);
|
|
57
|
+
console.log(`Mounting directories:\n${composeVolumes.join('\n')}`);
|
|
72
58
|
try {
|
|
73
59
|
const cmd = `docker compose -f docker-compose.yml -f ${tmpFile} up ${thisRunOptions.recreate ? '--force-recreate --build' : ''}`;
|
|
74
60
|
console.log('building with:', cmd);
|
|
@@ -99,44 +85,47 @@ export function parseVCaptureArgs(args, printHelp) {
|
|
|
99
85
|
recreate: false,
|
|
100
86
|
tts: false,
|
|
101
87
|
capture: true,
|
|
102
|
-
res: '
|
|
103
|
-
passEnv: undefined
|
|
88
|
+
res: '1280x1024',
|
|
89
|
+
passEnv: undefined,
|
|
90
|
+
featureFilter: undefined
|
|
104
91
|
};
|
|
105
|
-
|
|
92
|
+
// Collect all non-flag arguments in order
|
|
93
|
+
const positional = [];
|
|
106
94
|
for (let i = 0; i < args.length; i++) {
|
|
107
95
|
const arg = args[i];
|
|
108
96
|
if (arg.startsWith('--')) {
|
|
109
97
|
const [what, ...v] = arg.split('=');
|
|
110
98
|
const value = v.join('=');
|
|
111
|
-
const getValue = (defaultValue) => value || (i + 1 < args.length && !args[i + 1].startsWith('--') ? args[++i] : defaultValue);
|
|
112
99
|
switch (what) {
|
|
113
|
-
case '--recreate':
|
|
114
|
-
|
|
100
|
+
case '--recreate': {
|
|
101
|
+
const recreateValue = value;
|
|
102
|
+
runOptions.recreate = recreateValue !== 'false';
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
case '--tts': {
|
|
106
|
+
const ttsValue = value;
|
|
107
|
+
runOptions.tts = ttsValue !== 'false';
|
|
115
108
|
break;
|
|
116
|
-
|
|
117
|
-
|
|
109
|
+
}
|
|
110
|
+
case '--no-capture': {
|
|
111
|
+
const captureValue = value;
|
|
112
|
+
runOptions.capture = !(captureValue !== 'false');
|
|
118
113
|
break;
|
|
119
|
-
|
|
120
|
-
|
|
114
|
+
}
|
|
115
|
+
case '--feature-filter': {
|
|
116
|
+
runOptions.featureFilter = value;
|
|
121
117
|
break;
|
|
118
|
+
}
|
|
122
119
|
case '--pass-env': {
|
|
123
|
-
|
|
124
|
-
if (passEnvValue) {
|
|
125
|
-
runOptions.passEnv = passEnvValue;
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
console.error('Missing value for --pass-env');
|
|
129
|
-
printHelp();
|
|
130
|
-
}
|
|
120
|
+
runOptions.passEnv = value;
|
|
131
121
|
break;
|
|
132
122
|
}
|
|
133
123
|
case '--res': {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
runOptions.res = resValue;
|
|
124
|
+
if (value && value.match(/^\d+x\d+$/)) {
|
|
125
|
+
runOptions.res = value;
|
|
137
126
|
}
|
|
138
127
|
else {
|
|
139
|
-
console.error(`Missing or incorrect WxH value for --res: ${
|
|
128
|
+
console.error(`Missing or incorrect WxH value for --res: ${value}`);
|
|
140
129
|
printHelp();
|
|
141
130
|
}
|
|
142
131
|
break;
|
|
@@ -150,13 +139,12 @@ export function parseVCaptureArgs(args, printHelp) {
|
|
|
150
139
|
}
|
|
151
140
|
}
|
|
152
141
|
else {
|
|
153
|
-
|
|
142
|
+
positional.push(arg);
|
|
154
143
|
}
|
|
155
144
|
}
|
|
156
|
-
const [testToRun,
|
|
157
|
-
if (!testToRun || includeDirs.length === 0)
|
|
145
|
+
const [testToRun, ...includeDirs] = positional;
|
|
146
|
+
if (!testToRun || includeDirs.length === 0)
|
|
158
147
|
printHelp();
|
|
159
|
-
}
|
|
160
|
-
return { runOptions, testToRun, filter, includeDirs };
|
|
148
|
+
return { runOptions, testToRun, includeDirs };
|
|
161
149
|
}
|
|
162
150
|
//# sourceMappingURL=vcapture-lib.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vcapture-lib.js","sourceRoot":"","sources":["../../src/vcapture/vcapture-lib.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vcapture-lib.js","sourceRoot":"","sources":["../../src/vcapture/vcapture-lib.ts"],"names":[],"mappings":"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"}
|