1
1
#! /bin/bash
2
2
3
3
base_path=$( dirname $0 ) /..
4
+ # default samples file path
4
5
samples_file=${base_path} /extraDevfileEntries.yaml
5
6
# Cached remote samples directory
6
7
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
7
15
8
16
# Clones remote samples into cache directory
9
17
clone_samples () {
@@ -14,40 +22,64 @@ clone_samples() {
14
22
rm -rf ${samples_dir}
15
23
fi
16
24
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} )
20
38
21
- git clone --depth=1 ${remote_url} ${samples_dir} /${name}
39
+ git clone --depth=1 ${remote_url} ${samples_dir} /${name}
40
+ fi
22
41
done
23
42
}
24
43
25
44
# Builds sample parent dependency file
26
45
build_parents () {
27
46
samples_len=$( yq eval ' .samples | length' ${samples_file} )
28
47
29
- if [ -f parents.yaml ]; then
30
- rm parents.yaml
48
+ if [ -f ${parents_file} ]; then
49
+ rm ${parents_file}
31
50
fi
32
51
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
46
78
fi
47
79
fi
48
80
done
49
81
}
50
82
51
83
clone_samples
52
84
53
- build_parents
85
+ # build_parents
0 commit comments