Files
code-tools/tf/scripts/workspace-setup.sh
2025-09-19 18:31:25 +00:00

71 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
USER_NAME="${USER:-coder}"
HOME_DIR="${HOME:-/home/${USER_NAME}}"
WORKSPACES_DIR="/workspaces"
BIN_DIR="${HOME_DIR}/bin"
META_DIR="/tmp/git-metadata"
mkdir -p "${BIN_DIR}" "${HOME_DIR}/.config" "${META_DIR}" "${WORKSPACES_DIR}"
if [[ -n "${CODER_WORKSPACE_ID:-}" ]]; then
echo "${CODER_WORKSPACE_ID}" > "${META_DIR}/workspace-id"
fi
# ensure the dev workspace has sensible permissions
if command -v chown >/dev/null 2>&1 && [[ "${EUID}" -eq 0 ]]; then
chown -R "${USER_NAME}:${USER_NAME}" "${HOME_DIR}" "${WORKSPACES_DIR}" || true
fi
# Configure git user (startup script already sets git config, but we guard here too)
if command -v git >/dev/null 2>&1; then
if [[ -n "${GIT_AUTHOR_NAME:-}" ]]; then
git config --global user.name "${GIT_AUTHOR_NAME}"
fi
if [[ -n "${GIT_AUTHOR_EMAIL:-}" ]]; then
git config --global user.email "${GIT_AUTHOR_EMAIL}"
fi
fi
# Build a lightweight devinfo helper for quick diagnostics.
cat <<'SCRIPT' > "${BIN_DIR}/devinfo"
#!/usr/bin/env bash
set -euo pipefail
echo "Workspace diagnostics"
echo "----------------------"
echo "User: $(whoami)"
echo "Home: ${HOME}"
echo "Workspace: /workspaces"
if command -v node >/dev/null 2>&1; then
echo "Node: $(node --version)"
fi
if command -v npm >/dev/null 2>&1; then
echo "npm: $(npm --version)"
fi
if command -v python3 >/dev/null 2>&1; then
echo "Python: $(python3 --version | awk '{print $2}')"
fi
if command -v rustc >/dev/null 2>&1; then
echo "Rust: $(rustc --version | awk '{print $2}')"
fi
if command -v cargo >/dev/null 2>&1; then
echo "Cargo: $(cargo --version | awk '{print $2}')"
fi
if [[ -n "${POSTGRES_URL:-}" ]]; then
echo "PostgreSQL: ${POSTGRES_URL}"
fi
if [[ -n "${REDIS_URL:-}" ]]; then
echo "Redis: ${REDIS_URL}"
fi
if [[ -n "${QDRANT_URL:-}" ]]; then
echo "Qdrant: ${QDRANT_URL}"
fi
SCRIPT
chmod +x "${BIN_DIR}/devinfo"
echo "Workspace initialisation complete. Run 'devinfo' for a quick status summary."