Files
coder/scripts/check_bootstrap_quotes.sh
Kacper Sawicki ba05188934 ci: add lint check to prevent single quotes in bootstrap scripts (#22664)
## 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
2026-03-06 13:09:56 +01:00

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."