From 7ad24f933c530c2e3d9f7070981913a803773698 Mon Sep 17 00:00:00 2001 From: Anton Afanasyeu Date: Wed, 10 Jun 2026 21:46:40 +0200 Subject: [PATCH] gitea export submods --- .../scripts/gitea/gitea_mirror_submodules.sh | 36 ++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/examples/crash_reporter/backend/scripts/gitea/gitea_mirror_submodules.sh b/examples/crash_reporter/backend/scripts/gitea/gitea_mirror_submodules.sh index c0f7929..aab2de1 100755 --- a/examples/crash_reporter/backend/scripts/gitea/gitea_mirror_submodules.sh +++ b/examples/crash_reporter/backend/scripts/gitea/gitea_mirror_submodules.sh @@ -69,15 +69,33 @@ parse_gitmodules_file() { ' "$_file" } +# repo|upstream|path[|branch] — stdout only; status lines go to stderr. +is_valid_submodule_entry() { + case "$1" in + *'|'*) ;; + *) return 1 ;; + esac + _repo="${1%%|*}" + _rest="${1#*|}" + _url="${_rest%%|*}" + _rest2="${_rest#*|}" + _path="${_rest2%%|*}" + [ -n "$_repo" ] && [ -n "$_url" ] && [ -n "$_path" ] || return 1 + case "$_repo" in + *' '*|*'['*|*']'*) return 1 ;; + esac + return 0 +} + load_submodule_entries() { _gitmodules="${1:-}" if [ -n "$_gitmodules" ] && [ -r "$_gitmodules" ]; then - log "reading submodules from $_gitmodules" + log "reading submodules from $_gitmodules" >&2 parse_gitmodules_file "$_gitmodules" return 0 fi if [ -r "$GITEA_SUBMODULES_CONF" ]; then - log "reading submodules from $GITEA_SUBMODULES_CONF" + log "reading submodules from $GITEA_SUBMODULES_CONF" >&2 grep -v '^[[:space:]]*#' "$GITEA_SUBMODULES_CONF" | grep -v '^[[:space:]]*$' return 0 fi @@ -138,8 +156,18 @@ if ! gitea_user_exists "$GITEA_OWNER"; then fi mkdir -p "$WORK_DIR" -load_submodule_entries "$_gitmodules_arg" > "$WORK_DIR/entries.list" \ - || die "no submodule list (pass .gitmodules path or use $GITEA_SUBMODULES_CONF)" +: > "$WORK_DIR/entries.list" +if ! load_submodule_entries "$_gitmodules_arg" | while IFS= read -r _line; do + [ -n "$_line" ] || continue + is_valid_submodule_entry "$_line" || { + warn "skipping invalid entry: $_line" + continue + } + printf '%s\n' "$_line" +done > "$WORK_DIR/entries.list"; then + die "no submodule list (pass .gitmodules path or use $GITEA_SUBMODULES_CONF)" +fi +[ -s "$WORK_DIR/entries.list" ] || die "no valid submodule entries parsed" if command -v rc-service >/dev/null 2>&1; then rc-service gitea status 2>/dev/null | grep -qi started || rc-service gitea start 2>/dev/null || true