@haibun/utils 1.58.0 → 1.58.1
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/build/vcapture/index.js +3 -3
- package/build/vcapture/index.js.map +1 -1
- package/build/vcapture/vcapture-lib.d.ts +13 -5
- package/build/vcapture/vcapture-lib.d.ts.map +1 -1
- package/build/vcapture/vcapture-lib.js +47 -34
- package/build/vcapture/vcapture-lib.js.map +1 -1
- package/package.json +1 -1
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, includeDirs,
|
|
14
|
-
runContainer(testToRun, includeDirs,
|
|
13
|
+
const { testToRun, includeDirs, captureOptions } = parseVCaptureArgs(args, printHelp);
|
|
14
|
+
runContainer(testToRun, includeDirs, captureOptions);
|
|
15
15
|
function printHelp(exitCode = 1) {
|
|
16
|
-
console.error(`Usage: ${process.argv[1]} [--feature-filter] [--
|
|
16
|
+
console.error(`Usage: ${process.argv[1]} [--feature-filter] [--cli-env=<name=value,...>] [--pass-env=<VAR=FOO>] [--pass-env ...] [--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,WAAW,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,cAAc,EAAE,GAAG,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAEtF,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;AAErD,SAAS,SAAS,CAAC,QAAQ,GAAG,CAAC;IAC9B,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,wMAAwM,CAAC,CAAC;IACjP,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -1,16 +1,24 @@
|
|
|
1
|
-
type
|
|
1
|
+
export type TCaptureOptions = {
|
|
2
2
|
recreate: boolean;
|
|
3
3
|
tts: boolean;
|
|
4
4
|
capture: boolean;
|
|
5
5
|
res: string;
|
|
6
|
-
passEnv: string | undefined;
|
|
6
|
+
passEnv: string[] | undefined;
|
|
7
|
+
cliEnv: string[] | undefined;
|
|
7
8
|
featureFilter: string | undefined;
|
|
8
9
|
};
|
|
9
|
-
export declare const runContainer: (testToRun: any, includeDirs: any[],
|
|
10
|
+
export declare const runContainer: (testToRun: any, includeDirs: any[], thisCaptureOptions: TCaptureOptions) => void;
|
|
11
|
+
export declare function getContainerSetup(thisRunOptions: TCaptureOptions, includeDirs: string[], testToRun: string): {
|
|
12
|
+
tmpFile: string;
|
|
13
|
+
composeEnvironment: string[];
|
|
14
|
+
utilDir: string;
|
|
15
|
+
composeVolumes: string[];
|
|
16
|
+
projectDir: string;
|
|
17
|
+
buildContextDir: string;
|
|
18
|
+
};
|
|
10
19
|
export declare function parseVCaptureArgs(args: string[], printHelp: (exitCode?: number) => void): {
|
|
11
|
-
|
|
20
|
+
captureOptions: TCaptureOptions;
|
|
12
21
|
testToRun: string;
|
|
13
22
|
includeDirs: string[];
|
|
14
23
|
};
|
|
15
|
-
export {};
|
|
16
24
|
//# sourceMappingURL=vcapture-lib.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vcapture-lib.d.ts","sourceRoot":"","sources":["../../src/vcapture/vcapture-lib.ts"],"names":[],"mappings":"AAQA,
|
|
1
|
+
{"version":3,"file":"vcapture-lib.d.ts","sourceRoot":"","sources":["../../src/vcapture/vcapture-lib.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,eAAe,GAAG;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,cAAS,EAAE,kBAAgB,EAAE,oBAAoB,eAAe,SA6C5F,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM;;;;;;;EAuC1G;AAMD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI;;;;EAsEvF"}
|
|
@@ -4,40 +4,17 @@ import { writeFileSync, unlinkSync, readFileSync, mkdirSync, existsSync } from '
|
|
|
4
4
|
import { tmpdir } from 'os';
|
|
5
5
|
import { getPackageLocation } from '@haibun/core/build/lib/util/workspace-lib.js';
|
|
6
6
|
import { HOST_PROJECT_DIR } from '@haibun/core/build/lib/util/actualURI.js';
|
|
7
|
-
export const runContainer = (testToRun, includeDirs = [],
|
|
7
|
+
export const runContainer = (testToRun, includeDirs = [], thisCaptureOptions) => {
|
|
8
8
|
try {
|
|
9
|
-
const utilDir =
|
|
10
|
-
const projectDir = process.cwd();
|
|
11
|
-
const tmpFile = resolve(tmpdir(), `docker-compose.override-${Date.now()}.yml`);
|
|
12
|
-
const envs = existsSync(`${projectDir}/.env`) ? readFileSync(`${projectDir}/.env`, 'utf8').split('\n').filter(l => l.length > 0) : [];
|
|
13
|
-
const haibunEnvc = (envs.length > 0) ? `HAIBUN_ENV=${envs.join(',').replace(/,$/, '')} ` : '';
|
|
9
|
+
const { tmpFile, composeEnvironment, utilDir, composeVolumes, projectDir, buildContextDir } = getContainerSetup(thisCaptureOptions, includeDirs, testToRun);
|
|
14
10
|
const captureDir = resolve(projectDir, 'capture');
|
|
15
11
|
if (!existsSync(captureDir)) {
|
|
16
12
|
console.log('Creating capture directory');
|
|
17
13
|
mkdirSync(captureDir, { recursive: true });
|
|
18
14
|
}
|
|
19
|
-
const buildContextDir = resolve(tmpdir(), `build-context-${Date.now()}`);
|
|
20
15
|
mkdirSync(buildContextDir, { recursive: true });
|
|
21
16
|
execSync(`cp ${projectDir}/*.json ${buildContextDir}/`);
|
|
22
17
|
execSync(`cp ${utilDir}/*.sh ${utilDir}/kokoro-speak.cjs ${buildContextDir}/`);
|
|
23
|
-
const dirsToMount = [...includeDirs, 'capture'];
|
|
24
|
-
const composeVolumes = [
|
|
25
|
-
`${projectDir}/capture:/app/capture`,
|
|
26
|
-
`${projectDir}:/app/output`,
|
|
27
|
-
...dirsToMount.map(dir => `${resolve(projectDir, dir)}:/app/${dir}`)
|
|
28
|
-
];
|
|
29
|
-
const composeEnvironment = [
|
|
30
|
-
'DISPLAY=:99',
|
|
31
|
-
`RES=${thisRunOptions.res}`,
|
|
32
|
-
`${HOST_PROJECT_DIR}=${projectDir}`,
|
|
33
|
-
`COMMAND_TO_RECORD=${HOST_PROJECT_DIR}="${projectDir}" HAIBUN_LOG_LEVEL=log ${haibunEnvc} ${thisRunOptions.passEnv || ""} npm run ${testToRun} -- ${thisRunOptions.featureFilter || ""} ${includeDirs.join(' ')}`
|
|
34
|
-
];
|
|
35
|
-
if (thisRunOptions.tts) {
|
|
36
|
-
composeEnvironment.push('HAIBUN_O_HAIBUN_TTS_CMD=/app/speak-to-wav.sh @WHAT@', 'HAIBUN_O_HAIBUN_TTS_PLAY=aplay @WHAT@');
|
|
37
|
-
}
|
|
38
|
-
if (thisRunOptions.capture) {
|
|
39
|
-
composeEnvironment.push('HAIBUN_O_HAIBUN_CAPTURE_START=/app/capture-start.sh', 'HAIBUN_O_HAIBUN_CAPTURE_STOP=/app/capture-stop.sh');
|
|
40
|
-
}
|
|
41
18
|
const composeFile = `
|
|
42
19
|
services:
|
|
43
20
|
haibun-recorder:
|
|
@@ -53,7 +30,7 @@ ${(asYamlOptions(composeEnvironment))}
|
|
|
53
30
|
console.log(`Building then starting vcapture container using ${utilDir}`);
|
|
54
31
|
console.log(`Mounting directories:\n${composeVolumes.join('\n')}`);
|
|
55
32
|
try {
|
|
56
|
-
const cmd = `docker compose -f docker-compose.yml -f ${tmpFile} up ${
|
|
33
|
+
const cmd = `docker compose -f docker-compose.yml -f ${tmpFile} up ${thisCaptureOptions.recreate ? '--force-recreate --build' : ''}`;
|
|
57
34
|
console.log('building with:', cmd);
|
|
58
35
|
execSync(cmd, {
|
|
59
36
|
cwd: utilDir,
|
|
@@ -74,13 +51,45 @@ ${(asYamlOptions(composeEnvironment))}
|
|
|
74
51
|
process.exit(1);
|
|
75
52
|
}
|
|
76
53
|
};
|
|
54
|
+
export function getContainerSetup(thisRunOptions, includeDirs, testToRun) {
|
|
55
|
+
const utilDir = resolve(getPackageLocation(import.meta), '..', '..', 'vcapture');
|
|
56
|
+
const projectDir = process.cwd();
|
|
57
|
+
const tmpFile = resolve(tmpdir(), `docker-compose.override-${Date.now()}.yml`);
|
|
58
|
+
const envs = existsSync(`${projectDir}/.env`) ? readFileSync(`${projectDir}/.env`, 'utf8').split('\n').filter(l => l.length > 0) : [];
|
|
59
|
+
if (thisRunOptions.cliEnv) {
|
|
60
|
+
envs.push(...thisRunOptions.cliEnv);
|
|
61
|
+
}
|
|
62
|
+
const haibunCliEnvc = (envs.length > 0) ? `HAIBUN_ENV=${envs.join(',').replace(/,$/, '')} ` : '';
|
|
63
|
+
const buildContextDir = resolve(tmpdir(), `build-context-${Date.now()}`);
|
|
64
|
+
const dirsToMount = [...includeDirs, 'capture'];
|
|
65
|
+
const composeVolumes = [
|
|
66
|
+
`${projectDir}/capture:/app/capture`,
|
|
67
|
+
`${projectDir}:/app/output`,
|
|
68
|
+
...dirsToMount.map(dir => `${resolve(projectDir, dir)}:/app/${dir}`)
|
|
69
|
+
];
|
|
70
|
+
const flags = thisRunOptions.featureFilter ? ` --${thisRunOptions.featureFilter}` : '';
|
|
71
|
+
const composeEnvironment = [
|
|
72
|
+
'DISPLAY=:99',
|
|
73
|
+
`RES=${thisRunOptions.res}`,
|
|
74
|
+
`${HOST_PROJECT_DIR}=${projectDir}`,
|
|
75
|
+
`COMMAND_TO_RECORD=${HOST_PROJECT_DIR}="${projectDir}" HAIBUN_LOG_LEVEL=log ${haibunCliEnvc} ${thisRunOptions.passEnv?.join(' ') || ""} npm run ${testToRun}${flags}`
|
|
76
|
+
];
|
|
77
|
+
if (thisRunOptions.tts) {
|
|
78
|
+
composeEnvironment.push('HAIBUN_O_HAIBUN_TTS_CMD=/app/speak-to-wav.sh @WHAT@', 'HAIBUN_O_HAIBUN_TTS_PLAY=aplay @WHAT@');
|
|
79
|
+
}
|
|
80
|
+
if (thisRunOptions.capture) {
|
|
81
|
+
composeEnvironment.push('HAIBUN_O_HAIBUN_CAPTURE_START=/app/capture-start.sh', 'HAIBUN_O_HAIBUN_CAPTURE_STOP=/app/capture-stop.sh');
|
|
82
|
+
}
|
|
83
|
+
return { tmpFile, composeEnvironment, utilDir, composeVolumes, projectDir, buildContextDir };
|
|
84
|
+
}
|
|
77
85
|
function asYamlOptions(options) {
|
|
78
86
|
return options.map(o => ` - ${o}`).join('\n');
|
|
79
87
|
}
|
|
80
88
|
export function parseVCaptureArgs(args, printHelp) {
|
|
81
|
-
const
|
|
89
|
+
const captureOptions = {
|
|
82
90
|
recreate: false,
|
|
83
91
|
tts: false,
|
|
92
|
+
cliEnv: undefined,
|
|
84
93
|
capture: true,
|
|
85
94
|
res: '1280x1024',
|
|
86
95
|
passEnv: undefined,
|
|
@@ -96,30 +105,34 @@ export function parseVCaptureArgs(args, printHelp) {
|
|
|
96
105
|
switch (what) {
|
|
97
106
|
case '--recreate': {
|
|
98
107
|
const recreateValue = value;
|
|
99
|
-
|
|
108
|
+
captureOptions.recreate = recreateValue !== 'false';
|
|
100
109
|
break;
|
|
101
110
|
}
|
|
102
111
|
case '--tts': {
|
|
103
112
|
const ttsValue = value;
|
|
104
|
-
|
|
113
|
+
captureOptions.tts = ttsValue !== 'false';
|
|
105
114
|
break;
|
|
106
115
|
}
|
|
107
116
|
case '--no-capture': {
|
|
108
117
|
const captureValue = value;
|
|
109
|
-
|
|
118
|
+
captureOptions.capture = !(captureValue !== 'false');
|
|
110
119
|
break;
|
|
111
120
|
}
|
|
112
121
|
case '--feature-filter': {
|
|
113
|
-
|
|
122
|
+
captureOptions.featureFilter = value;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
case '--cli-env': {
|
|
126
|
+
captureOptions.cliEnv = captureOptions.cliEnv ? [...captureOptions.cliEnv, value] : [value];
|
|
114
127
|
break;
|
|
115
128
|
}
|
|
116
129
|
case '--pass-env': {
|
|
117
|
-
|
|
130
|
+
captureOptions.passEnv = captureOptions.passEnv ? [...captureOptions.passEnv, value] : [value];
|
|
118
131
|
break;
|
|
119
132
|
}
|
|
120
133
|
case '--res': {
|
|
121
134
|
if (value && value.match(/^\d+x\d+$/)) {
|
|
122
|
-
|
|
135
|
+
captureOptions.res = value;
|
|
123
136
|
}
|
|
124
137
|
else {
|
|
125
138
|
console.error(`Missing or incorrect WxH value for --res: ${value}`);
|
|
@@ -142,6 +155,6 @@ export function parseVCaptureArgs(args, printHelp) {
|
|
|
142
155
|
const [testToRun, ...includeDirs] = positional;
|
|
143
156
|
if (!testToRun || includeDirs.length === 0)
|
|
144
157
|
printHelp();
|
|
145
|
-
return {
|
|
158
|
+
return { captureOptions, testToRun, includeDirs };
|
|
146
159
|
}
|
|
147
160
|
//# sourceMappingURL=vcapture-lib.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vcapture-lib.js","sourceRoot":"","sources":["../../src/vcapture/vcapture-lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"vcapture-lib.js","sourceRoot":"","sources":["../../src/vcapture/vcapture-lib.ts"],"names":[],"mappings":"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"}
|