| |
| |
| |
| |
| modep_cpu_get_fnames() { |
| if test_cmd pkg_${cu_name}_check_updates; then |
| pkg_${cu_name}_check_updates get_fnames; |
| fi; |
| if [ -z "${cu_fnames}" ]; then |
| if [ "${cu_url#*://github.com/*}" != "${cu_url}" ]; then |
| _cpugf_uname="${cu_url#*/github.com/}"; |
| _cpugf_uname="${_cpugf_uname%%/*}"; |
| _cpugf_pname="${cu_url#*/github.com/${_cpugf_uname}/}"; |
| _cpugf_pname="${_cpugf_pname%%/*}"; |
| cu_url_index="https://github.com/${_cpugf_uname%%/*}/${_cpugf_pname%%/*}/releases/"; |
| unset _cpu_uname _cpu_pname; |
| cu_fnames="$(wget ${DEFAULT_WGET_ARGS} -qO- ${cu_url_index} |\ |
| sed -n '/<span class="\(tag-name\|css-truncate-target\)">/s/^.*<span class="\(tag-name\|css-truncate-target\)">\([a-zA-Z]\+-\|v\|\)\(.\+\)<\/span>.*$/\3/p')"; |
| cu_fname_base="${cu_name}"; |
| cu_fname_ext="${cu_fname#v${cu_version}.}"; |
| else |
| cu_url_index="${cu_url%/*}/"; |
| cu_fnames="$(wget ${DEFAULT_WGET_ARGS} -qO- "${cu_url_index}" |\ |
| sed -n '/[hH][rR][eE][fF]="[^"]\+"/s/^.*[hH][rR][eE][fF]="\([^"]\+\)".*$/\1/p')"; |
| fi; |
| fi; |
| : ${cu_fname:="${cu_url##*/}"}; |
| : ${cu_fname_base:="${cu_fname%%-*}"}; |
| : ${cu_fname_ext:="${cu_fname#${cu_fname_base}-${cu_version}.}"}; |
| }; |
| |
| modep_check_cpu_get_version() { |
| unset cu_fname_version; |
| if test_cmd pkg_${cu_name}_check_updates; then |
| pkg_${cu_name}_check_updates get_version; |
| fi; |
| if [ -z "${cu_fname_version}" ]; then |
| if [ "${cu_url#*://github.com/*}" != "${cu_url}" ]; then |
| if [ "${cu_fname#${cu_fname_base}-}" = "${cu_fname}" ]\ |
| && [ "${cu_fname%.${cu_fname_ext}}" = "${cu_fname}" ]; then |
| cu_fname_version="${cu_fname}"; |
| fi; |
| elif [ "${cu_fname#${cu_fname_base}-}" != "${cu_fname}" ]\ |
| && [ "${cu_fname%.${cu_fname_ext}}" != "${cu_fname}" ]; then |
| cu_fname_version="${cu_fname#${cu_fname_base}-}"; |
| cu_fname_version="${cu_fname_version%.${cu_fname_ext}}"; |
| fi; |
| fi; |
| }; |
| |
| mode_check_pkg_updates() { |
| cu_name="${1}"; cu_NAME="${2}"; |
| cu_version="$(get_var_unsafe PKG_${cu_NAME}_VERSION)"; |
| cu_url="$(get_var_unsafe PKG_${cu_NAME}_URL)"; |
| cu_url_type="$(get_var_unsafe PKG_${cu_NAME}_URL_TYPE)"; |
| . vars/check_updates.vars; |
| if lmatch "${CHECK_UPDATES_SKIP}" " " "${cu_name}"; then |
| log_msg vnfo "Skipping \`${cu_name}' (set in \${CHECK_UPDATES_SKIP}.)"; |
| return 0; |
| elif [ "${cu_url_type}" = "git" ]; then |
| log_msg vnfo "Skipping \`${cu_name}' (URL_TYPE is Git.)"; |
| return 0; |
| elif [ -z "${cu_version}" -o -z "${cu_url}" ]; then |
| log_msg fail "Zero-length \${cu_version} and/or \${cu_url} for \`${cu_name}' (ignored.)"; |
| return 0; |
| else |
| log_msg vnfo "Checking ${cu_name} v${cu_version} for updates."; |
| modep_cpu_get_fnames; _cpu_versions=""; |
| fi; |
| for cu_fname in ${cu_fnames}; do |
| cu_fname="${cu_fname##*/}"; modep_check_cpu_get_version; |
| if [ -z "${cu_fname_version}" ]; then |
| continue; |
| elif ! echo "${cu_fname_version}" | grep -Eq '^[-_.0-9a-zA-Z]+$' \ |
| || echo "${cu_fname_version}" | grep -Eq '^[_.a-zA-Z]+'; then |
| log_msg varn "Skipping \`${cu_fname_version}' (invalid version.)"; |
| else |
| _cpu_versions="${_cpu_versions:+${_cpu_versions} }${cu_fname_version}"; |
| fi; |
| done; |
| if [ -z "${_cpu_versions}" ]; then |
| log_msg warn "No versions available for \`${cu_name}' (Filename URL: ${cu_url}, index URL: ${cu_url_index})."; |
| else |
| _cpu_versions="$(echo "${_cpu_versions}" |\ |
| sed 's/ /\n/g' | sort -rV | uniq |\ |
| head -n${CHECK_UPDATES_SHOW_NEW:-6} |\ |
| paste -d" " -s)"; |
| if test_cmd pkg_${cu_name}_check_updates; then |
| pkg_${cu_name}_check_updates version_fixup; |
| fi; |
| if [ "${_cpu_versions%% *}" != "${cu_version}" ]; then |
| log_msg info "New release(s) available for ${cu_name} v${cu_version}: ${_cpu_versions}."; |
| else |
| log_msg vnfo "${cu_name} v${cu_version} is up to date."; |
| fi; |
| fi; |
| unset cu_fname cu_fname_base cu_fname_ext cu_fnames cu_fname_version \ |
| cu_name cu_url cu_url_fname cu_url_fname_base cu_url_fname_ext \ |
| cu_url_index cu_url_type cu_version _cpu_versions; |
| }; |
| |
| |