summaryrefslogtreecommitdiffhomepage
path: root/subr/rtl_state.subr
diff options
context:
space:
mode:
authorLucio Andrés Illanes Albornoz <lucio@lucioillanes.de>2020-02-26 21:54:12 +0000
committerLucio Andrés Illanes Albornoz <lucio@lucioillanes.de>2020-02-26 21:54:12 +0000
commitc6d6e08feab839a9dc5792071fb803494cc51a69 (patch)
tree1513c817e4446ac3cf512d6c1f287a10fc1daf2e /subr/rtl_state.subr
parent4a5da5254e1207686f492e7ce8759c80466185f3 (diff)
downloadmidipix_build-c6d6e08feab839a9dc5792071fb803494cc51a69.tar.bz2
midipix_build-c6d6e08feab839a9dc5792071fb803494cc51a69.tar.xz
General cleanup, pt. II.
Diffstat (limited to 'subr/rtl_state.subr')
-rw-r--r--subr/rtl_state.subr40
1 files changed, 40 insertions, 0 deletions
diff --git a/subr/rtl_state.subr b/subr/rtl_state.subr
new file mode 100644
index 00000000..1ee8258b
--- /dev/null
+++ b/subr/rtl_state.subr
@@ -0,0 +1,40 @@
+#
+# set +o errexit -o noglob is assumed.
+#
+
+rtl_state_clear() {
+ local _workdir="${1}" _pkg_name="${2}" _pkg_fname="";
+ for _pkg_fname in $(find "${_workdir}" \
+ -maxdepth 1 -mindepth 1 -name .${_pkg_name}.\* -type f); do
+ rtl_fileop rm "${_pkg_fname}";
+ done;
+};
+
+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
+ rtl_fileop rm "${_done_fname_pfx}.${1#-}";
+ else
+ rtl_fileop touch "${_done_fname_pfx}.${1}";
+ fi;
+ shift; done;
+};
+
+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
+ rtl_fileop test "${_done_fname}";
+ elif [ "${_restart_at}" = "ALL" ]; then
+ return 1;
+ else
+ ! rtl_lmatch "${_restart_at}" "${_build_step}" ",";
+ fi;
+};
+
+# vim:filetype=sh