A shell script to get all projects spring-boot version

Rui Zhou
2 min readFeb 28, 2023

--

Photo by Gabriel Heinzer on Unsplash

Just wrote a quick shell script to get all projects spring-boot version

#!/bin/bash

# A quick shell script to check the spring-boot version
# only work for gradlw project!!
# read repo-name from services.csv
# cat services.csv
# demp app,camel-spring-demo


set -e

servicelist=$(pwd)/services.csv # desc,repo-name
output=$(pwd)/spring-ver.csv
repo_base="https://github.com/softarts/" # my repo root path
# "https://$username:$pass@github.com/softarts/" # it may need username/pass

# pull all code under ./tmp/
mkdir -p tmp
cd ./tmp/

while read -r line || [[ -n "$line" ]];
do
echo $line
# skip line start with '#'
[[ $line =~ ^#.* ]] && continue
if printf '%s\n' "$line" | grep -q -e ','; then
varname=$(printf '%s\n' "$line" | sed -e 's/,.*//') # replace first part with empty
varvalue=$(printf '%s\n' "$line" | sed -e 's/^[^,]*,//') # replace second part with empty
varvalue="$(echo -e "${varvalue}" | tr -d '[:space:]')"

repo="$repo_base$varvalue.git"
echo "$varname:$varvalue:$repo"

if [ -d $varvalue ];then
echo "Directory $varvalue exists."
cd $varvaluegit pull
cd ..
else
git clone --depth=1 $repo
fi

springver="skip"
if [ -f "$varvalue/gradlew" ];then
echo "running gradlew"
springver=$($varvalue/gradlew -x test -b $varvalue/build.gradle -q dependencyInsight --dependency spring-boot</dev/null|grep "org.springframework.boot:spring-boot:"|head -n 1 |awk -F":" '{ print $3}')
else
echo "non-spring"
springver="non-spring-boot"
fi

echo "$varname:$varvalue:$springver"
echo "$varname:$varvalue:$springver">>$output
fi
done < $servicelist

and this is my services.csv file

cat services.csv 
demp app,camel-spring-demo

Output is:

cat spring-ver.csv # it is spring-boot 3.0.2
demp app:camel-spring-demo:3.0.2 (selected by rule)

The key is

# without `</dev/null` it will break the whil loop 
gradlew -q dependencyInsight --dependency spring-boot</dev/null

Happy Coding!

--

--