semver/preflightcheck.sh

157 lines
2.9 KiB
Bash

#!/bin/bash
#
# Version: 1.0
#
# set source and test locations
src="src/main/java/net/thauvin/erik/semver"
test="src/test/java/net/thauvin/erik/semver"
# e.g: .java, .kt, etc.
ext=".java"
java8=true
# e.g: <example directory> <gradle args...>
declare -a examples=(
"examples/java run"
"examples/kotlin run runJava")
# e.g: empty or javadoc, etc.
doc="javadoc pandoc"
# e.g. empty or sonarqube
sonar="sonarqube"
# gradle default command line args
opts="--console=plain --no-build-cache --no-daemon"
if [ "$java8" = true ]
then
export JAVA_HOME="$JAVA8_HOME"
export PATH="$(cygpath "$JAVA_HOME")/bin:$PATH"
fi
pwd=$PWD
red=$(tput setaf 1)
cyan=$(tput setaf 6)
std=$(tput sgr0)
date=$(date +%Y)
pause() {
read -p "Press [Enter] key to continue..."
clear
}
checkCopyright() {
if [ "$(grep -c "$date" "$1")" -eq 0 ]
then
echo -e " Invalid: ${red}$f${std}"
else
echo -e " Checked: $1"
fi
}
runGradle() {
cd "$1" || exit 1
echo -e "> Project: ${cyan}${1}${std} [Gradle]"
shift
./gradlew $opts clean $@ || exit 1
cd "$pwd"
}
runKobalt() {
cd "$1" || exit 1
if [ -f kobalt/src/Build.kt ]
then
read -p "Run Kobalt Example? [y/n]: " choice
case $choice in
[Yy] )
clear
echo -e "> Project: ${cyan}$1${std} [Kobalt]"
shift
./kobaltw clean $@ ;;
* ) ;;
esac
fi
cd "$pwd"
}
updateWrappers() {
clear
./updatewrappers.sh
pause
}
checkDeps() {
clear
echo -e "${cyan}Checking depencencies...${std}"
gradle --console=plain dU || exit 1
pause
}
gradleCheck() {
clear
echo -e "${cyan}Checking Gradle build....${std}"
gradle $opts clean check $doc $sonar || exit 1
pause
}
examples() {
clear
echo -e "Running examples..."
for ex in "${examples[@]}"
do
runGradle $ex
runKobalt $ex
read -p "Continue? [y/n]: " choice
clear
case $choice in
[Yy] ) continue ;;
* ) return ;;
esac
done
}
validateCopyrights() {
clear
echo -e "${cyan}Validating copyrights...${std}"
for f in LICENSE.TXT ${src}/*${ext} ${test}/*${ext}
do
checkCopyright "$f"
done
pause
}
everything() {
updateWrappers
checkDeps
gradleCheck
examples
validateCopyrights
}
showMenu() {
echo " 1. Update Wrappers"
echo " 2. Check Dependencies"
echo " 3. Check Gradle Build"
echo " 4. Run Examples"
echo " 5. Validate Copyrights"
echo " 6. Check Everything"
}
readOptions(){
local choice
read -p "Enter choice [1-6]: " choice
case $choice in
1) updateWrappers ;;
2) checkDeps ;;
3) gradleCheck ;;
4) examples ;;
5) validateCopyrights ;;
6) everything ;;
*) exit 0 ;;
esac
}
while true
do
showMenu
readOptions
done