55 lines
1.8 KiB
Bash
Executable File
55 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
CERT_DIR="${CERT_DIR:-/host-certs}"
|
|
|
|
if [[ -d "$CERT_DIR" ]]; then
|
|
shopt -s nullglob
|
|
certs=("$CERT_DIR"/*.crt "$CERT_DIR"/*.pem)
|
|
if ((${#certs[@]})); then
|
|
mkdir -p /usr/local/share/ca-certificates/opencode-host
|
|
for cert in "${certs[@]}"; do
|
|
target="/usr/local/share/ca-certificates/opencode-host/$(basename "${cert%.*}").crt"
|
|
if openssl x509 -in "$cert" -noout >/dev/null 2>&1; then
|
|
cp -f "$cert" "$target"
|
|
else
|
|
echo "WARNING: ignoring invalid CA certificate: $cert" >&2
|
|
fi
|
|
done
|
|
if update-ca-certificates >/tmp/opencode-ca.log 2>&1; then
|
|
:
|
|
else
|
|
echo "WARNING: update-ca-certificates failed; continuing." >&2
|
|
cat /tmp/opencode-ca.log >&2 || true
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
host_lang="${HOST_LANG:-${LANG:-C.UTF-8}}"
|
|
host_lc_all="${HOST_LC_ALL:-${LC_ALL:-}}"
|
|
|
|
# Generate a host locale when it is a valid UTF-8 locale and not already present.
|
|
if [[ "$host_lang" == *.UTF-8 && "$host_lang" != "C.UTF-8" ]]; then
|
|
if ! locale -a | grep -Fxqi "${host_lang//UTF-8/utf8}"; then
|
|
if [[ "$host_lang" =~ ^([A-Za-z_]+)\.UTF-8$ ]]; then
|
|
locale_name="${BASH_REMATCH[1]}.UTF-8"
|
|
if grep -qE "^#?[[:space:]]*${locale_name}[[:space:]]+UTF-8" /etc/locale.gen 2>/dev/null; then
|
|
sed -i -E "s/^#[[:space:]]*(${locale_name}[[:space:]]+UTF-8)/\1/" /etc/locale.gen
|
|
else
|
|
printf '%s UTF-8\n' "$locale_name" >> /etc/locale.gen
|
|
fi
|
|
locale-gen "$locale_name" >/dev/null 2>&1 || \
|
|
echo "WARNING: could not generate locale $host_lang; continuing." >&2
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
export LANG="$host_lang"
|
|
if [[ -n "$host_lc_all" ]]; then
|
|
export LC_ALL="$host_lc_all"
|
|
fi
|
|
|
|
# exec su -s /bin/bash dev -c 'cd "${START_DIR:-/workspace}" && exec "$@"' -- "$@"
|
|
cd "${START_DIR:-/workspace}"
|
|
exec "$@"
|