Files
astronomy/generate/run

81 lines
2.3 KiB
Bash
Executable File

#!/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."
echo ""
echo "Generating planet models."
mkdir -pv output temp || Fail "Error creating directories."
rm -f output/vsop_*.txt temp/*
./generate planets || Fail "Could not generate planet models."
./unit_test_js || exit $?
./unit_test_c || exit $?
exit 0