summaryrefslogtreecommitdiffhomepage
path: root/subr/ex_rtl_state.subr
diff options
context:
space:
mode:
Diffstat (limited to 'subr/ex_rtl_state.subr')
-rw-r--r--subr/ex_rtl_state.subr32
1 files changed, 32 insertions, 0 deletions
diff --git a/subr/ex_rtl_state.subr b/subr/ex_rtl_state.subr
new file mode 100644
index 00000000..fa07ff35
--- /dev/null
+++ b/subr/ex_rtl_state.subr
@@ -0,0 +1,32 @@
+#
+# set -o errexit -o noglob are assumed.
+#
+
+ex_rtl_state_set() {
+ local _workdir="${1}" _pkg_fname="${2}" _done_fname_pfx;
+ _done_fname_pfx="${_workdir}/.${_pkg_fname}";
+ shift 2; while [ ${#} -ge 1 ]; do
+ if [ -z "${1}" ]; then
+ shift; continue;
+ elif [ "${1#-}" != "${1}" ]; then
+ ex_rtl_fileop rm "${_done_fname_pfx}.${1#-}";
+ else
+ ex_rtl_fileop touch "${_done_fname_pfx}.${1}";
+ fi;
+ shift; done;
+};
+
+ex_rtl_state_test() {
+ local _workdir="${1}" _pkg_name="${2}" _build_step="${3}" \
+ _restart_at="${4}" _done_fname;
+ _done_fname="${_workdir}/.${_pkg_name}.${_build_step}";
+ if [ -z "${_restart_at}" ]; then
+ ex_rtl_fileop test "${_done_fname}";
+ elif [ "${_restart_at}" = "ALL" ]; then
+ return 1;
+ else
+ ! ex_rtl_lmatch "${_restart_at}" , "${_build_step}";
+ fi;
+};
+
+# vim:filetype=sh