ci(forgejo): limit json_field extraction to top-level keys #30

Merged
notazof merged 1 commit from fix/forgejo-release-json-field-id into release/1.0.6 2026-08-17 03:26:54 +01:00

View file

@ -236,12 +236,16 @@ jobs:
printf '%s' "$s"
}
# Extraction d'un champ JSON scalaire (string ou number) depuis
# un fichier. Utilise sed basique, suffisant pour les champs
# id / tag_name que l'API renvoie en clair.
# Extraction d'un champ JSON scalaire de premier niveau depuis un
# fichier. On ne lit que les premières lignes pour éviter de
# matcher un champ homonyme dans un objet imbriqué (par ex.
# le champ "id" de l'auteur d'une release Forgejo, qui vaut
# typiquement 1 pour le premier user du repo). Sans cette
# restriction, le PATCH sur /releases/<id extrait> tombe en
# 404 "The target couldn't be found".
json_field() {
local file="$1" field="$2"
sed -n "s/.*\"$field\"[[:space:]]*:[[:space:]]*\"\?\([^\",}]*\)\"\?.*/\1/p" "$file" | head -1
head -3 "$file" | sed -n "s/.*\"$field\"[[:space:]]*:[[:space:]]*\"\?\([0-9][0-9]*\)\"\?.*/\1/p" | head -1
}
# 1. Vérifier si la release existe déjà pour ce tag.