|
1 | 1 | import type { TemplateConfig } from "../domain.js" |
2 | 2 |
|
3 | 3 | export const renderEntrypointGitConfig = (config: TemplateConfig): string => |
4 | | - String.raw`# 2) Ensure GH_TOKEN is available for SSH sessions if provided |
5 | | -if [[ -n "$GH_TOKEN" ]]; then |
6 | | - printf "export GH_TOKEN=%q\n" "$GH_TOKEN" > /etc/profile.d/gh-token.sh |
| 4 | + String.raw`# 2) Ensure GitHub auth vars are available for SSH sessions if provided |
| 5 | +if [[ -n "$GH_TOKEN" || -n "$GITHUB_TOKEN" ]]; then |
| 6 | + EFFECTIVE_GITHUB_TOKEN="$GITHUB_TOKEN" |
| 7 | + if [[ -z "$EFFECTIVE_GITHUB_TOKEN" ]]; then |
| 8 | + EFFECTIVE_GITHUB_TOKEN="$GH_TOKEN" |
| 9 | + fi |
| 10 | +
|
| 11 | + EFFECTIVE_GH_TOKEN="$GH_TOKEN" |
| 12 | + if [[ -z "$EFFECTIVE_GH_TOKEN" ]]; then |
| 13 | + EFFECTIVE_GH_TOKEN="$EFFECTIVE_GITHUB_TOKEN" |
| 14 | + fi |
| 15 | +
|
| 16 | + printf "export GH_TOKEN=%q\n" "$EFFECTIVE_GH_TOKEN" > /etc/profile.d/gh-token.sh |
| 17 | + printf "export GITHUB_TOKEN=%q\n" "$EFFECTIVE_GITHUB_TOKEN" >> /etc/profile.d/gh-token.sh |
7 | 18 | chmod 0644 /etc/profile.d/gh-token.sh |
8 | 19 | SSH_ENV_PATH="/home/${config.sshUser}/.ssh/environment" |
9 | | - printf "%s\n" "GH_TOKEN=$GH_TOKEN" > "$SSH_ENV_PATH" |
10 | | - if [[ -n "$GITHUB_TOKEN" ]]; then |
11 | | - printf "%s\n" "GITHUB_TOKEN=$GITHUB_TOKEN" >> "$SSH_ENV_PATH" |
12 | | - fi |
| 20 | + printf "%s\n" "GH_TOKEN=$EFFECTIVE_GH_TOKEN" > "$SSH_ENV_PATH" |
| 21 | + printf "%s\n" "GITHUB_TOKEN=$EFFECTIVE_GITHUB_TOKEN" >> "$SSH_ENV_PATH" |
13 | 22 | chmod 600 "$SSH_ENV_PATH" |
14 | 23 | chown 1000:1000 "$SSH_ENV_PATH" || true |
15 | 24 | fi |
16 | 25 |
|
17 | | -# 3) Configure git identity for the dev user if provided |
| 26 | +# 3) Configure git credential helper for HTTPS remotes |
| 27 | +GIT_CREDENTIAL_HELPER_PATH="/usr/local/bin/docker-git-credential-helper" |
| 28 | +cat <<'EOF' > "$GIT_CREDENTIAL_HELPER_PATH" |
| 29 | +#!/usr/bin/env bash |
| 30 | +set -euo pipefail |
| 31 | +
|
| 32 | +if [[ "$#" -lt 1 || "$1" != "get" ]]; then |
| 33 | + exit 0 |
| 34 | +fi |
| 35 | +
|
| 36 | +token="$GITHUB_TOKEN" |
| 37 | +if [[ -z "$token" ]]; then |
| 38 | + token="$GH_TOKEN" |
| 39 | +fi |
| 40 | +
|
| 41 | +if [[ -z "$token" ]]; then |
| 42 | + exit 0 |
| 43 | +fi |
| 44 | +
|
| 45 | +printf "%s\n" "username=x-access-token" |
| 46 | +printf "%s\n" "password=$token" |
| 47 | +EOF |
| 48 | +chmod 0755 "$GIT_CREDENTIAL_HELPER_PATH" |
| 49 | +su - ${config.sshUser} -c "git config --global credential.helper '$GIT_CREDENTIAL_HELPER_PATH'" |
| 50 | +
|
| 51 | +# 4) Configure git identity for the dev user if provided |
18 | 52 | if [[ -n "$GIT_USER_NAME" ]]; then |
19 | 53 | SAFE_GIT_USER_NAME="$(printf "%q" "$GIT_USER_NAME")" |
20 | 54 | su - ${config.sshUser} -c "git config --global user.name $SAFE_GIT_USER_NAME" |
|
0 commit comments