#
# set +o errexit -o noglob -o nounset is assumed.
#
rtl_state_clear() {
local _rsc_workdir="${1}" _rsc_pkg_name="${2}" \
_rsc_pkg_fname="";
for _rsc_pkg_fname in $(
find "${_rsc_workdir}" \
-maxdepth 1 \
-mindepth 1 \
-name .${_rsc_pkg_name}.\* \
-type f);
do
rtl_fileop rm "${_rsc_pkg_fname}";
done;
return 0;
};
rtl_state_set() {
local _rss_workdir="${1}" _rss_pkg_fname="${2}" _rss_build_step="${3}" \
_rss_done_fname_pfx="${1}/.${2}";
shift 3;
rtl_fileop touch "${_rss_done_fname_pfx}.${_rss_build_step}";
while [ ${#} -ge 1 ]; do
if [ "${#1}" -gt 0 ]; then
rtl_fileop rm "${_rss_done_fname_pfx}.${1}";
fi; shift;
done;
return 0;
};
rtl_state_test() {
local _rst_workdir="${1}" _rst_pkg_name="${2}" _rst_build_steps="${3}" \
_rst_restart_at="${4:-}" _rst_build_step="" _rst_done_fname="" \
IFS="," _rst_rc=0;
for _rst_build_step in ${_rst_build_steps}; do
_rst_done_fname="${_rst_workdir}/.${_rst_pkg_name}.${_rst_build_step}";
if [ "${_rst_restart_at:+1}" != 1 ]\
|| [ "${_rst_restart_at}" = "LAST" ]; then
rtl_fileop test "${_rst_done_fname}"; _rst_rc="${?}";
elif [ "${_rst_restart_at}" = "ALL" ]; then
_rst_rc=1;
else
rtl_lmatch \$_rst_restart_at "${_rst_build_step}" ",";
_rst_rc=$((${?} ? 0 : 1));
fi; [ "${_rst_rc}" -eq 0 ] && break;
done;
return "${_rst_rc}";
};
# vim:filetype=sh