Skip to content

Commit cc43fa6

Browse files
committed
add optional parameters to db-dump-google-collections.sh
1 parent e667ecc commit cc43fa6

1 file changed

Lines changed: 153 additions & 44 deletions

File tree

render-ws-with-mongo-db/db-dump-google-collections.sh

Lines changed: 153 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,53 @@ set -e
1111
# For example:
1212
# /mnt/disks/mongodb_dump_fs/dump/google/01_match/w61_serial_110_to_119/s115_to_s119_r00/match
1313
# /mnt/disks/mongodb_dump_fs/dump/google/02_align/w61_serial_090_to_099/s094_r00/render
14+
#
15+
# Optional parameters (if omitted, you will be prompted interactively):
16+
# --db <render|match>
17+
# --stage <00_par|01_match|02_align|03_ic2d_nc4_hist_rs0p5|timestamp>
18+
# --project <w61_serial_NNN_to_NNN>
19+
# --slab-group <slab-group>
20+
# --pattern <collection-pattern-regex>
21+
22+
# ----------------------------------------------------------------------------
23+
# Parse optional named parameters
24+
25+
ARG_DB=""
26+
ARG_STAGE=""
27+
ARG_PROJECT=""
28+
ARG_SLAB_GROUP=""
29+
ARG_PATTERN=""
30+
31+
while [[ $# -gt 0 ]]; do
32+
case "${1}" in
33+
--db)
34+
ARG_DB="${2:?'--db requires a value'}"
35+
shift 2
36+
;;
37+
--stage)
38+
ARG_STAGE="${2:?'--stage requires a value'}"
39+
shift 2
40+
;;
41+
--project)
42+
ARG_PROJECT="${2:?'--project requires a value'}"
43+
shift 2
44+
;;
45+
--slab-group)
46+
ARG_SLAB_GROUP="${2:?'--slab-group requires a value'}"
47+
shift 2
48+
;;
49+
--pattern)
50+
ARG_PATTERN="${2:?'--pattern requires a value'}"
51+
shift 2
52+
;;
53+
*)
54+
echo "WARNING: unrecognized parameter '${1}' ignored"
55+
shift
56+
;;
57+
esac
58+
done
59+
60+
# ----------------------------------------------------------------------------
1461

1562
BASE_DUMP_DIR="/mnt/disks/mongodb_dump_fs/dump"
1663

@@ -19,66 +66,128 @@ if [ ! -d "${BASE_DUMP_DIR}" ]; then
1966
exit 1
2067
fi
2168

22-
echo "
23-
Select database:"
24-
select DB in "render" "match"; do
25-
case "${DB}" in
26-
render|match) break ;;
27-
*) echo " Invalid selection, please enter 1 or 2." ;;
69+
# ----------------------------------------------------------------------------
70+
# Resolve DB
71+
72+
if [[ -n "${ARG_DB}" ]]; then
73+
case "${ARG_DB}" in
74+
render|match) DB="${ARG_DB}" ;;
75+
*) echo "Invalid --db value '${ARG_DB}' entered, please select from the list."; ARG_DB="" ;;
2876
esac
29-
done
77+
fi
78+
if [[ -z "${ARG_DB}" && -z "${DB}" ]]; then
79+
echo "
80+
Select database:"
81+
select DB in "render" "match"; do
82+
case "${DB}" in
83+
render|match) break ;;
84+
*) echo " Invalid selection, please enter 1 or 2." ;;
85+
esac
86+
done
87+
fi
88+
89+
# ----------------------------------------------------------------------------
90+
# Resolve STAGE
3091

3192
LOCATION="google"
3293

33-
echo "
34-
Select stage:"
35-
select STAGE_CHOICE in "00_par" "01_match" "02_align" "03_ic2d_nc4_hist_rs0p5" "timestamp"; do
36-
case "${STAGE_CHOICE}" in
94+
if [[ -n "${ARG_STAGE}" ]]; then
95+
case "${ARG_STAGE}" in
3796
00_par|01_match|02_align|03_ic2d_nc4_hist_rs0p5)
38-
STAGE="${STAGE_CHOICE}"
39-
break
97+
STAGE="${ARG_STAGE}"
4098
;;
4199
timestamp)
42100
STAGE=$(date +"%Y%m%d_%H%M%S")
43-
break
44101
;;
45-
*) echo " Invalid selection, please enter a number from the list." ;;
102+
*)
103+
echo "Invalid --stage value '${ARG_STAGE}' entered, please select from the list."
104+
ARG_STAGE=""
105+
;;
46106
esac
47-
done
107+
fi
108+
if [[ -z "${ARG_STAGE}" && -z "${STAGE}" ]]; then
109+
echo "
110+
Select stage:"
111+
select STAGE_CHOICE in "00_par" "01_match" "02_align" "03_ic2d_nc4_hist_rs0p5" "timestamp"; do
112+
case "${STAGE_CHOICE}" in
113+
00_par|01_match|02_align|03_ic2d_nc4_hist_rs0p5)
114+
STAGE="${STAGE_CHOICE}"
115+
break
116+
;;
117+
timestamp)
118+
STAGE=$(date +"%Y%m%d_%H%M%S")
119+
break
120+
;;
121+
*) echo " Invalid selection, please enter a number from the list." ;;
122+
esac
123+
done
124+
fi
48125

49-
echo "
126+
# ----------------------------------------------------------------------------
127+
# Resolve PROJECT
128+
129+
if [[ -n "${ARG_PROJECT}" ]]; then
130+
PROJECT="${ARG_PROJECT}"
131+
else
132+
echo "
50133
Select project:"
51-
PROJECTS=()
52-
for i in $(seq 0 10 150); do
53-
PROJECTS+=("$(printf "w61_serial_%03d_to_%03d" "$i" "$((i+9))")")
54-
done
55-
select PROJECT in "${PROJECTS[@]}"; do
56-
if [[ -n "${PROJECT}" ]]; then
57-
break
58-
else
59-
echo " Invalid selection, please enter a number from the list."
60-
fi
61-
done
134+
PROJECTS=()
135+
for i in $(seq 0 10 150); do
136+
PROJECTS+=("$(printf "w61_serial_%03d_to_%03d" "$i" "$((i+9))")")
137+
done
138+
select PROJECT in "${PROJECTS[@]}"; do
139+
if [[ -n "${PROJECT}" ]]; then
140+
break
141+
else
142+
echo " Invalid selection, please enter a number from the list."
143+
fi
144+
done
145+
fi
62146

63-
echo "
147+
# ----------------------------------------------------------------------------
148+
# Resolve SLAB_GROUP
149+
150+
if [[ -n "${ARG_SLAB_GROUP}" ]]; then
151+
SLAB_GROUP="${ARG_SLAB_GROUP}"
152+
fi
153+
if [[ -z "${SLAB_GROUP}" ]]; then
154+
echo "
64155
Enter slab-group (e.g. s115_to_s119_r00 s094_r00 20260421_test ):"
65-
while true; do
66-
read -rp " Slab-group: " SLAB_GROUP
67-
if [[ -n "${SLAB_GROUP}" ]]; then
68-
break
69-
fi
70-
echo " Slab-group must not be empty."
71-
done
156+
while true; do
157+
read -rp " Slab-group: " SLAB_GROUP
158+
if [[ -n "${SLAB_GROUP}" ]]; then
159+
break
160+
fi
161+
echo " Slab-group must not be empty."
162+
done
163+
fi
72164

73-
echo "
165+
# ----------------------------------------------------------------------------
166+
# Resolve COLLECTION_PATTERN
167+
168+
if [[ -n "${ARG_PATTERN}" ]]; then
169+
COLLECTION_PATTERN="${ARG_PATTERN}"
170+
else
171+
echo "
74172
Enter collection pattern regex (e.g. .*_par_.* .*_s11[5-9]_.* .*align.* ):"
75-
while true; do
76-
read -rp " Pattern: " COLLECTION_PATTERN
77-
if [[ -n "${COLLECTION_PATTERN}" ]]; then
78-
break
79-
fi
80-
echo " Pattern must not be empty."
81-
done
173+
while true; do
174+
read -rp " Pattern: " COLLECTION_PATTERN
175+
if [[ -n "${COLLECTION_PATTERN}" ]]; then
176+
break
177+
fi
178+
echo " Pattern must not be empty."
179+
done
180+
fi
181+
182+
# ----------------------------------------------------------------------------
183+
# Pad COLLECTION_PATTERN with .* anchors if not already anchored
184+
185+
if [[ "${COLLECTION_PATTERN}" != ^* ]]; then
186+
COLLECTION_PATTERN=".*${COLLECTION_PATTERN}"
187+
fi
188+
if [[ "${COLLECTION_PATTERN}" != *$ ]]; then
189+
COLLECTION_PATTERN="${COLLECTION_PATTERN}.*"
190+
fi
82191

83192
# ----------------------------------------------------------------------------
84193
# Build and validate the target dump directory

0 commit comments

Comments
 (0)