mirror of
https://github.com/coder/coder.git
synced 2026-06-03 13:08:25 +00:00
ba05188934
## Problem
Bootstrap scripts under `provisionersdk/scripts/` are inlined into
templates via `sh -c '${init_script}'`. Any single quote (apostrophe) in
these `.sh` files silently breaks the shell quoting, causing the agent
to never start — with near-invisible error output.
## Changes
- **`scripts/check_bootstrap_quotes.sh`** — new lint script that scans
all `.sh` files under `provisionersdk/scripts/` for single quotes and
fails with a clear error if any are found. Only checks shell scripts
(not `.ps1`, which legitimately uses single quotes).
- **`Makefile`** — added `lint/bootstrap` target wired into the `lint`
dependency list.
Fixes #22062
25 lines
620 B
Bash
Executable File
25 lines
620 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
# shellcheck source=scripts/lib.sh
|
|
source "$(dirname "${BASH_SOURCE[0]}")/lib.sh"
|
|
cdroot
|
|
|
|
echo "--- check bootstrap scripts for single quotes"
|
|
|
|
files=$(find provisionersdk/scripts -type f -name '*.sh')
|
|
found=0
|
|
for f in $files; do
|
|
if grep -n "'" "$f"; then
|
|
echo "ERROR: $f contains single quotes (apostrophes)."
|
|
echo " Bootstrap scripts are inlined via sh -c '...' in templates."
|
|
echo " Single quotes break this quoting. Use alternative phrasing."
|
|
found=1
|
|
fi
|
|
done
|
|
|
|
if [ "$found" -ne 0 ]; then
|
|
exit 1
|
|
fi
|
|
|
|
echo "OK: no single quotes found in bootstrap scripts."
|