#!bin/sh # HOW TO RUN THIS SCRIPT # 1. unzip the bin-release file. # 2. place this script under your unzipped bin-release directory. # 3. if you want to check the javascript dependencies, # copy the package.json file to the directory. # 4. run this script. # Step 1: check all the dependendcies list in LICENSE are acutally bundled. echo "Step 1: check all the dependendcies list in LICENSE are acutally bundled" echo "================" files=($(grep jar LICENSE | awk -F ' ' '{ print $2 }')) for i in "${files[@]}"; do file=$(echo $i | tr -d '\r') if [ ! -f "BOOT-INF/lib/$file" ]; then echo "jar file $file is listed in LICENSE but not found in BOOT-INF/lib." fi done echo "\n" # Step 2: check all the jar files under BOOT-INF/lib are listed in LICENSE. echo "Step 2: check all the jar files under BOOT-INF/lib are listed in LICENSE." echo "================" for i in BOOT-INF/lib/*.jar; do jar=$(echo $i | awk -F '/' '{print $3}') if [ $(grep -c $jar LICENSE) -eq 0 ]; then echo "Found $i but not listed in LICENSE" fi done echo "\n" # Step 3: if a project is Apache Licensed and has NOTICE, it should be listed in NOTICE echo "Step 3: if a project is Apache Licensed and has NOTICE, it should be listed in NOTICE" echo "=================" licenses=($(echo $(grep "Apache 2.0" LICENSE | awk -F ' ' '{if ($0 ~ /^.*\*/) printf "%s,%s\\n",$3,$5}'))) for i in "${licenses[@]}"; do name=$(echo $i | awk -F ',' '{print $1}') # echo "checking $name..." license=$(echo $i | awk -F ',' '{print $2}' | awk '{if (toupper($0) ~ /.*LICENSE.*/) print $0}') # remove the trailing LICENSE.txt notice="${license%/*}/NOTICE" noticeTxt="$notice.txt" if [ $(curl --write-out %{http_code} --head --output /dev/null -s $notice | grep -c 200) -ne 0 ] \ || [ $(curl --write-out %{http_code} --head --output /dev/null -s $noticeTxt | grep -c 200) -ne 0 ]; then # echo "found Notice file, checking it is listed in NOTICE" if [ $(grep -c $name NOTICE) -eq 0 ]; then echo "$name should be added to NOTICE" fi fi done # Step 4: check javascript dependencies, ensure they are listed in LICENSE. # TODO