fix(tools/_lib): /etc/mosaic host-level fallback for credential resolution #700
@@ -15,13 +15,23 @@
|
|||||||
#
|
#
|
||||||
# After loading, service-specific env vars are exported.
|
# After loading, service-specific env vars are exported.
|
||||||
# Run `load_credentials --help` for details.
|
# Run `load_credentials --help` for details.
|
||||||
|
#
|
||||||
|
# Resolution order (first match wins):
|
||||||
|
# 1. $MOSAIC_CREDENTIALS_FILE (explicit override — never second-guessed)
|
||||||
|
# 2. $HOME/.config/mosaic/credentials.json
|
||||||
|
# 3. /etc/mosaic/credentials.json (host-level fallback)
|
||||||
|
# The /etc fallback exists for HOME-redirected profile environments, where
|
||||||
|
# $HOME points at a per-profile directory that has no credentials file.
|
||||||
|
# Operators symlink /etc/mosaic/credentials.json to the host's canonical
|
||||||
|
# file once, instead of exporting MOSAIC_CREDENTIALS_FILE per invocation.
|
||||||
|
|
||||||
if [[ -z "${MOSAIC_CREDENTIALS_FILE:-}" ]]; then
|
if [[ -z "${MOSAIC_CREDENTIALS_FILE:-}" ]]; then
|
||||||
for _cand in "$HOME/.config/mosaic/credentials.json"; do
|
for _cand in "$HOME/.config/mosaic/credentials.json" "/etc/mosaic/credentials.json"; do
|
||||||
if [[ -f "$_cand" ]]; then MOSAIC_CREDENTIALS_FILE="$_cand"; break; fi
|
if [[ -f "$_cand" ]]; then MOSAIC_CREDENTIALS_FILE="$_cand"; break; fi
|
||||||
done
|
done
|
||||||
: "${MOSAIC_CREDENTIALS_FILE:=$HOME/.config/mosaic/credentials.json}"
|
: "${MOSAIC_CREDENTIALS_FILE:=$HOME/.config/mosaic/credentials.json}"
|
||||||
fi
|
fi
|
||||||
|
export MOSAIC_CREDENTIALS_FILE
|
||||||
|
|
||||||
_mosaic_require_jq() {
|
_mosaic_require_jq() {
|
||||||
if ! command -v jq &>/dev/null; then
|
if ! command -v jq &>/dev/null; then
|
||||||
|
|||||||
@@ -86,7 +86,16 @@ gitea_url_matches_host() {
|
|||||||
|
|
||||||
get_gitea_service_for_host() {
|
get_gitea_service_for_host() {
|
||||||
local host="$1"
|
local host="$1"
|
||||||
local cred_file="${MOSAIC_CREDENTIALS_FILE:-$HOME/.config/mosaic/credentials.json}"
|
local cred_file="${MOSAIC_CREDENTIALS_FILE:-}"
|
||||||
|
if [[ -z "$cred_file" ]]; then
|
||||||
|
# Same resolution chain as _lib/credentials.sh: profile HOME, then
|
||||||
|
# host-level /etc only if it exists; neither existing keeps the
|
||||||
|
# $HOME default (matches the lib's final := fallback).
|
||||||
|
cred_file="$HOME/.config/mosaic/credentials.json"
|
||||||
|
if [[ ! -f "$cred_file" && -f /etc/mosaic/credentials.json ]]; then
|
||||||
|
cred_file="/etc/mosaic/credentials.json"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
case "$host" in
|
case "$host" in
|
||||||
git.mosaicstack.dev)
|
git.mosaicstack.dev)
|
||||||
|
|||||||
Reference in New Issue
Block a user