56 lines
1.4 KiB
Bash
56 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
TMP_DIR="$(mktemp -d)"
|
|
trap 'rm -rf "${TMP_DIR}"' EXIT
|
|
BIN_DIR="${TMP_DIR}/bin"
|
|
LOG_FILE="${TMP_DIR}/calls.log"
|
|
mkdir -p "${BIN_DIR}"
|
|
|
|
cat >"${BIN_DIR}/id" <<'EOF'
|
|
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
if [[ "${1:-}" == "-u" && "${2:-}" == "couch" ]]; then
|
|
exit 1
|
|
fi
|
|
exec /usr/bin/id "$@"
|
|
EOF
|
|
|
|
cat >"${BIN_DIR}/useradd" <<EOF
|
|
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
printf 'useradd %s\n' "\$*" >>"${LOG_FILE}"
|
|
EOF
|
|
|
|
chmod 0755 "${BIN_DIR}/id" "${BIN_DIR}/useradd"
|
|
|
|
output="$(
|
|
PATH="${BIN_DIR}:${PATH}" \
|
|
bash -c '
|
|
set -Eeuo pipefail
|
|
source "'"${REPO_ROOT}"'/setup.sh"
|
|
MODE="dry-run"
|
|
COUCH_UID=""
|
|
ensure_couch_user
|
|
ensure_runtime_config
|
|
'
|
|
)"
|
|
|
|
grep -Fq '[dry-run] useradd --create-home --home-dir /home/couch --shell /bin/bash --user-group couch' <<<"${output}"
|
|
grep -Fq '/run/user/<missing-couch-uid>' <<<"${output}"
|
|
|
|
check_output_file="${TMP_DIR}/check.out"
|
|
set +e
|
|
PATH="${BIN_DIR}:${PATH}" bash "${REPO_ROOT}/setup.sh" --phase couch --check >"${check_output_file}" 2>&1
|
|
status=$?
|
|
set -e
|
|
|
|
if [[ "${status}" -eq 0 ]]; then
|
|
printf 'expected setup --check to fail on missing couch user\n' >&2
|
|
exit 1
|
|
fi
|
|
|
|
grep -Fq '[check] FAIL couch user missing' "${check_output_file}"
|
|
grep -Fq '[check] FAIL /home/couch/.config/couchd/runtime.json missing' "${check_output_file}"
|