@@ -9038,10 +9038,12 @@ EOF
90389038# ------------------------------------------------------------------------------
90399039# Get latest GitLab release version.
90409040# Usage: get_latest_gitlab_release "owner/repo" [strip_v]
9041+ # Set GITLAB_URL to use a self-hosted GitLab instance.
90419042# ------------------------------------------------------------------------------
90429043get_latest_gitlab_release () {
90439044 local repo=" $1 "
90449045 local strip_v=" ${2:- true} "
9046+ local gitlab_url=" ${GITLAB_URL:- https:// gitlab.com} "
90459047
90469048 local repo_encoded
90479049 repo_encoded=$( printf ' %s' " $repo " | sed ' s|/|%2F|g' )
@@ -9056,7 +9058,7 @@ get_latest_gitlab_release() {
90569058 http_code=$( curl --connect-timeout 10 --max-time 30 -sSL \
90579059 -w " %{http_code}" -o " $temp_file " \
90589060 " ${header[@]} " \
9059- " https://gitlab.com /api/v4/projects/$repo_encoded /releases?per_page=1&order_by=released_at&sort=desc" 2> /dev/null) || true
9061+ " $gitlab_url /api/v4/projects/$repo_encoded /releases?per_page=1&order_by=released_at&sort=desc" 2> /dev/null) || true
90609062
90619063 if [[ " $http_code " != " 200" ]]; then
90629064 rm -f " $temp_file "
@@ -9107,12 +9109,16 @@ check_for_gl_release() {
91079109 local pin_reason=" ${4:- } " # optional reason shown to user
91089110 local app_lc=" ${app,,} "
91099111 local current_file=" $HOME /.${app_lc} "
9112+ local gitlab_url=" ${GITLAB_URL:- https:// gitlab.com} "
9113+ local gitlab_host=" ${gitlab_url# https:// } "
9114+ gitlab_host=" ${gitlab_host# http:// } "
9115+ gitlab_host=" ${gitlab_host%%/* } "
91109116
91119117 msg_info " Checking for update: ${app} "
91129118
91139119 # DNS check
9114- if ! getent hosts gitlab.com > /dev/null 2>&1 ; then
9115- msg_error " Network error: cannot resolve gitlab.com "
9120+ if ! getent hosts " $gitlab_host " > /dev/null 2>&1 ; then
9121+ msg_error " Network error: cannot resolve ${gitlab_host} "
91169122 return 6
91179123 fi
91189124
@@ -9131,7 +9137,7 @@ check_for_gl_release() {
91319137 local pinned_encoded=" ${pinned_version_in// \/ /% 2F} "
91329138 http_code=$( curl -sSL --max-time 20 -w " %{http_code}" -o /tmp/gl_check.json \
91339139 " ${header[@]} " \
9134- " https://gitlab.com /api/v4/projects/$repo_encoded /releases/$pinned_encoded " 2> /dev/null) || true
9140+ " $gitlab_url /api/v4/projects/$repo_encoded /releases/$pinned_encoded " 2> /dev/null) || true
91359141 if [[ " $http_code " == " 200" ]] && [[ -s /tmp/gl_check.json ]]; then
91369142 releases_json=" [$( < /tmp/gl_check.json) ]"
91379143 fi
@@ -9142,7 +9148,7 @@ check_for_gl_release() {
91429148 if [[ -z " $releases_json " ]]; then
91439149 http_code=$( curl -sSL --max-time 20 -w " %{http_code}" -o /tmp/gl_check.json \
91449150 " ${header[@]} " \
9145- " https://gitlab.com /api/v4/projects/$repo_encoded /releases?per_page=100&order_by=released_at&sort=desc" 2> /dev/null) || true
9151+ " $gitlab_url /api/v4/projects/$repo_encoded /releases?per_page=100&order_by=released_at&sort=desc" 2> /dev/null) || true
91469152
91479153 if [[ " $http_code " == " 200" ]] && [[ -s /tmp/gl_check.json ]]; then
91489154 releases_json=$( < /tmp/gl_check.json)
@@ -9166,7 +9172,7 @@ check_for_gl_release() {
91669172 return 22
91679173 elif [[ " $http_code " == " 000" || -z " $http_code " ]]; then
91689174 msg_error " GitLab API connection failed (no response)."
9169- msg_error " Check your network/DNS: curl -sSL https://gitlab.com /api/v4/version"
9175+ msg_error " Check your network/DNS: curl -sSL ${gitlab_url} /api/v4/version"
91709176 rm -f /tmp/gl_check.json
91719177 return 7
91729178 else
@@ -9374,6 +9380,7 @@ fetch_and_deploy_gl_release() {
93749380 local version=" ${var_appversion:- ${4:- latest} } "
93759381 local target=" ${5:-/ opt/ $app } "
93769382 local asset_pattern=" ${6:- } "
9383+ local gitlab_url=" ${GITLAB_URL:- https:// gitlab.com} "
93779384
93789385 if [[ -z " $app " ]]; then
93799386 app=" ${repo##*/ } "
@@ -9397,7 +9404,7 @@ fetch_and_deploy_gl_release() {
93979404 local repo_encoded
93989405 repo_encoded=$( printf ' %s' " $repo " | sed ' s|/|%2F|g' )
93999406
9400- local api_base=" https://gitlab.com /api/v4/projects/$repo_encoded /releases"
9407+ local api_base=" $gitlab_url /api/v4/projects/$repo_encoded /releases"
94019408 local api_url
94029409 if [[ " $version " != " latest" ]]; then
94039410 api_url=" $api_base /$version "
@@ -9444,7 +9451,7 @@ fetch_and_deploy_gl_release() {
94449451 msg_error " export GITLAB_TOKEN=\" glpat-your_token_here\" "
94459452 elif [[ " $http_code " == " 000" || -z " $http_code " ]]; then
94469453 msg_error " GitLab API connection failed (no response)."
9447- msg_error " Check your network/DNS: curl -sSL https://gitlab.com /api/v4/version"
9454+ msg_error " Check your network/DNS: curl -sSL ${gitlab_url} /api/v4/version"
94489455 else
94499456 msg_error " Failed to fetch release metadata (HTTP $http_code )"
94509457 fi
@@ -9490,7 +9497,7 @@ fetch_and_deploy_gl_release() {
94909497
94919498 # ## Tarball Mode ###
94929499 if [[ " $mode " == " tarball" || " $mode " == " source" ]]; then
9493- local direct_tarball_url=" https://gitlab.com /$repo /-/archive/$tag_name /${app_lc} -${version_safe} .tar.gz"
9500+ local direct_tarball_url=" $gitlab_url /$repo /-/archive/$tag_name /${app_lc} -${version_safe} .tar.gz"
94949501 filename=" ${app_lc} -${version_safe} .tar.gz"
94959502
94969503 curl $download_timeout -fsSL " ${header[@]} " -o " $tmpdir /$filename " " $direct_tarball_url " || {
@@ -9554,7 +9561,7 @@ fetch_and_deploy_gl_release() {
95549561
95559562 if [[ -z " $url_match " ]]; then
95569563 local fallback_json
9557- if fallback_json=$( _gl_scan_older_releases " $repo " " $repo_encoded " " https://gitlab.com " " binary" " $asset_pattern " " $tag_name " ) ; then
9564+ if fallback_json=$( _gl_scan_older_releases " $repo " " $repo_encoded " " $gitlab_url " " binary" " $asset_pattern " " $tag_name " ) ; then
95589565 json=" $fallback_json "
95599566 tag_name=$( echo " $json " | jq -r ' .tag_name // empty' )
95609567 [[ " $tag_name " =~ ^v[0-9] ]] && version=" ${tag_name: 1} " || version=" $tag_name "
@@ -9630,7 +9637,7 @@ fetch_and_deploy_gl_release() {
96309637
96319638 if [[ -z " $asset_url " ]]; then
96329639 local fallback_json
9633- if fallback_json=$( _gl_scan_older_releases " $repo " " $repo_encoded " " https://gitlab.com " " prebuild" " $pattern " " $tag_name " ) ; then
9640+ if fallback_json=$( _gl_scan_older_releases " $repo " " $repo_encoded " " $gitlab_url " " prebuild" " $pattern " " $tag_name " ) ; then
96349641 json=" $fallback_json "
96359642 tag_name=$( echo " $json " | jq -r ' .tag_name // empty' )
96369643 [[ " $tag_name " =~ ^v[0-9] ]] && version=" ${tag_name: 1} " || version=" $tag_name "
@@ -9741,7 +9748,7 @@ fetch_and_deploy_gl_release() {
97419748
97429749 if [[ -z " $asset_url " ]]; then
97439750 local fallback_json
9744- if fallback_json=$( _gl_scan_older_releases " $repo " " $repo_encoded " " https://gitlab.com " " singlefile" " $pattern " " $tag_name " ) ; then
9751+ if fallback_json=$( _gl_scan_older_releases " $repo " " $repo_encoded " " $gitlab_url " " singlefile" " $pattern " " $tag_name " ) ; then
97459752 json=" $fallback_json "
97469753 tag_name=$( echo " $json " | jq -r ' .tag_name // empty' )
97479754 [[ " $tag_name " =~ ^v[0-9] ]] && version=" ${tag_name: 1} " || version=" $tag_name "
0 commit comments