diff --git a/scripts/docker-registry-local-up.sh b/scripts/docker-registry-local-up.sh index 89501ab..2ed08c5 100644 --- a/scripts/docker-registry-local-up.sh +++ b/scripts/docker-registry-local-up.sh @@ -8,19 +8,34 @@ COMPOSE_FILE="${ROOT_DIR}/docker-compose.registry.local.yml" AUTH_DIR="${ROOT_DIR}/docker/registry/auth" AUTH_FILE="${AUTH_DIR}/htpasswd" +read_env_value() { + local key="$1" + local line + + line="$(grep -E "^${key}=" "${ENV_FILE}" | tail -n 1 || true)" + line="${line#*=}" + + if [[ "${line}" == \"*\" && "${line}" == *\" ]]; then + line="${line:1:-1}" + elif [[ "${line}" == \'*\' && "${line}" == *\' ]]; then + line="${line:1:-1}" + fi + + printf '%s' "${line}" +} + if [[ ! -f "${ENV_FILE}" ]]; then echo "Missing ${ENV_FILE}" >&2 exit 1 fi -set -a -source "${ENV_FILE}" -set +a - mkdir -p "${AUTH_DIR}" -if [[ -n "${REGISTRY_USER:-}" && -n "${REGISTRY_PASSWORD:-}" ]]; then - docker run --rm --entrypoint htpasswd httpd:2-alpine -Bbn "${REGISTRY_USER}" "${REGISTRY_PASSWORD}" > "${AUTH_FILE}" +REGISTRY_USER_VALUE="$(read_env_value REGISTRY_USER)" +REGISTRY_PASSWORD_VALUE="$(read_env_value REGISTRY_PASSWORD)" + +if [[ -n "${REGISTRY_USER_VALUE}" && -n "${REGISTRY_PASSWORD_VALUE}" ]]; then + docker run --rm --entrypoint htpasswd httpd:2-alpine -Bbn "${REGISTRY_USER_VALUE}" "${REGISTRY_PASSWORD_VALUE}" > "${AUTH_FILE}" chmod 600 "${AUTH_FILE}" elif [[ ! -f "${AUTH_FILE}" ]]; then echo "Set REGISTRY_USER and REGISTRY_PASSWORD in ${ENV_FILE} or create ${AUTH_FILE} manually." >&2