fix
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
parent
ba189cf9f5
commit
7da1a7b838
1 changed files with 35 additions and 3 deletions
|
|
@ -238,6 +238,22 @@ fetch_asset () {
|
|||
|| die "somme de contrôle incorrecte après téléchargement : ${NAME}"
|
||||
}
|
||||
|
||||
# Une unit déjà installée dans la bonne version n'a rien à faire dans le cache
|
||||
# versionné : ni téléchargement, ni réinstallation. C'est le cas courant à
|
||||
# l'upgrade — les units bougent rarement d'une release à l'autre, alors que
|
||||
# /opt/two/<nouveau-tag>/units/ est vide par construction. Le fichier installé
|
||||
# est le seul qui persiste d'un tag au suivant, donc le seul à interroger.
|
||||
#
|
||||
# install_units rejoue ce même test : les deux décisions découlent du manifeste,
|
||||
# aucun état n'est partagé entre les deux fonctions.
|
||||
unit_up_to_date () {
|
||||
local MANIFEST="${1}"
|
||||
local UNIT="${2}"
|
||||
|
||||
[[ -n "${MANIFEST}" ]] || return 1
|
||||
sum_matches "${MANIFEST}" "${UNIT}" "${UNIT_DIR}/${UNIT}"
|
||||
}
|
||||
|
||||
fetch_assets () {
|
||||
local DRY_RUN="${1}"
|
||||
local PROFILE="${2}"
|
||||
|
|
@ -253,6 +269,11 @@ fetch_assets () {
|
|||
|
||||
for unit in $(profile_units "${PROFILE}")
|
||||
do
|
||||
if unit_up_to_date "${MANIFEST}" "${unit}"
|
||||
then
|
||||
info " ${unit} déjà installée en bonne version — téléchargement évité"
|
||||
continue
|
||||
fi
|
||||
fetch_asset "${DRY_RUN}" "${MANIFEST}" "${ASSETS}" "${unit}" "${UNIT_PATH}${unit}"
|
||||
done
|
||||
|
||||
|
|
@ -268,23 +289,34 @@ fetch_assets () {
|
|||
install_units () {
|
||||
local DRY_RUN="${1}"
|
||||
local PROFILE="${2}"
|
||||
local UNITS unit
|
||||
local MANIFEST="${3}"
|
||||
local UNITS unit CHANGED
|
||||
|
||||
UNITS=$(profile_units "${PROFILE}") || die "profil inconnu : ${PROFILE}"
|
||||
[[ -n "${UNITS}" ]] || { info "units : aucune pour le profil ${PROFILE}"; return 0; }
|
||||
|
||||
info "units du profil ${PROFILE}"
|
||||
|
||||
CHANGED=0
|
||||
for unit in ${UNITS}
|
||||
do
|
||||
# Même test que fetch_assets : rien n'a été téléchargé pour cette unit,
|
||||
# il n'y a donc rien à installer depuis le cache versionné.
|
||||
if unit_up_to_date "${MANIFEST}" "${unit}"
|
||||
then
|
||||
info " ${unit} inchangée — installation évitée"
|
||||
continue
|
||||
fi
|
||||
if [[ ${DRY_RUN} -ne ${FLAGS_TRUE} ]] && [[ ! -f "${UNIT_PATH}${unit}" ]]
|
||||
then
|
||||
die "unit absente des assets de la release ${TAG} : ${unit}"
|
||||
fi
|
||||
run "${DRY_RUN}" "install -m 0644 '${UNIT_PATH}${unit}' '${UNIT_DIR}/${unit}'"
|
||||
CHANGED=1
|
||||
done
|
||||
|
||||
run "${DRY_RUN}" "systemctl daemon-reload"
|
||||
# daemon-reload seulement si une unit a bougé.
|
||||
[[ ${CHANGED} -eq 1 ]] && run "${DRY_RUN}" "systemctl daemon-reload"
|
||||
|
||||
for unit in ${UNITS}
|
||||
do
|
||||
|
|
@ -383,7 +415,7 @@ main () {
|
|||
|
||||
fetch_assets "${FLAGS_dryrun}" "${FLAGS_profile}" "${ASSETS}" "${MANIFEST}"
|
||||
|
||||
install_units "${FLAGS_dryrun}" "${FLAGS_profile}"
|
||||
install_units "${FLAGS_dryrun}" "${FLAGS_profile}" "${MANIFEST}"
|
||||
switch_binaries "${FLAGS_dryrun}" "${FLAGS_profile}" "${ASSETS}"
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue