diff options
author | Lucio Andrés Illanes Albornoz <lucio@lucioillanes.de> | 2019-01-20 14:26:59 +0000 |
---|---|---|
committer | Lucio Andrés Illanes Albornoz <lucio@lucioillanes.de> | 2019-01-20 14:26:59 +0000 |
commit | 3d00d2cc6d133aee5f11c671fb9f197973007fe4 (patch) | |
tree | 64d121a89264969ed7f537faa5d618675c3edf1a /etc | |
parent | 1b271e3adeede2d3521ad5f5c074ead6ed780d36 (diff) | |
download | midipix_build-3d00d2cc6d133aee5f11c671fb9f197973007fe4.tar.bz2 midipix_build-3d00d2cc6d133aee5f11c671fb9f197973007fe4.tar.xz |
check_updates.sh: removes obsolete script.
etc/rotate_archives.sh: moved & minor cleanup from rotate_tarballs.sh.
Diffstat (limited to 'etc')
-rwxr-xr-x | etc/rotate_archives.sh | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/etc/rotate_archives.sh b/etc/rotate_archives.sh new file mode 100755 index 00000000..546fdf0b --- /dev/null +++ b/etc/rotate_archives.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +glob() { set +o noglob; echo ${@}; set -o noglob; }; +map() { local _ifs="${IFS}" _sep="${1}"; shift; IFS="${_sep}"; echo "${*}"; IFS="${_ifs}"; }; +rc() { echo "${@}"; "${@}"; }; + +rotate_build() { + local _build_dname="${1}" _hostname="${2}" _limit="${3}"; + local _dist_dates=""; + for _dist_fname in $(glob \ + ${_build_dname}/*.tar.* \ + ${_build_dname}/*.zip \ + ${_build_dname}/*.zip.*); do + if [ -e "${_dist_fname}" ]; then + _dist_date="${_dist_fname#*@${_hostname}-}"; + _dist_date="${_dist_date%.tar.*}"; + _dist_date="${_dist_date%.zip}"; + _dist_date="${_dist_date%.zip.*}"; + _dist_date="${_dist_date%-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]}"; + _dist_dates="${_dist_dates:+${_dist_dates} }${_dist_date}"; + fi; + done; + if [ -n "${_dist_dates}" ]; then + rotate_build_dates "${_build_dname}" "${_dist_dates}" "${_limit}"; + fi; +}; + +rotate_build_dates() { + local _build_dname="${1}" _dist_dates="${2}" _limit="${3}"; + local _dist_dates_count="" _dist_dates_count_limit="" _dist_fname="" _nl=" +"; _dist_dates="$(map "${_nl}" ${_dist_dates} | sort | uniq)"; + _dist_dates_count="$(echo "${_dist_dates}" | wc -l)"; + if [ "${_dist_dates_count}" -gt "${_limit}" ]; then + _dist_dates_count_limit=$((${_dist_dates_count}-${_limit})); + _dist_dates="$(echo "${_dist_dates}" |\ + sed -n "1,${_dist_dates_count_limit}p")"; + for _dist_date in ${_dist_dates}; do + for _dist_fname in $(glob \ + ${_build_dname}/*-${_dist_date}-*.tar.xz*); do + rc rm -f "${_dist_fname}"; + done; + done; + fi; +}; + +rotate_builds() { + local _build_dnames="${1}" _limit="${2}"; + local _hostname="$(hostname)"; + for _build_dname in ${_build_dnames}; do + rotate_build "${_build_dname}" "${_hostname}" "${_limit}"; + done; +}; + +set -o errexit -o noglob; +rotate_builds "${1}" "${2:-3}"; + +# vim:noexpandtab sw=8 ts=8 |