#!/bin/bash Fail() { echo "ERROR($0): $1" exit 1 } IsInstalled() { type "$1" > /dev/null 2>&1 return $? } OUTDIR=../source EPHFILE=lnxp1600p2200.405 # EPHURL=ftp://ssd.jpl.nasa.gov/pub/eph/planets/Linux/de405/${EPHFILE} EPHURL=https://github.com/cosinekitty/ephemeris/raw/master/${EPHFILE} if [[ ! -f ${EPHFILE} ]]; then echo "" echo "Ephemeris file not found: ${EPHFILE}" echo "Trying to download for you from:" echo "${EPHURL}" echo "" if IsInstalled wget; then wget_success=false for attempt in {1..10}; do if [[ ${attempt} > 1 ]]; then echo "wget failed (attempt ${attempt} of 10) -- will retry download in 9 seconds..." sleep 9 fi if wget ${EPHURL}; then echo "wget successfully downloaded the ephemeris file." wget_success=true break fi done [[ ${wget_success} == true ]] || Fail "Could not download using wget: ${EPHFILE}" elif IsInstalled curl; then curl -L -o ${EPHFILE} ${EPHURL} || Fail "Could not download using curl: ${EPHFILE}" else echo "Neither wget nor curl is installed. Use your browser to download" echo "the above file from the NASA ftp site into this directory." echo "Then run this script again to continue." exit 1 fi if IsInstalled sha256sum; then if sha256sum -c ephemeris.sha256; then echo "Validated download using sha256 checksum." else rm -f ${EPHFILE} Fail "Detected corrupt ephemeris file: failed sha256 check." fi elif IsInstalled md5sum; then if md5sum -c ephemeris.md5; then echo "Validated download using md5 checksum." else rm -f ${EPHFILE} Fail "Detected corrupt ephemeris file: failed md5 check." fi else echo "Warning: could not validate ephemeris file with md5 or sha256." fi fi echo "" echo "Building C source code for 'generate' program." ./build || Fail "Could not build 'generate' program from source." mkdir -pv output temp || Fail "Error creating directories." rm -f temp/* FASTMODE=true for file in output/vsop_{0,1,3,4,5,6,7,11}.txt output/08.eph; do if [[ ! -f ${file} ]]; then echo "Missing required planet model file: ${file}" FASTMODE=false fi done if [[ "${FASTMODE}" == "false" ]]; then echo "" echo "Generating planet models." rm -f output/vsop_*.txt output/*.eph ./generate planets || Fail "Could not generate planet models." fi ./unit_test_js || exit $? ./unit_test_c || exit $? ./unit_test_python || exit $? echo "" echo "Testing example programs." cd ../demo/c || Fail "Cannot change directory to ../demo/c" test/test || Fail "Error testing C examples" cd ../nodejs || Fail "Cannot change directory to ../nodejs" test/test || Fail "Error testing nodejs examples." cd ../../generate || Fail "Cannot change back to generate directory." cat pass.txt exit 0