From 69016ee6a4c0e67182c43b7c0d0246f831da1db0 Mon Sep 17 00:00:00 2001 From: gl0w Date: Thu, 10 Sep 2026 07:12:21 +0100 Subject: [PATCH 1/2] m6/entrypoint-testfix: match POSIX-safe argv form --- .../merges/2026-09-10T06-11-44.077140678Z.md | 9 +++ .../patch.diff | 73 +++++++++++++++++++ .../pr.md | 12 +++ tests/header_config.rs | 6 +- 4 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 .forge/merges/2026-09-10T06-11-44.077140678Z.md create mode 100644 .forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/patch.diff create mode 100644 .forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/pr.md diff --git a/.forge/merges/2026-09-10T06-11-44.077140678Z.md b/.forge/merges/2026-09-10T06-11-44.077140678Z.md new file mode 100644 index 0000000..7345e57 --- /dev/null +++ b/.forge/merges/2026-09-10T06-11-44.077140678Z.md @@ -0,0 +1,9 @@ +--- +pr: c1de23b1-1f96-42ea-8661-9468abf6409a +applied: false +verdict: fail +resolved: [] +created: 2026-09-10T06:11:44.077140678Z +--- +failed at 02_test.sh. +patch: 447b0de892e249edf47a7aaded277d93d25b1dd8 diff --git a/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/patch.diff b/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/patch.diff new file mode 100644 index 0000000..1e3a849 --- /dev/null +++ b/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/patch.diff @@ -0,0 +1,73 @@ +From aa2f0d1bc82722efe09d0ee0a471058775ff06ab Mon Sep 17 00:00:00 2001 +From: gl0w +Date: Thu, 10 Sep 2026 07:11:44 +0100 +Subject: [PATCH] m6/entrypoint: POSIX-safe argv (spaces/quotes in + name/description) + +--- + entrypoint.sh | 31 +++++++++++++++---------------- + 1 file changed, 15 insertions(+), 16 deletions(-) + +diff --git a/entrypoint.sh b/entrypoint.sh +index 6d4f149..191fbe9 100755 +--- a/entrypoint.sh ++++ b/entrypoint.sh +@@ -26,40 +26,39 @@ set -eu + # build below would misreport "branch not found". + git config --global --add safe.directory /data/repo + +-BUILD_ARGS="" ++# Build argv with "$@" (POSIX-safe: values with spaces/quotes survive). ++set -- /data/repo -o /srv/www + if [ -n "${HU13_BRANCH:-}" ]; then +- BUILD_ARGS="$BUILD_ARGS --branch $HU13_BRANCH" ++ set -- "$@" --branch "$HU13_BRANCH" + fi + if [ -n "${HU13_CLONE_URL:-}" ]; then +- BUILD_ARGS="$BUILD_ARGS --clone-url $HU13_CLONE_URL" ++ set -- "$@" --clone-url "$HU13_CLONE_URL" + fi + if [ -n "${HU13_REPO_NAME:-}" ]; then +- BUILD_ARGS="$BUILD_ARGS --repo-name $HU13_REPO_NAME" ++ set -- "$@" --repo-name "$HU13_REPO_NAME" + fi + if [ -n "${HU13_DESCRIPTION:-}" ]; then +- BUILD_ARGS="$BUILD_ARGS --description $HU13_DESCRIPTION" ++ set -- "$@" --description "$HU13_DESCRIPTION" + fi ++hu13 build "$@" + +-# shellcheck disable=SC2086 +-hu13 build /data/repo -o /srv/www $BUILD_ARGS ++set -- --www /srv/www --inbox-dir /data/inbox \ ++ --listen "${HU13_LISTEN:-0.0.0.0:39313}" + +-SERVE_ARGS="" + if [ -n "${HU13_MAX_TITLE:-}" ]; then +- SERVE_ARGS="$SERVE_ARGS --max-title $HU13_MAX_TITLE" ++ set -- "$@" --max-title "$HU13_MAX_TITLE" + fi + if [ -n "${HU13_MAX_BODY:-}" ]; then +- SERVE_ARGS="$SERVE_ARGS --max-body $HU13_MAX_BODY" ++ set -- "$@" --max-body "$HU13_MAX_BODY" + fi + if [ -n "${HU13_MAX_BYTES:-}" ]; then +- SERVE_ARGS="$SERVE_ARGS --max-bytes $HU13_MAX_BYTES" ++ set -- "$@" --max-bytes "$HU13_MAX_BYTES" + fi + if [ -n "${HU13_RATE_PER_HOUR:-}" ]; then +- SERVE_ARGS="$SERVE_ARGS --rate-per-hour $HU13_RATE_PER_HOUR" ++ set -- "$@" --rate-per-hour "$HU13_RATE_PER_HOUR" + fi + if [ -n "${HU13_QUOTA:-}" ]; then +- SERVE_ARGS="$SERVE_ARGS --quota $HU13_QUOTA" ++ set -- "$@" --quota "$HU13_QUOTA" + fi + +-# shellcheck disable=SC2086 +-exec hu13 serve --www /srv/www --inbox-dir /data/inbox \ +- --listen "${HU13_LISTEN:-0.0.0.0:39313}" $SERVE_ARGS ++exec hu13 serve "$@" +-- +2.55.0 + diff --git a/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/pr.md b/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/pr.md new file mode 100644 index 0000000..43d0194 --- /dev/null +++ b/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/pr.md @@ -0,0 +1,12 @@ +--- +id: c1de23b1-1f96-42ea-8661-9468abf6409a +title: m6/entrypoint-quote +state: open +base: master +head: m6/entrypoint-quote +draft: false +issues: [] +ci: fail +created: 2026-09-10T06:11:44.052625600Z +updated: 2026-09-10T06:11:56.573743204Z +--- diff --git a/tests/header_config.rs b/tests/header_config.rs index ef81f20..374d829 100644 --- a/tests/header_config.rs +++ b/tests/header_config.rs @@ -271,8 +271,10 @@ fn entrypoint_and_dockerfile_pass_both_envs() { for needle in [ "HU13_REPO_NAME", "HU13_DESCRIPTION", - "--repo-name $HU13_REPO_NAME", - "--description $HU13_DESCRIPTION", + "--repo-name", + "--description", + "\"$HU13_REPO_NAME\"", + "\"$HU13_DESCRIPTION\"", ] { assert!(ep.contains(needle), "entrypoint passes {needle}"); } -- 2.55.0 From ced4a2b17ef99233ae5a44dc637829c280240f18 Mon Sep 17 00:00:00 2001 From: gl0w Date: Thu, 10 Sep 2026 07:13:15 +0100 Subject: [PATCH 2/2] m6/entrypoint-testfix: polish test matches argv form --- .../merges/2026-09-10T06-12-21.665260655Z.md | 9 ++ .../patch.diff | 147 ++++++++++++++++++ .../pr.md | 12 ++ tests/polish.rs | 4 +- 4 files changed, 170 insertions(+), 2 deletions(-) create mode 100644 .forge/merges/2026-09-10T06-12-21.665260655Z.md create mode 100644 .forge/prs/9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4/patch.diff create mode 100644 .forge/prs/9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4/pr.md diff --git a/.forge/merges/2026-09-10T06-12-21.665260655Z.md b/.forge/merges/2026-09-10T06-12-21.665260655Z.md new file mode 100644 index 0000000..75c1647 --- /dev/null +++ b/.forge/merges/2026-09-10T06-12-21.665260655Z.md @@ -0,0 +1,9 @@ +--- +pr: 9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4 +applied: false +verdict: fail +resolved: [] +created: 2026-09-10T06:12:21.665260655Z +--- +failed at 02_test.sh. +patch: 44d449bb8367f7114a0279f44b15548437c7f097 diff --git a/.forge/prs/9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4/patch.diff b/.forge/prs/9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4/patch.diff new file mode 100644 index 0000000..d54f43d --- /dev/null +++ b/.forge/prs/9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4/patch.diff @@ -0,0 +1,147 @@ +From 69016ee6a4c0e67182c43b7c0d0246f831da1db0 Mon Sep 17 00:00:00 2001 +From: gl0w +Date: Thu, 10 Sep 2026 07:12:21 +0100 +Subject: [PATCH] m6/entrypoint-testfix: match POSIX-safe argv form + +--- + .../merges/2026-09-10T06-11-44.077140678Z.md | 9 +++ + .../patch.diff | 73 +++++++++++++++++++ + .../pr.md | 12 +++ + tests/header_config.rs | 6 +- + 4 files changed, 98 insertions(+), 2 deletions(-) + create mode 100644 .forge/merges/2026-09-10T06-11-44.077140678Z.md + create mode 100644 .forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/patch.diff + create mode 100644 .forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/pr.md + +diff --git a/.forge/merges/2026-09-10T06-11-44.077140678Z.md b/.forge/merges/2026-09-10T06-11-44.077140678Z.md +new file mode 100644 +index 0000000..7345e57 +--- /dev/null ++++ b/.forge/merges/2026-09-10T06-11-44.077140678Z.md +@@ -0,0 +1,9 @@ ++--- ++pr: c1de23b1-1f96-42ea-8661-9468abf6409a ++applied: false ++verdict: fail ++resolved: [] ++created: 2026-09-10T06:11:44.077140678Z ++--- ++failed at 02_test.sh. ++patch: 447b0de892e249edf47a7aaded277d93d25b1dd8 +diff --git a/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/patch.diff b/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/patch.diff +new file mode 100644 +index 0000000..1e3a849 +--- /dev/null ++++ b/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/patch.diff +@@ -0,0 +1,73 @@ ++From aa2f0d1bc82722efe09d0ee0a471058775ff06ab Mon Sep 17 00:00:00 2001 ++From: gl0w ++Date: Thu, 10 Sep 2026 07:11:44 +0100 ++Subject: [PATCH] m6/entrypoint: POSIX-safe argv (spaces/quotes in ++ name/description) ++ ++--- ++ entrypoint.sh | 31 +++++++++++++++---------------- ++ 1 file changed, 15 insertions(+), 16 deletions(-) ++ ++diff --git a/entrypoint.sh b/entrypoint.sh ++index 6d4f149..191fbe9 100755 ++--- a/entrypoint.sh +++++ b/entrypoint.sh ++@@ -26,40 +26,39 @@ set -eu ++ # build below would misreport "branch not found". ++ git config --global --add safe.directory /data/repo ++ ++-BUILD_ARGS="" +++# Build argv with "$@" (POSIX-safe: values with spaces/quotes survive). +++set -- /data/repo -o /srv/www ++ if [ -n "${HU13_BRANCH:-}" ]; then ++- BUILD_ARGS="$BUILD_ARGS --branch $HU13_BRANCH" +++ set -- "$@" --branch "$HU13_BRANCH" ++ fi ++ if [ -n "${HU13_CLONE_URL:-}" ]; then ++- BUILD_ARGS="$BUILD_ARGS --clone-url $HU13_CLONE_URL" +++ set -- "$@" --clone-url "$HU13_CLONE_URL" ++ fi ++ if [ -n "${HU13_REPO_NAME:-}" ]; then ++- BUILD_ARGS="$BUILD_ARGS --repo-name $HU13_REPO_NAME" +++ set -- "$@" --repo-name "$HU13_REPO_NAME" ++ fi ++ if [ -n "${HU13_DESCRIPTION:-}" ]; then ++- BUILD_ARGS="$BUILD_ARGS --description $HU13_DESCRIPTION" +++ set -- "$@" --description "$HU13_DESCRIPTION" ++ fi +++hu13 build "$@" ++ ++-# shellcheck disable=SC2086 ++-hu13 build /data/repo -o /srv/www $BUILD_ARGS +++set -- --www /srv/www --inbox-dir /data/inbox \ +++ --listen "${HU13_LISTEN:-0.0.0.0:39313}" ++ ++-SERVE_ARGS="" ++ if [ -n "${HU13_MAX_TITLE:-}" ]; then ++- SERVE_ARGS="$SERVE_ARGS --max-title $HU13_MAX_TITLE" +++ set -- "$@" --max-title "$HU13_MAX_TITLE" ++ fi ++ if [ -n "${HU13_MAX_BODY:-}" ]; then ++- SERVE_ARGS="$SERVE_ARGS --max-body $HU13_MAX_BODY" +++ set -- "$@" --max-body "$HU13_MAX_BODY" ++ fi ++ if [ -n "${HU13_MAX_BYTES:-}" ]; then ++- SERVE_ARGS="$SERVE_ARGS --max-bytes $HU13_MAX_BYTES" +++ set -- "$@" --max-bytes "$HU13_MAX_BYTES" ++ fi ++ if [ -n "${HU13_RATE_PER_HOUR:-}" ]; then ++- SERVE_ARGS="$SERVE_ARGS --rate-per-hour $HU13_RATE_PER_HOUR" +++ set -- "$@" --rate-per-hour "$HU13_RATE_PER_HOUR" ++ fi ++ if [ -n "${HU13_QUOTA:-}" ]; then ++- SERVE_ARGS="$SERVE_ARGS --quota $HU13_QUOTA" +++ set -- "$@" --quota "$HU13_QUOTA" ++ fi ++ ++-# shellcheck disable=SC2086 ++-exec hu13 serve --www /srv/www --inbox-dir /data/inbox \ ++- --listen "${HU13_LISTEN:-0.0.0.0:39313}" $SERVE_ARGS +++exec hu13 serve "$@" ++-- ++2.55.0 ++ +diff --git a/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/pr.md b/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/pr.md +new file mode 100644 +index 0000000..43d0194 +--- /dev/null ++++ b/.forge/prs/c1de23b1-1f96-42ea-8661-9468abf6409a/pr.md +@@ -0,0 +1,12 @@ ++--- ++id: c1de23b1-1f96-42ea-8661-9468abf6409a ++title: m6/entrypoint-quote ++state: open ++base: master ++head: m6/entrypoint-quote ++draft: false ++issues: [] ++ci: fail ++created: 2026-09-10T06:11:44.052625600Z ++updated: 2026-09-10T06:11:56.573743204Z ++--- +diff --git a/tests/header_config.rs b/tests/header_config.rs +index ef81f20..374d829 100644 +--- a/tests/header_config.rs ++++ b/tests/header_config.rs +@@ -271,8 +271,10 @@ fn entrypoint_and_dockerfile_pass_both_envs() { + for needle in [ + "HU13_REPO_NAME", + "HU13_DESCRIPTION", +- "--repo-name $HU13_REPO_NAME", +- "--description $HU13_DESCRIPTION", ++ "--repo-name", ++ "--description", ++ "\"$HU13_REPO_NAME\"", ++ "\"$HU13_DESCRIPTION\"", + ] { + assert!(ep.contains(needle), "entrypoint passes {needle}"); + } +-- +2.55.0 + diff --git a/.forge/prs/9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4/pr.md b/.forge/prs/9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4/pr.md new file mode 100644 index 0000000..2affdef --- /dev/null +++ b/.forge/prs/9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4/pr.md @@ -0,0 +1,12 @@ +--- +id: 9a0d0b48-7cda-41e0-8cf1-48f63a38b1a4 +title: m6/entrypoint-testfix +state: open +base: master +head: m6/entrypoint-testfix +draft: false +issues: [] +ci: fail +created: 2026-09-10T06:12:21.642641147Z +updated: 2026-09-10T06:12:37.499922812Z +--- diff --git a/tests/polish.rs b/tests/polish.rs index e71a09f..92f49f2 100644 --- a/tests/polish.rs +++ b/tests/polish.rs @@ -267,10 +267,10 @@ fn entrypoint_syntax_checks() { let text = std::fs::read_to_string(&ep).expect("read entrypoint"); for needle in [ "set -eu", - "hu13 build /data/repo -o /srv/www", + "hu13 build", "HU13_BRANCH", "HU13_CLONE_URL", - "exec hu13 serve --www /srv/www --inbox-dir /data/inbox", + "exec hu13 serve", "0.0.0.0:39313", "safe.directory", ] { -- 2.55.0