#!/bin/bash # 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: declare -a examples=( "examples/java run runExample" "examples/kotlin run runJava runExample runJavaExample") # e.g: empty or javadoc, etc. gradle_doc="javadoc pandoc" # e.g. empty or sonarqube gradle_sonar="sonar" # gradle options for examples gradle_opts="--console=plain --no-build-cache --no-daemon" # maven arguments for examples maven_args="compile exec:java" # # Version: 1.1.5 # 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..." } checkCopyright() { if [ "$(grep -c "$date" "$1")" == "0" ]; then echo -e " Invalid: ${red}$f${std}" else echo -e " Checked: $1" fi } runGradle() { cd "$1" || exit 1 clear reset echo -e "> Project: ${cyan}${1}${std} [Gradle]" shift ./gradlew $@ || exit 1 pause cd "$pwd" } runKobalt() { cd "$1" || exit 1 if [ -f kobalt/src/Build.kt ]; then clear reset echo -e "> Project: ${cyan}${1}${std} [Kobalt]" shift ./kobaltw $@ || exit 1 pause fi cd "$pwd" } runMaven() { cd "$1" || exit 1 if [ -f pom.xml ]; then clear reset echo -e "> Project: ${cyan}${1}${std} [Maven]" shift mvn $@ || exit 1 pause fi cd "$pwd" } updateWrappers() { clear ./updatewrappers.sh pause } checkDeps() { clear echo -e "${cyan}Checking depencencies...${std}" gradle --console=plain dU || exit 1 read -p "Check Examples depencencies? [y/n] " cont clear case $cont in [Nn]) return ;; *) for ex in "${!examples[@]}"; do runGradle $(echo "${examples[ex]}" | cut -d " " -f 1) dU # runKobalt $(echo "${examples[ex]}" | cut -d " " -f 1) checkVersions runMaven $(echo "${examples[ex]}" | cut -d " " -f 1) versions:display-dependency-updates if [ "$ex" -eq "${#examples}" ]; then read -p "Continue? [y/n]: " cont clear case $cont in *) continue ;; [Nn]) return ;; esac fi done ;; esac } gradleCheck() { clear echo -e "${cyan}Checking Gradle build....${std}" gradle $gradle_opts clean check $gradle_doc $gradle_sonar || exit 1 pause } runExamples() { for ex in "${!examples[@]}"; do runGradle ${examples[ex]} clean $gradle_opts # runKobalt ${examples[ex]} clean runMaven $(echo "${examples[ex]}" | cut -d " " -f 1) clean $maven_args done } examplesMenu() { clear echo -e "${cyan}Examples${std}" for ex in "${!examples[@]}"; do printf ' %d. %s\n' $(($ex + 1)) $(echo "${examples[ex]}" | cut -d " " -f 1) done echo " $((${#examples[@]} + 1)). Run All Examples" read -p "Enter choice [1-${#examples[@]}]: " choice clear case $choice in [0-9]) if [ "$choice" -gt "${#examples[@]}" ]; then runExamples examplesMenu else runGradle ${examples[$(($choice - 1))]} # runKobalt ${examples[$(($choice - 1))]} runMaven $(echo "${examples[$(($choice - 1))]}" | cut -d " " -f 1) $maven_args examplesMenu fi ;; *) return ;; esac } validateCopyrights() { clear echo -e "${cyan}Validating copyrights...${std}" for f in "LICENSE.txt" ${src}/*${ext} ${test}/*${ext}; do if [ -f "$f" ]; then checkCopyright "$f" fi done pause } everything() { updateWrappers checkDeps gradleCheck runExamples validateCopyrights } showMenu() { clear echo "${cyan}Preflight Check${std}" 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) examplesMenu ;; 5) validateCopyrights ;; 6) everything ;; *) exit 0 ;; esac } while true; do showMenu readOptions done