@haibun/utils 1.51.2 → 1.51.7
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/walkthrough-container/index.js +5 -2
- package/build/walkthrough-container/index.js.map +1 -1
- package/package.json +2 -2
- package/walkthrough-container/Dockerfile +3 -8
- package/walkthrough-container/capture-start.sh +29 -0
- package/walkthrough-container/capture-stop.sh +8 -0
- package/walkthrough-container/entrypoint.sh +1 -32
|
@@ -5,13 +5,13 @@ import { resolve } from 'path';
|
|
|
5
5
|
import { writeFileSync, unlinkSync, readFileSync, mkdirSync, existsSync } from 'fs';
|
|
6
6
|
import { tmpdir } from 'os';
|
|
7
7
|
import { HOST_PROJECT_DIR } from '@haibun/core/build/lib/defs.js';
|
|
8
|
+
const VIRTUAL_SCREEN_RESOLUTION = '1280x1024';
|
|
8
9
|
const runContainer = (testToRun, filter, includeDirs = [], recreate) => {
|
|
9
10
|
try {
|
|
10
11
|
const utilDir = resolve(getPackageLocation(import.meta), '..', '..', 'walkthrough-container');
|
|
11
12
|
const projectDir = process.cwd();
|
|
12
13
|
const tmpFile = resolve(tmpdir(), `docker-compose.override-${Date.now()}.yml`);
|
|
13
14
|
const envs = existsSync(`${projectDir}/.env`) ? readFileSync(`${projectDir}/.env`, 'utf8').split('\n').filter(l => l.length > 0) : [];
|
|
14
|
-
console.log('envs', envs);
|
|
15
15
|
const haibunEnvc = (envs.length > 0) ? `HAIBUN_ENV=${envs.join(',')} ` : '';
|
|
16
16
|
// Ensure capture directory exists
|
|
17
17
|
const captureDir = resolve(projectDir, 'capture');
|
|
@@ -31,7 +31,7 @@ const runContainer = (testToRun, filter, includeDirs = [], recreate) => {
|
|
|
31
31
|
// Copy project's package files to build context
|
|
32
32
|
execSync(`cp ${projectDir}/package*.json ${buildContextDir}/`);
|
|
33
33
|
// Copy container files to build context
|
|
34
|
-
execSync(`cp ${utilDir}
|
|
34
|
+
execSync(`cp ${utilDir}/*.sh ${utilDir}/kokoro-speak.cjs ${buildContextDir}/`);
|
|
35
35
|
const composeFile = `
|
|
36
36
|
services:
|
|
37
37
|
haibun-recorder:
|
|
@@ -44,8 +44,11 @@ services:
|
|
|
44
44
|
${volumeConfig}
|
|
45
45
|
environment:
|
|
46
46
|
- DISPLAY=:99
|
|
47
|
+
- RES=${VIRTUAL_SCREEN_RESOLUTION}
|
|
47
48
|
- HAIBUN_O_HAIBUN_TTS_CMD=/app/speak-to-wav.sh @WHAT@
|
|
48
49
|
- HAIBUN_O_HAIBUN_TTS_PLAY=aplay @WHAT@
|
|
50
|
+
- HAIBUN_O_HAIBUN_CAPTURE_START=/app/capture-start.sh
|
|
51
|
+
- HAIBUN_O_HAIBUN_CAPTURE_STOP=/app/capture-stop.sh
|
|
49
52
|
- ${HOST_PROJECT_DIR}=${projectDir}
|
|
50
53
|
- COMMAND_TO_RECORD=${HOST_PROJECT_DIR}="${projectDir}" HAIBUN_LOG_LEVEL=log ${haibunEnvc} npm run ${testToRun} ${filter}
|
|
51
54
|
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/walkthrough-container/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,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;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/walkthrough-container/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haibun/utils",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.51.
|
|
4
|
+
"version": "1.51.7",
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"files": [
|
|
@@ -27,5 +27,5 @@
|
|
|
27
27
|
"author": "",
|
|
28
28
|
"license": "ISC",
|
|
29
29
|
"gitHead": "7cf9680bd922fb622fb59f1e6bf5b65284cb8fd5",
|
|
30
|
-
"dependencies": { "@haibun/cli": "1.51.
|
|
30
|
+
"dependencies": { "@haibun/cli": "1.51.7", "@haibun/core": "1.51.7" }
|
|
31
31
|
}
|
|
@@ -31,16 +31,11 @@ RUN sed -i 's/geteuid/getppid/' /usr/bin/vlc
|
|
|
31
31
|
|
|
32
32
|
WORKDIR /app
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
COPY package*.json kokoro-speak.cjs *.sh ./
|
|
35
|
+
RUN chmod +x *.sh
|
|
36
36
|
|
|
37
|
-
#
|
|
38
|
-
RUN npm i && \
|
|
39
|
-
npm install kokoro-js
|
|
37
|
+
RUN npm i # && npm install kokoro-js
|
|
40
38
|
|
|
41
39
|
RUN mkdir -p /run/user/1000 && chmod 700 /run/user/1000
|
|
42
40
|
|
|
43
|
-
COPY entrypoint.sh ./
|
|
44
|
-
RUN chmod +x speak-to-wav.sh entrypoint.sh
|
|
45
|
-
|
|
46
41
|
ENTRYPOINT ["./entrypoint.sh"]
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#!/usr/bin/sh
|
|
2
|
+
|
|
3
|
+
RES=$(xdpyinfo | awk '/dimensions:/ {print $2}')
|
|
4
|
+
|
|
5
|
+
# Start recording
|
|
6
|
+
ffmpeg \
|
|
7
|
+
-f x11grab \
|
|
8
|
+
-r 30 \
|
|
9
|
+
-thread_queue_size 512 \
|
|
10
|
+
-s "$RES" \
|
|
11
|
+
-i "$DISPLAY" \
|
|
12
|
+
-f pulse \
|
|
13
|
+
-thread_queue_size 512 \
|
|
14
|
+
-i default \
|
|
15
|
+
-c:v libvpx-vp9 \
|
|
16
|
+
-deadline realtime \
|
|
17
|
+
-speed 6 \
|
|
18
|
+
-c:a libopus \
|
|
19
|
+
-flush_packets 1 \
|
|
20
|
+
"output/walkthrough.webm" &
|
|
21
|
+
|
|
22
|
+
echo $! > /tmp/ffmpeg.pid
|
|
23
|
+
|
|
24
|
+
FFMPEG_PID=$(cat /tmp/ffmpeg.pid)
|
|
25
|
+
sleep 1
|
|
26
|
+
if ! ps -p "$FFMPEG_PID" > /dev/null; then
|
|
27
|
+
echo "FFmpeg failed to start"
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
@@ -13,7 +13,6 @@ echo "entrypoint is setting up the environment (logfile is $LOGFILE)"
|
|
|
13
13
|
|
|
14
14
|
# Start Xvfb in the background
|
|
15
15
|
echo "Setup Xvfb..."
|
|
16
|
-
export RES=1280x800
|
|
17
16
|
Xvfb $DISPLAY -screen 0 ${RES}x24 -ac +extension GLX +render -noreset &
|
|
18
17
|
|
|
19
18
|
# Start x11vnc
|
|
@@ -46,40 +45,10 @@ echo "entrypoint is setting up the environment (logfile is $LOGFILE)"
|
|
|
46
45
|
pactl load-module module-virtual-sink sink_name=v1
|
|
47
46
|
pactl set-default-sink v1
|
|
48
47
|
pactl set-default-source v1.monitor
|
|
49
|
-
sleep 1
|
|
50
|
-
|
|
51
|
-
# Start recording
|
|
52
|
-
ffmpeg \
|
|
53
|
-
-f x11grab \
|
|
54
|
-
-r 30 \
|
|
55
|
-
-thread_queue_size 512 \
|
|
56
|
-
-s "$RES" \
|
|
57
|
-
-i "$DISPLAY" \
|
|
58
|
-
-f pulse \
|
|
59
|
-
-thread_queue_size 512 \
|
|
60
|
-
-i default \
|
|
61
|
-
-c:v libvpx-vp9 \
|
|
62
|
-
-deadline realtime \
|
|
63
|
-
-speed 6 \
|
|
64
|
-
-c:a libopus \
|
|
65
|
-
-flush_packets 1 \
|
|
66
|
-
"output/walkthrough.webm" &
|
|
67
|
-
|
|
68
|
-
FFMPEG_PID=$!
|
|
69
48
|
} > "$LOGFILE" 2>&1
|
|
70
49
|
|
|
71
|
-
# Check if ffmpeg started successfully
|
|
72
|
-
sleep 1
|
|
73
|
-
if ! ps -p "$FFMPEG_PID" > /dev/null; then
|
|
74
|
-
echo "FFmpeg failed to start"
|
|
75
|
-
cat "$LOGFILE"
|
|
76
|
-
exit 1
|
|
77
|
-
fi
|
|
78
|
-
|
|
79
50
|
echo "About to run $COMMAND_TO_RECORD"
|
|
80
51
|
eval "$COMMAND_TO_RECORD"
|
|
81
52
|
echo "finalizing file://${HOST_PROJECT_DIR}/walkthrough.webm"
|
|
82
|
-
sleep
|
|
83
|
-
|
|
84
|
-
kill -SIGHUP "$FFMPEG_PID"
|
|
53
|
+
sleep 5000
|
|
85
54
|
|