|
@@ -1,4 +1,4 @@
|
|
|
-#!/bin/sh
|
|
|
+#!/bin/bash
|
|
|
|
|
|
set -eu
|
|
|
|
|
@@ -8,6 +8,7 @@ fi
|
|
|
if [ ! -f "$SSHD_HOST_KEYS_DIR/ed25519" ]; then
|
|
|
ssh-keygen -t ed25519 -N '' -f "$SSHD_HOST_KEYS_DIR/ed25519"
|
|
|
fi
|
|
|
+unset SSHD_HOST_KEYS_DIR
|
|
|
|
|
|
if [ ! -d "$HOME/.gitolite" ]; then
|
|
|
# > First run: either the pubkey or the admin name is *required*, [...]
|
|
@@ -15,13 +16,16 @@ if [ ! -d "$HOME/.gitolite" ]; then
|
|
|
fi
|
|
|
unset GITOLITE_INITIAL_ADMIN_NAME
|
|
|
|
|
|
-printenv | cut -d = -f 1 | while IFS= read -r var_name; do
|
|
|
- if [ "$(echo "$var_name" | cut -d _ -f -4)" = "GITOLITE_USER_PUBLIC_KEY" ]; then
|
|
|
- user="$(echo "$var_name" | cut -d _ -f 5-)"
|
|
|
- key_path="$HOME/container-entrypoint-user-public-keys/${user}.pub"
|
|
|
- mkdir --parents "$(dirname "$key_path")"
|
|
|
+key_dir_path="$HOME/.container-entrypoint/users/public-keys"
|
|
|
+mkdir --parents "$key_dir_path"
|
|
|
+for var_name in $(compgen -e); do
|
|
|
+ if [[ $var_name =~ ^GITOLITE_USER_PUBLIC_KEY_ ]]; then
|
|
|
+ user="${var_name#GITOLITE_USER_PUBLIC_KEY_}"
|
|
|
+ # https://github.com/sitaramc/gitolite/blob/v3.6.11/src/lib/Gitolite/Setup.pm#L93
|
|
|
+ key_path="${key_dir_path}/${user}.pub"
|
|
|
printenv "$var_name" > "$key_path"
|
|
|
(set -x; gitolite setup --pubkey "$key_path")
|
|
|
+ unset "$var_name"
|
|
|
fi
|
|
|
done
|
|
|
|