33set -o errexit
44set -o pipefail
55
6- SCRIPT=" $( basename $0 ) "
7- product=" Iguazio Data Science Platform"
6+ SCRIPT=" $( basename " $0 " ) "
87
98git_owner=mlrun
109git_repo=demos
@@ -50,6 +49,42 @@ error_usage()
5049 exit 1
5150}
5251
52+ get_latest_tag () {
53+ local mlrun_version=" $1 "
54+ local git_owner=" $2 "
55+ local git_repo=" $3 "
56+ local git_base_url=" $4 " # Unused in this function but can be useful for future enhancements
57+ local git_url=" $5 "
58+
59+ # Fetch tags from git
60+ local tags=$( git ls-remote --tags --refs --sort=' v:refname' " ${git_url} " | awk ' {print $2}' )
61+
62+ local latest_release=" "
63+ local latest_rc=" "
64+
65+ # Parse
66+ while IFS= read -r tag; do
67+ tag=${tag# refs/ tags/ }
68+
69+ # Check if tag matches the target
70+ if [[ $tag =~ ^v${mlrun_version} ]]; then
71+ if [[ $tag == * " -rc" * ]]; then
72+ latest_rc=$tag
73+ else
74+ latest_release=$tag
75+ fi
76+ fi
77+ done <<< " $tags"
78+
79+ if [[ -n " $latest_release " ]]; then
80+ echo " $latest_release "
81+ elif [[ -n " $latest_rc " ]]; then
82+ echo " $latest_rc "
83+ else
84+ echo " No matching tags found."
85+ fi
86+ }
87+
5388while :
5489do
5590 case $1 in
@@ -113,10 +148,12 @@ if [ -z "${user}" ]; then
113148 error_usage " Missing username."
114149fi
115150
151+ # shellcheck disable=SC2236
116152if [ ! -z " ${dry_run} " ]; then
117153 echo " Dry run; no files will be copied."
118154fi
119155
156+ # shellcheck disable=SC2236
120157if [ ! -z " ${no_backup} " ]; then
121158 echo " The existing demos directory won't be backed up before the update."
122159fi
@@ -136,11 +173,15 @@ if [ -z "${branch}" ]; then
136173 echo " Looking for demos for the specified MLRun version - ${mlrun_version} ."
137174 fi
138175
139- tag_prefix=` echo ${mlrun_version} | cut -d . -f1-2`
140- latest_tag=` git ls-remote --tags --refs --sort=-v:refname ${git_base_url} | grep ${mlrun_version%% r* } | grep -v ' \^{}' | grep -v ' rc' | grep -v ' RC' | head -n1 | awk ' {print $2}' | sed ' s#refs/tags/##' `
176+ # shellcheck disable=SC2006
177+ tag_prefix=` echo " ${mlrun_version} " | cut -d . -f1-2`
178+ # shellcheck disable=SC2006
179+ latest_tag=$( get_latest_tag " ${mlrun_version} " " ${git_owner} " " ${git_repo} " " ${git_base_url} " " ${git_url} " )
180+ echo $latest_tag
141181 if [ -z " ${latest_tag} " ]; then
142182 error_exit " Couldn't locate a Git tag with prefix 'v${tag_prefix} .*'."
143- latest_tag=` git ls-remote --tags --refs --sort=-v:refname ${git_base_url} | grep ${mlrun_version%% r* } | grep -v ' \^{}' | head -n1 | awk ' {print $2}' | sed ' s#refs/tags/##' `
183+ # shellcheck disable=SC2006
184+ latest_tag=` git ls-remote --tags --refs --sort=-v:refname ${git_base_url} | grep " ${mlrun_version%% r* } " | grep -v ' \^{}' | head -n1 | awk ' {print $2}' | sed ' s#refs/tags/##' `
144185 else
145186 # Remove the prefix from the Git tag
146187 branch=${latest_tag# refs/ tags/ }
@@ -153,7 +194,7 @@ demos_dir="${dest_dir}/demos"
153194echo " Updating demos from ${git_url} branch ${branch} to '${demos_dir} '..."
154195
155196temp_dir=$( mktemp -d /tmp/temp-get-demos.XXXXXXXXXX)
156- trap " { rm -rf $temp_dir ; }" EXIT
197+ trap ' { rm -rf $temp_dir; }' EXIT
157198echo " Copying files to a temporary directory '${temp_dir} '..."
158199
159200tar_url=" ${git_base_url} /archive/${branch} .tar.gz"
188229echo " Deleting temporary directory '${temp_dir} ..."
189230rm -rf " ${temp_dir} "
190231
191- echo " DONE"
232+ echo " DONE"
0 commit comments