1 From 69016ee6a4c0e67182c43b7c0d0246f831da1db0 Mon Sep 17 00:00:00 20012 From: gl0w <gl0w@world>3 Date: Thu, 10 Sep 2026 07:12:21 +01004 Subject: [PATCH 1/2] m6/entrypoint-testfix: match POSIX-safe argv form5 6 ---7 .../merges/2026-09-10T06-11-44.077140678Z.md | 9 +++8 .../patch.diff | 73 +++++++++++++++++++9 .../pr.md | 12 +++10 tests/header_config.rs | 6 +-11 4 files changed, 98 insertions(+), 2 deletions(-)12 create mode 100644 .forge/merges/2026-09-10T06-11-44.077140678Z.md13 create mode 100644 .forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/patch.diff14 create mode 100644 .forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/pr.md15 16 diff --git a/.forge/merges/2026-09-10T06-11-44.077140678Z.md b/.forge/merges/2026-09-10T06-11-44.077140678Z.md17 new file mode 10064418 index 0000000..7345e5719 --- /dev/null20 +++ b/.forge/merges/2026-09-10T06-11-44.077140678Z.md21 @@ -0,0 +1,9 @@22 +---23 +pr: c1de23b1-1f96-42ea-8661-9468abf6409a24 +applied: false25 +verdict: fail26 +resolved: []27 +created: 2026-09-10T06:11:44.077140678Z28 +---29 +failed at 02_test.sh.30 +patch: 447b0de892e249edf47a7aaded277d93d25b1dd831 diff --git a/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/patch.diff b/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/patch.diff32 new file mode 10064433 index 0000000..1e3a84934 --- /dev/null35 +++ b/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/patch.diff36 @@ -0,0 +1,73 @@37 +From aa2f0d1bc82722efe09d0ee0a471058775ff06ab Mon Sep 17 00:00:00 200138 +From: gl0w <gl0w@world>39 +Date: Thu, 10 Sep 2026 07:11:44 +010040 +Subject: [PATCH] m6/entrypoint: POSIX-safe argv (spaces/quotes in41 + name/description)42 +43 +---44 + entrypoint.sh | 31 +++++++++++++++----------------45 + 1 file changed, 15 insertions(+), 16 deletions(-)46 +47 +diff --git a/entrypoint.sh b/entrypoint.sh48 +index 6d4f149..191fbe9 10075549 +--- a/entrypoint.sh50 ++++ b/entrypoint.sh51 +@@ -26,40 +26,39 @@ set -eu52 + # build below would misreport "branch not found".53 + git config --global --add safe.directory /data/repo54 + 55 +-BUILD_ARGS=""56 ++# Build argv with "$@" (POSIX-safe: values with spaces/quotes survive).57 ++set -- /data/repo -o /srv/www58 + if [ -n "${HU13_BRANCH:-}" ]; then59 +- BUILD_ARGS="$BUILD_ARGS --branch $HU13_BRANCH"60 ++ set -- "$@" --branch "$HU13_BRANCH"61 + fi62 + if [ -n "${HU13_CLONE_URL:-}" ]; then63 +- BUILD_ARGS="$BUILD_ARGS --clone-url $HU13_CLONE_URL"64 ++ set -- "$@" --clone-url "$HU13_CLONE_URL"65 + fi66 + if [ -n "${HU13_REPO_NAME:-}" ]; then67 +- BUILD_ARGS="$BUILD_ARGS --repo-name $HU13_REPO_NAME"68 ++ set -- "$@" --repo-name "$HU13_REPO_NAME"69 + fi70 + if [ -n "${HU13_DESCRIPTION:-}" ]; then71 +- BUILD_ARGS="$BUILD_ARGS --description $HU13_DESCRIPTION"72 ++ set -- "$@" --description "$HU13_DESCRIPTION"73 + fi74 ++hu13 build "$@"75 + 76 +-# shellcheck disable=SC208677 +-hu13 build /data/repo -o /srv/www $BUILD_ARGS78 ++set -- --www /srv/www --inbox-dir /data/inbox \79 ++ --listen "${HU13_LISTEN:-0.0.0.0:39313}"80 + 81 +-SERVE_ARGS=""82 + if [ -n "${HU13_MAX_TITLE:-}" ]; then83 +- SERVE_ARGS="$SERVE_ARGS --max-title $HU13_MAX_TITLE"84 ++ set -- "$@" --max-title "$HU13_MAX_TITLE"85 + fi86 + if [ -n "${HU13_MAX_BODY:-}" ]; then87 +- SERVE_ARGS="$SERVE_ARGS --max-body $HU13_MAX_BODY"88 ++ set -- "$@" --max-body "$HU13_MAX_BODY"89 + fi90 + if [ -n "${HU13_MAX_BYTES:-}" ]; then91 +- SERVE_ARGS="$SERVE_ARGS --max-bytes $HU13_MAX_BYTES"92 ++ set -- "$@" --max-bytes "$HU13_MAX_BYTES"93 + fi94 + if [ -n "${HU13_RATE_PER_HOUR:-}" ]; then95 +- SERVE_ARGS="$SERVE_ARGS --rate-per-hour $HU13_RATE_PER_HOUR"96 ++ set -- "$@" --rate-per-hour "$HU13_RATE_PER_HOUR"97 + fi98 + if [ -n "${HU13_QUOTA:-}" ]; then99 +- SERVE_ARGS="$SERVE_ARGS --quota $HU13_QUOTA"100 ++ set -- "$@" --quota "$HU13_QUOTA"101 + fi102 + 103 +-# shellcheck disable=SC2086104 +-exec hu13 serve --www /srv/www --inbox-dir /data/inbox \105 +- --listen "${HU13_LISTEN:-0.0.0.0:39313}" $SERVE_ARGS106 ++exec hu13 serve "$@"107 +-- 108 +2.55.0109 +110 diff --git a/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/pr.md b/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/pr.md111 new file mode 100644112 index 0000000..43d0194113 --- /dev/null114 +++ b/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/pr.md115 @@ -0,0 +1,12 @@116 +---117 +id: c1de23b1-1f96-42ea-8661-9468abf6409a118 +title: m6/entrypoint-quote119 +state: open120 +base: master121 +head: m6/entrypoint-quote122 +draft: false123 +issues: []124 +ci: fail125 +created: 2026-09-10T06:11:44.052625600Z126 +updated: 2026-09-10T06:11:56.573743204Z127 +---128 diff --git a/tests/header_config.rs b/tests/header_config.rs129 index ef81f20..374d829 100644130 --- a/tests/header_config.rs131 +++ b/tests/header_config.rs132 @@ -271,8 +271,10 @@ fn entrypoint_and_dockerfile_pass_both_envs() {133 for needle in [134 "HU13_REPO_NAME",135 "HU13_DESCRIPTION",136 - "--repo-name $HU13_REPO_NAME",137 - "--description $HU13_DESCRIPTION",138 + "--repo-name",139 + "--description",140 + "\"$HU13_REPO_NAME\"",141 + "\"$HU13_DESCRIPTION\"",142 ] {143 assert!(ep.contains(needle), "entrypoint passes {needle}");144 }145 -- 146 2.55.0147 148 149 From ced4a2b17ef99233ae5a44dc637829c280240f18 Mon Sep 17 00:00:00 2001150 From: gl0w <gl0w@world>151 Date: Thu, 10 Sep 2026 07:13:15 +0100152 Subject: [PATCH 2/2] m6/entrypoint-testfix: polish test matches argv form153 154 ---155 .../merges/2026-09-10T06-12-21.665260655Z.md | 9 ++156 .../patch.diff | 147 ++++++++++++++++++157 .../pr.md | 12 ++158 tests/polish.rs | 4 +-159 4 files changed, 170 insertions(+), 2 deletions(-)160 create mode 100644 .forge/merges/2026-09-10T06-12-21.665260655Z.md161 create mode 100644 .forge/prs/9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4/patch.diff162 create mode 100644 .forge/prs/9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4/pr.md163 164 diff --git a/.forge/merges/2026-09-10T06-12-21.665260655Z.md b/.forge/merges/2026-09-10T06-12-21.665260655Z.md165 new file mode 100644166 index 0000000..75c1647167 --- /dev/null168 +++ b/.forge/merges/2026-09-10T06-12-21.665260655Z.md169 @@ -0,0 +1,9 @@170 +---171 +pr: 9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4172 +applied: false173 +verdict: fail174 +resolved: []175 +created: 2026-09-10T06:12:21.665260655Z176 +---177 +failed at 02_test.sh.178 +patch: 44d449bb8367f7114a0279f44b15548437c7f097179 diff --git a/.forge/prs/9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4/patch.diff b/.forge/prs/9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4/patch.diff180 new file mode 100644181 index 0000000..d54f43d182 --- /dev/null183 +++ b/.forge/prs/9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4/patch.diff184 @@ -0,0 +1,147 @@185 +From 69016ee6a4c0e67182c43b7c0d0246f831da1db0 Mon Sep 17 00:00:00 2001186 +From: gl0w <gl0w@world>187 +Date: Thu, 10 Sep 2026 07:12:21 +0100188 +Subject: [PATCH] m6/entrypoint-testfix: match POSIX-safe argv form189 +190 +---191 + .../merges/2026-09-10T06-11-44.077140678Z.md | 9 +++192 + .../patch.diff | 73 +++++++++++++++++++193 + .../pr.md | 12 +++194 + tests/header_config.rs | 6 +-195 + 4 files changed, 98 insertions(+), 2 deletions(-)196 + create mode 100644 .forge/merges/2026-09-10T06-11-44.077140678Z.md197 + create mode 100644 .forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/patch.diff198 + create mode 100644 .forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/pr.md199 +200 +diff --git a/.forge/merges/2026-09-10T06-11-44.077140678Z.md b/.forge/merges/2026-09-10T06-11-44.077140678Z.md201 +new file mode 100644202 +index 0000000..7345e57203 +--- /dev/null204 ++++ b/.forge/merges/2026-09-10T06-11-44.077140678Z.md205 +@@ -0,0 +1,9 @@206 ++---207 ++pr: c1de23b1-1f96-42ea-8661-9468abf6409a208 ++applied: false209 ++verdict: fail210 ++resolved: []211 ++created: 2026-09-10T06:11:44.077140678Z212 ++---213 ++failed at 02_test.sh.214 ++patch: 447b0de892e249edf47a7aaded277d93d25b1dd8215 +diff --git a/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/patch.diff b/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/patch.diff216 +new file mode 100644217 +index 0000000..1e3a849218 +--- /dev/null219 ++++ b/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/patch.diff220 +@@ -0,0 +1,73 @@221 ++From aa2f0d1bc82722efe09d0ee0a471058775ff06ab Mon Sep 17 00:00:00 2001222 ++From: gl0w <gl0w@world>223 ++Date: Thu, 10 Sep 2026 07:11:44 +0100224 ++Subject: [PATCH] m6/entrypoint: POSIX-safe argv (spaces/quotes in225 ++ name/description)226 ++227 ++---228 ++ entrypoint.sh | 31 +++++++++++++++----------------229 ++ 1 file changed, 15 insertions(+), 16 deletions(-)230 ++231 ++diff --git a/entrypoint.sh b/entrypoint.sh232 ++index 6d4f149..191fbe9 100755233 ++--- a/entrypoint.sh234 +++++ b/entrypoint.sh235 ++@@ -26,40 +26,39 @@ set -eu236 ++ # build below would misreport "branch not found".237 ++ git config --global --add safe.directory /data/repo238 ++ 239 ++-BUILD_ARGS=""240 +++# Build argv with "$@" (POSIX-safe: values with spaces/quotes survive).241 +++set -- /data/repo -o /srv/www242 ++ if [ -n "${HU13_BRANCH:-}" ]; then243 ++- BUILD_ARGS="$BUILD_ARGS --branch $HU13_BRANCH"244 +++ set -- "$@" --branch "$HU13_BRANCH"245 ++ fi246 ++ if [ -n "${HU13_CLONE_URL:-}" ]; then247 ++- BUILD_ARGS="$BUILD_ARGS --clone-url $HU13_CLONE_URL"248 +++ set -- "$@" --clone-url "$HU13_CLONE_URL"249 ++ fi250 ++ if [ -n "${HU13_REPO_NAME:-}" ]; then251 ++- BUILD_ARGS="$BUILD_ARGS --repo-name $HU13_REPO_NAME"252 +++ set -- "$@" --repo-name "$HU13_REPO_NAME"253 ++ fi254 ++ if [ -n "${HU13_DESCRIPTION:-}" ]; then255 ++- BUILD_ARGS="$BUILD_ARGS --description $HU13_DESCRIPTION"256 +++ set -- "$@" --description "$HU13_DESCRIPTION"257 ++ fi258 +++hu13 build "$@"259 ++ 260 ++-# shellcheck disable=SC2086261 ++-hu13 build /data/repo -o /srv/www $BUILD_ARGS262 +++set -- --www /srv/www --inbox-dir /data/inbox \263 +++ --listen "${HU13_LISTEN:-0.0.0.0:39313}"264 ++ 265 ++-SERVE_ARGS=""266 ++ if [ -n "${HU13_MAX_TITLE:-}" ]; then267 ++- SERVE_ARGS="$SERVE_ARGS --max-title $HU13_MAX_TITLE"268 +++ set -- "$@" --max-title "$HU13_MAX_TITLE"269 ++ fi270 ++ if [ -n "${HU13_MAX_BODY:-}" ]; then271 ++- SERVE_ARGS="$SERVE_ARGS --max-body $HU13_MAX_BODY"272 +++ set -- "$@" --max-body "$HU13_MAX_BODY"273 ++ fi274 ++ if [ -n "${HU13_MAX_BYTES:-}" ]; then275 ++- SERVE_ARGS="$SERVE_ARGS --max-bytes $HU13_MAX_BYTES"276 +++ set -- "$@" --max-bytes "$HU13_MAX_BYTES"277 ++ fi278 ++ if [ -n "${HU13_RATE_PER_HOUR:-}" ]; then279 ++- SERVE_ARGS="$SERVE_ARGS --rate-per-hour $HU13_RATE_PER_HOUR"280 +++ set -- "$@" --rate-per-hour "$HU13_RATE_PER_HOUR"281 ++ fi282 ++ if [ -n "${HU13_QUOTA:-}" ]; then283 ++- SERVE_ARGS="$SERVE_ARGS --quota $HU13_QUOTA"284 +++ set -- "$@" --quota "$HU13_QUOTA"285 ++ fi286 ++ 287 ++-# shellcheck disable=SC2086288 ++-exec hu13 serve --www /srv/www --inbox-dir /data/inbox \289 ++- --listen "${HU13_LISTEN:-0.0.0.0:39313}" $SERVE_ARGS290 +++exec hu13 serve "$@"291 ++-- 292 ++2.55.0293 ++294 +diff --git a/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/pr.md b/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/pr.md295 +new file mode 100644296 +index 0000000..43d0194297 +--- /dev/null298 ++++ b/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/pr.md299 +@@ -0,0 +1,12 @@300 ++---301 ++id: c1de23b1-1f96-42ea-8661-9468abf6409a302 ++title: m6/entrypoint-quote303 ++state: open304 ++base: master305 ++head: m6/entrypoint-quote306 ++draft: false307 ++issues: []308 ++ci: fail309 ++created: 2026-09-10T06:11:44.052625600Z310 ++updated: 2026-09-10T06:11:56.573743204Z311 ++---312 +diff --git a/tests/header_config.rs b/tests/header_config.rs313 +index ef81f20..374d829 100644314 +--- a/tests/header_config.rs315 ++++ b/tests/header_config.rs316 +@@ -271,8 +271,10 @@ fn entrypoint_and_dockerfile_pass_both_envs() {317 + for needle in [318 + "HU13_REPO_NAME",319 + "HU13_DESCRIPTION",320 +- "--repo-name $HU13_REPO_NAME",321 +- "--description $HU13_DESCRIPTION",322 ++ "--repo-name",323 ++ "--description",324 ++ "\"$HU13_REPO_NAME\"",325 ++ "\"$HU13_DESCRIPTION\"",326 + ] {327 + assert!(ep.contains(needle), "entrypoint passes {needle}");328 + }329 +-- 330 +2.55.0331 +332 diff --git a/.forge/prs/9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4/pr.md b/.forge/prs/9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4/pr.md333 new file mode 100644334 index 0000000..2affdef335 --- /dev/null336 +++ b/.forge/prs/9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4/pr.md337 @@ -0,0 +1,12 @@338 +---339 +id: 9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4340 +title: m6/entrypoint-testfix341 +state: open342 +base: master343 +head: m6/entrypoint-testfix344 +draft: false345 +issues: []346 +ci: fail347 +created: 2026-09-10T06:12:21.642641147Z348 +updated: 2026-09-10T06:12:37.499922812Z349 +---350 diff --git a/tests/polish.rs b/tests/polish.rs351 index e71a09f..92f49f2 100644352 --- a/tests/polish.rs353 +++ b/tests/polish.rs354 @@ -267,10 +267,10 @@ fn entrypoint_syntax_checks() {355 let text = std::fs::read_to_string(&ep).expect("read entrypoint");356 for needle in [357 "set -eu",358 - "hu13 build /data/repo -o /srv/www",359 + "hu13 build",360 "HU13_BRANCH",361 "HU13_CLONE_URL",362 - "exec hu13 serve --www /srv/www --inbox-dir /data/inbox",363 + "exec hu13 serve",364 "0.0.0.0:39313",365 "safe.directory",366 ] {367 -- 368 2.55.0369