Skip to content

Commit 37e6fda

Browse files
[WIP]multi version support for build parent stacks
Signed-off-by: Michael Valdron <mvaldron@redhat.com>
1 parent 1321736 commit 37e6fda

File tree

1 file changed

+52
-20
lines changed

1 file changed

+52
-20
lines changed

tests/check_parent_stacks.sh

Lines changed: 52 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
11
#!/bin/bash
22

33
base_path=$(dirname $0)/..
4+
# default samples file path
45
samples_file=${base_path}/extraDevfileEntries.yaml
56
# Cached remote samples directory
67
samples_dir=${base_path}/samples/.cache
8+
parents_file=${base_path}/parents.yaml
9+
10+
# Read samples file as first argument
11+
# if unset use default samples file path
12+
if [ ! -z "${1}" ]; then
13+
samples_file=${1}
14+
fi
715

816
# Clones remote samples into cache directory
917
clone_samples() {
@@ -14,40 +22,64 @@ clone_samples() {
1422
rm -rf ${samples_dir}
1523
fi
1624

17-
for ((idx=0;idx<${samples_len};idx++)); do
18-
name=$(yq eval .samples.${idx}.name ${samples_file})
19-
remote_url=$(yq eval .samples.${idx}.git.remotes.origin ${samples_file})
25+
for ((s_idx=0;s_idx<${samples_len};s_idx++)); do
26+
name=$(yq eval .samples.${s_idx}.name ${samples_file})
27+
versions=($(yq eval .samples.${s_idx}.versions.[].version ${samples_file}))
28+
29+
# Iterate through sample versions if sample has multi version support
30+
if [ ${#versions[@]} -ne 0 ]; then
31+
for ((v_idx=0;v_idx<${#versions[@]};v_idx++)); do
32+
remote_url=$(yq eval .samples.${s_idx}.versions.${v_idx}.git.remotes.origin ${samples_file})
33+
34+
git clone --depth=1 ${remote_url} ${samples_dir}/${name}/${versions[$v_idx]}
35+
done
36+
else
37+
remote_url=$(yq eval .samples.${s_idx}.git.remotes.origin ${samples_file})
2038

21-
git clone --depth=1 ${remote_url} ${samples_dir}/${name}
39+
git clone --depth=1 ${remote_url} ${samples_dir}/${name}
40+
fi
2241
done
2342
}
2443

2544
# Builds sample parent dependency file
2645
build_parents() {
2746
samples_len=$(yq eval '.samples | length' ${samples_file})
2847

29-
if [ -f parents.yaml ]; then
30-
rm parents.yaml
48+
if [ -f ${parents_file} ]; then
49+
rm ${parents_file}
3150
fi
3251

33-
for ((idx=0;idx<${samples_len};idx++)); do
34-
name=$(yq eval .samples.${idx}.name ${samples_file})
35-
devfile=${samples_dir}/${name}/devfile.yaml
36-
parent=$(yq eval .parent.id ${devfile})
37-
38-
if [ "${parent}" != "null" ]; then
39-
if [ -f parents.yaml ] && [ "$(yq eval .parents.${parent}.children parents.yaml)" != "null" ]; then
40-
next_idx=$(yq eval ".parents.${parent}.children | length" parents.yaml)
41-
yq eval ".parents.${parent}.children[${next_idx}] = \"${name}\"" -i parents.yaml
42-
elif [ -f parents.yaml ]; then
43-
yq eval ".parents.${parent}.children[0] = \"${name}\"" -i parents.yaml
44-
else
45-
yq eval -n ".parents.${parent}.children[0] = \"${name}\"" > parents.yaml
52+
for ((s_idx=0;s_idx<${samples_len};s_idx++)); do
53+
name=$(yq eval .samples.${s_idx}.name ${samples_file})
54+
versions=($(yq eval .samples.${s_idx}.versions.[].version ${samples_file}))
55+
56+
# Iterate through sample versions if sample has multi version support
57+
if [ ${#versions[@]} -ne 0 ]; then
58+
for ((v_idx=0;v_idx<${#versions[@]};v_idx++)); do
59+
devfile=${samples_dir}/${name}/${versions[$v_idx]}/devfile.yaml
60+
parent=$(yq eval .parent.id ${devfile})
61+
parent_version=$(yq eval .parent.version ${devfile})
62+
63+
# TODO: multi version build control logic
64+
done
65+
else
66+
devfile=${samples_dir}/${name}/devfile.yaml
67+
parent=$(yq eval .parent.id ${devfile})
68+
69+
if [ "${parent}" != "null" ]; then
70+
if [ -f ${parents_file} ] && [ "$(yq eval .parents.${parent}.children ${parents_file})" != "null" ]; then
71+
next_idx=$(yq eval ".parents.${parent}.children | length" ${parents_file})
72+
yq eval ".parents.${parent}.children[${next_idx}] = \"${name}\"" -i ${parents_file}
73+
elif [ -f ${parents_file} ]; then
74+
yq eval ".parents.${parent}.children[0] = \"${name}\"" -i ${parents_file}
75+
else
76+
yq eval -n ".parents.${parent}.children[0] = \"${name}\"" > ${parents_file}
77+
fi
4678
fi
4779
fi
4880
done
4981
}
5082

5183
clone_samples
5284

53-
build_parents
85+
# build_parents

0 commit comments

Comments
 (0)