#!/usr/bin/env bash set -euo pipefail USER_NAME=codex PUID=${PUID:-1000} PGID=${PGID:-1000} ensure_group() { local desired_gid=$1 local group_name if getent group "${desired_gid}" >/dev/null 2>&1; then group_name=$(getent group "${desired_gid}" | cut -d: -f1) echo "${group_name}" return 0 fi if getent group "${USER_NAME}" >/dev/null 2>&1; then groupmod -o -g "${desired_gid}" "${USER_NAME}" echo "${USER_NAME}" return 0 fi groupadd -o -g "${desired_gid}" "${USER_NAME}" echo "${USER_NAME}" } ensure_user() { local desired_uid=$1 local primary_group=$2 if getent passwd "${USER_NAME}" >/dev/null 2>&1; then usermod -o -u "${desired_uid}" -g "${primary_group}" -d "/home/${USER_NAME}" -s /bin/bash "${USER_NAME}" else useradd -o -m -u "${desired_uid}" -g "${primary_group}" -s /bin/bash "${USER_NAME}" fi } GROUP_NAME=$(ensure_group "${PGID}") ensure_user "${PUID}" "${GROUP_NAME}" USER_HOME=$(eval echo "~${USER_NAME}") mkdir -p /workspace/inbox /workspace/outbox /workspace/processed /workspace/failed mkdir -p "${USER_HOME}/.codex" for path in /workspace/inbox /workspace/outbox /workspace/processed /workspace/failed "${USER_HOME}" "${USER_HOME}/.codex"; do if [ -e "${path}" ]; then chown -R "${PUID}:${PGID}" "${path}" fi done export HOME="${USER_HOME}" export XDG_CACHE_HOME="${USER_HOME}/.cache" mkdir -p "${XDG_CACHE_HOME}" chown -R "${PUID}:${PGID}" "${XDG_CACHE_HOME}" exec gosu "${PUID}:${PGID}" python3 /app/watch_and_customize.py