summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorLuke T. Shumaker <lukeshu@lukeshu.com>2023-10-14 18:41:45 -0600
committerLuke T. Shumaker <lukeshu@lukeshu.com>2023-10-14 19:04:19 -0600
commit6af424ea20392be0487ec204591c93b0c65d4cb2 (patch)
tree10108bd71f4fa4e2675a8e3bf4a02c7cc8171142 /bin
parent402abe1085460e03de15d9dbca53487b930bb721 (diff)
poolify: Improve readability
Diffstat (limited to 'bin')
-rwxr-xr-xbin/poolify48
1 files changed, 30 insertions, 18 deletions
diff --git a/bin/poolify b/bin/poolify
index e256157..649b71b 100755
--- a/bin/poolify
+++ b/bin/poolify
@@ -13,14 +13,27 @@ main() {
set -euE -o pipefail
shopt -s nullglob
- echo '# Pass 1'
- declare -A rewrite
- rewrite[200109261739]=200303310700
- while read -r snap name date time size; do
+ arg_metadata_txt=$1
+ arg_index_txt=$2
+
+ # Overrides ############################################################
+
+ declare -A override_datetime
+ override_datetime[200109261739]=200303310700
+
+ override_synthetic_listings=(
+ #YYYYMMDDHHMM branch_name newfiles
+ '200307291500 ALPHA/CVTUTF-1-1 ExpectedOutput.txt readme.txt'
+ )
+
+ # Main #################################################################
+
+ echo '# Pass 1 (initialize snapshots from $arg_metadata_txt)'
+ while read -r snap name date time; do
dirpart="${name%/*}"
filepart="${name##*/}"
datetime="${date//-/}${time//:/}"
- datetime="${rewrite[$datetime]:-$datetime}"
+ datetime="${override_datetime[$datetime]:-$datetime}"
filedir=dat/pools/files/"${datetime}-${name//\//_}"
snapdir=dat/pools/snaps/"${snap}-${dirpart//\//_}"
if [[ -d "${filedir/.OLD/}" ]]; then
@@ -28,9 +41,9 @@ main() {
fi
mkdir -p -- "$filedir" "$snapdir"
ln -sr "$filedir/$filepart" "$snapdir"
- done < "$1"
+ done < "$arg_metadata_txt"
- echo '# Pass 1.5'
+ echo '# Pass 1.5 (initialize synthetic snapshots)'
# Looking at the data, there are 3 revisions that we DON'T
# have directory listings for. So we need to synthesize
# those.
@@ -39,7 +52,8 @@ main() {
# synthesizing anything, then looking for files ending in
# ".1". They are created during pass 2 if we have a file with
# no matching listing.
- while read -r datetime dirpart newfiles; do
+ for line in "${override_synthetic_listings[@]}"; do
+ read -r datetime dirpart newfiles <<<"$line"
# We need to figure out which files to put in the
# directory listing. We're going to do that by
# mimicking the previous listing with that dirpart.
@@ -65,12 +79,14 @@ main() {
rm -- "$snapdir/$filepart"
ln -sr "$filedir/$filepart" "$snapdir"
done
- done < <(printf '%s\n' \
- '200307291500 ALPHA/CVTUTF-1-1 ExpectedOutput.txt readme.txt' \
- )
+ done
- echo '# Pass 2'
+ echo '# Pass 2 (resolve files)'
while read -r time url; do
+ if [[ "$url" == */ ]]; then
+ # Skip directories
+ continue
+ fi
if [[ "$url" == */2.0-Update/* ]]; then
# Gross hack
continue
@@ -79,10 +95,6 @@ main() {
dirpart="${name%/*}"
filepart="${name##*/}"
- if [[ -z "$filepart" ]]; then
- continue
- fi
-
pools=(dat/pools/files/*-"${name//\//_}")
if [[ "$name" = *.OLD* ]]; then
pname="${name//\//_}"
@@ -119,9 +131,9 @@ main() {
fi
i+=1
done
- done < "$2"
+ done < "$arg_index_txt"
- echo '# Pass 3'
+ echo '# Pass 3 (resolve missing files)'
while read -r missing; do
if [[ -f "${missing/.OLD}/${missing##*_}" ]]; then
ln -sr "${missing/.OLD}/${missing##*_}" "$missing"