]> begriffs open source - cmsis/blob - update_versions.sh
Update documentation for branch main
[cmsis] / update_versions.sh
1 #!/bin/bash
2
3 LINES=($(grep -n 'list of versions' version.js | cut -d: -f1))
4 VERSIONS_BEGIN=$(expr ${LINES[0]} - 1)
5 VERSIONS_END=$(expr ${LINES[1]} + 1)
6
7 get_versions() {
8   local folders=($(find -maxdepth 1  -mindepth 1 -type d) $(find -maxdepth 1 -mindepth 1 -type l))
9   declare -A versions
10   for folder in ${folders[*]#./}; do
11     if [ -f $folder/$1/footer.js ]; then
12       version=$(grep "Version" $folder/$1/footer.js | \
13                 sed -r "s/.*'Version ([^']+)'.*/\1/" | \
14                 sed -r "s/\+.*$//" | \
15                 sed -r "s/([^0-9])$/\10/")
16       versions["$version"]="$folder"
17     fi
18   done
19   fields=()
20   for version in $(IFS=$'\n'; sed -r 's/$/_/' <<< "${!versions[*]}" | sort -Vr | sed -r 's/_$//'); do
21       fields+=( "\"${versions[$version]}\": \"$version\"" )
22   done
23   
24   echo "    \"$1\": {"
25   echo -n "        "
26   echo $(IFS=,; echo "${fields[*]}") | sed 's/,/,\n        /g'
27   echo -n "    }"
28 }
29
30 mv version.js version.js.bak
31
32 head -n ${VERSIONS_BEGIN} version.js.bak > version.js
33 echo "//--- list of versions ---" >> version.js
34 echo "const versions = {" >> version.js
35
36 get_versions "General" >> version.js
37 echo "," >> version.js
38
39 get_versions "Core" >> version.js
40 echo "," >> version.js
41
42 get_versions "Core_A" >> version.js
43 echo "," >> version.js
44
45 get_versions "Driver" >> version.js
46 echo "," >> version.js
47
48 get_versions "RTOS2" >> version.js
49 echo "" >> version.js
50
51 echo "}" >> version.js
52 echo "//--- list of versions ---" >> version.js
53 tail -n +${VERSIONS_END} version.js.bak >> version.js
54
55 rm version.js.bak
56
57 exit 0