diff --git a/rootfs/usr/local/bin/entrypoint.sh b/rootfs/usr/local/bin/entrypoint.sh index 6782e85..b3fe882 100755 --- a/rootfs/usr/local/bin/entrypoint.sh +++ b/rootfs/usr/local/bin/entrypoint.sh @@ -655,8 +655,11 @@ procs) # execute commands exec) shift 1 - __exec_command "${@:-echo "No commands given"}" - exit $? + if [ $# -eq 0 ]; then + echo "Error: exec requires a command" >&2 + exit 1 + fi + exec "$@" ;; # show/start init scripts start) @@ -682,11 +685,10 @@ start) *) if [ $# -eq 0 ]; then # No args: run the default Go workflow (tidy → fmt → vet → test → build) - __exec_command go-workflow + exec go-workflow else - __exec_command "$@" + exec "$@" fi - exit $? ;; esac # - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/rootfs/usr/local/bin/go-workflow b/rootfs/usr/local/bin/go-workflow index 18976fd..3250f8d 100755 --- a/rootfs/usr/local/bin/go-workflow +++ b/rootfs/usr/local/bin/go-workflow @@ -6,7 +6,6 @@ set -euo pipefail # Resolve the working directory — prefer /app if mounted, else cwd -GO_EXITCODE=0 WORK_DIR="${GOWORKDIR:-${PWD}}" cd "$WORK_DIR" @@ -25,35 +24,21 @@ echo "" run_step() { local label="$1"; shift - local exitCode=0 echo "── ${label}" "$@" - exitCode=$? echo "" - return $exitCode } # 1. Sync module graph and go.sum before anything reads them run_step "go mod tidy" go mod tidy -retVal=$? -GO_EXITCODE=$((GO_EXITCODE + retVal)) # 2. Format all Go source files in place run_step "gofmt -w ." gofmt -w . -retVal=$? -GO_EXITCODE=$((GO_EXITCODE + retVal)) # 3. Catch suspicious constructs run_step "go vet ./..." go vet ./... -retVal=$? -GO_EXITCODE=$((GO_EXITCODE + retVal)) # 4. Run tests — fail fast before wasting time on a build run_step "go test ./..." go test ./... -retVal=$? -GO_EXITCODE=$((GO_EXITCODE + retVal)) # 5. Build all main packages; output lands alongside source in each package dir run_step "go build ./..." go build ./... -retVal=$? -GO_EXITCODE=$((GO_EXITCODE + retVal)) echo "✅ Done." -exit $GO_EXITCODE diff --git a/rootfs/usr/local/etc/docker/env/go.sh b/rootfs/usr/local/etc/docker/env/go.sh index fc15bcf..20ca3d5 100644 --- a/rootfs/usr/local/etc/docker/env/go.sh +++ b/rootfs/usr/local/etc/docker/env/go.sh @@ -12,3 +12,5 @@ MONGODB_CONFIG_FILE="none" # This image has no long-running daemon; suppress the startup banner and health loop ENTRYPOINT_MESSAGE="no" HEALTH_ENABLED="no" +# Tell __start_init_scripts this is a config-only init — no daemon process or PID file expected +SERVICE_USES_PID="no" diff --git a/rootfs/usr/local/etc/docker/init.d/00-go.sh b/rootfs/usr/local/etc/docker/init.d/00-go.sh index b3c36ef..8fba17f 100755 --- a/rootfs/usr/local/etc/docker/init.d/00-go.sh +++ b/rootfs/usr/local/etc/docker/init.d/00-go.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # shellcheck shell=bash # - - - - - - - - - - - - - - - - - - - - - - - - - -##@Version : 202605292219-git +##@Version : 202506192219-git # @@Author : Jason Hempstead # @@Contact : jason@casjaysdev.pro # @@License : WTFPL @@ -9,9 +9,10 @@ # @@Copyright : Copyright: (c) 2026 Jason Hempstead, Casjays Developments # @@Created : Friday, May 29, 2026 22:22 EDT # @@File : 00-go.sh -# @@Description : Go toolchain — configuration-only init (no daemon) +# @@Description : Go toolchain — placeholder init (no daemon) # - - - - - - - - - - - - - - - - - - - - - - - - - -# Tell the init framework this is a configuration service, not a daemon. -# This prevents __start_init_scripts from waiting for a PID or keep-alive loop. -export CONTAINER_INIT="yes" -export SERVICE_USES_PID="no" +# This file must exist. __start_init_scripts spawns an infinite keep-alive loop +# when init_count == 0 (no scripts in init.d/). Go is not a daemon — we just +# need one script so init_count >= 1. SERVICE_USES_PID is set in the env file +# (go.sh) which the parent shell reads; exports here are subshell-isolated and +# would not propagate back to the entrypoint anyway.