mirror of
https://github.com/cosinekitty/astronomy.git
synced 2026-04-03 22:34:53 -04:00
Now that I no longer need to generate Chebyshev models or TOP2013 models for Pluto, I got rid of all the code in generate.c that is no longer needed. This whacked about 1000 lines of code.
148 lines
4.8 KiB
Bash
Executable File
148 lines
4.8 KiB
Bash
Executable File
#!/bin/bash
|
|
Fail()
|
|
{
|
|
echo "ERROR($0): $1"
|
|
exit 1
|
|
}
|
|
|
|
IsInstalled()
|
|
{
|
|
type "$1" > /dev/null 2>&1
|
|
return $?
|
|
}
|
|
|
|
Download()
|
|
{
|
|
local EPHURL=$1
|
|
local EPHFILE=$2
|
|
local SHAFILE=$3
|
|
local MD5FILE=$4
|
|
|
|
if [[ ! -f ${EPHFILE} ]]; then
|
|
echo ""
|
|
echo "Local 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 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 file at the URL above into this directory."
|
|
echo "Then run this script again to continue."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if IsInstalled sha256sum; then
|
|
if sha256sum -c ${SHAFILE}; then
|
|
echo "Validated file using sha256 checksum."
|
|
else
|
|
rm -f ${EPHFILE}
|
|
Fail "Detected corrupt file: failed sha256 check."
|
|
fi
|
|
elif IsInstalled md5sum; then
|
|
if md5sum -c ${MD5FILE}; then
|
|
echo "Validated file using md5 checksum."
|
|
else
|
|
rm -f ${EPHFILE}
|
|
Fail "Detected corrupt file: failed md5 check."
|
|
fi
|
|
else
|
|
echo "Warning: could not validate file with md5 or sha256."
|
|
fi
|
|
}
|
|
|
|
[[ "$1" == "" || "$1" == "-v" ]] || Fail "Invalid command line options."
|
|
|
|
Download https://github.com/cosinekitty/ephemeris/raw/master/lnxp1600p2200.405 lnxp1600p2200.405 ephemeris.sha256 ephemeris.md5
|
|
Download https://github.com/cosinekitty/ephemeris/raw/master/top2013/TOP2013.dat TOP2013.dat top2013.sha256 top2013.md5
|
|
Download https://raw.githubusercontent.com/astronexus/HYG-Database/master/hygdata_v3.csv hygdata_v3.csv hygdata_v3.sha256 hygdata_v3.md5
|
|
|
|
rm -f constellation/test_input.txt
|
|
./make_constellation_data.py || Fail "Error creating constellation test data."
|
|
|
|
cd .. || Fail "Cannot change to parent directory."
|
|
python3 generate/update_copyrights.py $(git grep -l Copyright -- generate hydrogen LICENSE source/c/astronomy.h) ||
|
|
Fail "Error updating copyrights."
|
|
cd generate || Fail "Cannot change back to generate directory."
|
|
|
|
echo ""
|
|
echo "Building C source code for 'generate' program."
|
|
./build || Fail "Could not build 'generate' program from source."
|
|
|
|
mkdir -pv output temp apsides || Fail "Error creating directories."
|
|
rm -f temp/*
|
|
|
|
echo ""
|
|
echo "Validating TOP2013 code."
|
|
./generate validate_top2013 || Fail "Error in TOP2013 validation."
|
|
|
|
FASTMODE=true
|
|
for file in output/vsop_{0,1,3,4,5,6,7,11}.txt; 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
|
|
./generate planets || Fail "Could not generate planet models."
|
|
fi
|
|
|
|
echo ""
|
|
echo "Generating apsis test data."
|
|
rm -f apsides/apsis_*.txt
|
|
./generate apsis || Fail "Could not generate apsis test data."
|
|
|
|
echo ""
|
|
echo "Generating eclipse data."
|
|
cd eclipse || Fail "Could not change to eclipse directory."
|
|
rm -f lunar_eclipse.txt solar_eclipse.txt mercury.txt venus.txt
|
|
python3 norm.py || Fail "Error normalizing eclipse test data."
|
|
cd .. || Fail "Could not change to parent directory."
|
|
|
|
./makedoc || exit $?
|
|
./unit_test_csharp $1 || exit $?
|
|
./unit_test_js $1 || exit $?
|
|
./unit_test_c $1 || exit $?
|
|
./unit_test_python $1 || exit $?
|
|
|
|
echo ""
|
|
echo "Diffing calculations."
|
|
./ctest diff temp/c_check.txt dotnet/csharp_test/csharp_check.txt || Fail "Diff(c,c#) failure."
|
|
./ctest diff temp/{c,js}_check.txt || Fail "Diff(c,js) failure."
|
|
./ctest diff temp/{c,py}_check.txt || Fail "Diff(c,py) failure."
|
|
|
|
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 ../python || Fail "Cannot change directory to ../python"
|
|
test/test || Fail "Error testing Python examples."
|
|
cd ../csharp || Fail "Cannot change directory to ../csharp"
|
|
test/test || Fail "Error testing C# examples."
|
|
cd ../../generate || Fail "Cannot change back to generate directory."
|
|
|
|
cat pass.txt
|
|
exit 0
|