install wxtoimg and partially predict

master
Ken Barbour 2022-03-01 17:24:09 -05:00
parent 030b7d6ddf
commit f6d5dc6dab
2 changed files with 106 additions and 18 deletions

View File

@ -7,35 +7,53 @@
set -o pipefail
prog="$0"
me=${HELP:-$(basename "${prog}")}
rootdir=$(dirname $(realpath $0))
rootdir=$(dirname $(realpath ${BASH_SOURCE[0]}))
tmpdir=/tmp/wxrx/setup
source "${rootdir}/lib/utils.sh"
# Download and install wxtoimg and related utilities
# @param install path (default ~/.local/)
# @param path to temporary directory for the downloaded tarball
function install_wxtoimg() {
local url='https://static.kenbarbour.com/download/wxtoimg-linux64-2.10.11-1.tar.gz'
local tarfile=${tmpdir}/$(basename ${url})
local url=${1:-'https://static.kenbarbour.com/download/wxtoimg-linux64-2.10.11-1.tar.gz'}
mkdir -p $(dirname $tarfile)
curl --output "${tarfile}" "${url}"
tar xzf "${tarfile}" -C / || logerr "wxtoimg requires root to install"
install_from_targz "${url}" ${@:2}
log "wxtoimg requires additional steps to install; run 'wxtoimg' manually to complete"
# TODO: fix ./usr/bin/xwxtoimg symlink -> ./usr/bin/wxtoimg
}
function has_wxtoimg() {
command -v wxtoimg &>/dev/null
}
function install_predict() {
local url='https://www.qsl.net/kd2bd/predict-2.2.7.tar.gz'
local tarfile=${tmpdir}/$(basename ${url})
local installPath=${2:-${tmpdir}/predict}
mkdir -p $(dirname $tarfile)
curl --output "${tarfile}" "${url}"
# TODO untar
install_from_targz "${url}" "${installPath}" ${@:3}
# TODO: build steps are needed
log "predict requires additional steps to install; run 'predict' manually to complete"
}
function has_predict() {
command -v wxtoimg &>/dev/null
command -v predict &>/dev/null
}
# Download tarfile and install
# @param url
# @param install path (default ~/.local/)
# @param temporary filename for the downloaded tarball (default based on ${tmpdir} and filename)
function install_from_targz() {
local url=${1}
local tarfile=${3:-$tmpdir/$(basename ${url})}
local installPath=${2:-~/.local/}
mkdir -p $(dirname $tarfile)
mkdir -p ${installPath}
curl --silent --output "${tarfile}" "${url}"
tar xzf "${tarfile}" -C "${installPath}"
}
function process_args() {
@ -69,11 +87,14 @@ fi
process_args $@
log "Checking for dependencies"
errorStatus=0
# Install wxtoimg
if ! has_wxtoimg; then
log "Installing wxtoimg..."
install_wxtoimg
rtrn=$?
errorStatus=$(expr $errorStatus + $rtrn)
else
log "wxtoimg already installed"
fi
@ -82,14 +103,17 @@ fi
if [ ! has_predict ]; then
log "Installing predict"
install_predict
rtrn=$?
errorStatus=$(expr $errorStatus + $rtrn)
else
log "predict already installed"
fi
# # TODO: Install rtlsdr
# if [ ! has_rtl ]; then
# log "Installing rtlsdr drivers"
# install_rtlsdr
# else
# log "rtlsdr drivers already installed"
# fi
# Finish up
if [ -z errorStatus ]; then
log "Setup complete."
else
logerr "Setup did not complete successfully. See above errors for more details"
fi
exit $errorStatus

64
test/test_setup.sh 100755
View File

@ -0,0 +1,64 @@
#!/usr/bin/env bash
##
unit=$(realpath $(dirname "$0")/../setup.sh)
fixture_dir=$(realpath $(dirname "$0")/fixtures)
# This is a
test_install_from_targz() {
stdoutF=${SHUNIT_TMPDIR}/stdout
stderrF=${SHUNIT_TMPDIR}/stderr
installPath=${SHUNIT_TMPDIR}/setup/wxtoimg-root
tarfile=${SHUNIT_TMPDIR}/setup/download.tgz
# TODO: Avoid reaching out to the web
url='https://static.kenbarbour.com/download/wxtoimg-linux64-2.10.11-1.tar.gz'
source ${unit}
mkdir -p $(dirname ${tarfile})
mkdir -p ${installPath}
install_from_targz "${url}" "${installPath}" "${tarfile}" >${stdoutF} 2>${stderrF}
rtrn=$?
assertTrue "expected 0 exit status" $?
assertTrue "expected downloaded file to exist" "[ -f ${tarfile} ]"
assertNull "unexpected error" "`cat $stderrF`"
assertTrue "expected wxtoimg binary" "[ -f ${installPath}/usr/local/bin/wxtoimg ]"
assertTrue "expected wxmap binary" "[ -f ${installPath}/usr/local/bin/wxmap ]"
cat ${stderrF}
}
test_install_wxtoimg() {
stdoutF=${SHUNIT_TMPDIR}/stdout
stderrF=${SHUNIT_TMPDIR}/stderr
installPath=${SHUNIT_TMPDIR}/setup/wxtoimg-root
tarfile=${SHUNIT_TMPDIR}/setup/download.tgz
url='https://static.kenbarbour.com/download/wxtoimg-linux64-2.10.11-1.tar.gz'
source ${unit}
mkdir -p $(dirname ${tarfile})
mkdir -p ${installPath}
install_wxtoimg "${url}" "${installPath}" "${tarfile}" >${stdoutF} 2>${stderrF}
rtrn=$?
assertTrue "expected 0 exit status" $?
assertNull "unexpected error" "`cat $stderrF`"
assertTrue "expected wxtoimg binary" "[ -f ${installPath}/usr/local/bin/wxtoimg ]"
assertTrue "expected wxmap binary" "[ -f ${installPath}/usr/local/bin/wxmap ]"
cat ${stderrF}
}
test_install_predict() {
stdoutF=${SHUNIT_TMPDIR}/stdout
stderrF=${SHUNIT_TMPDIR}/stderr
installPath=${SHUNIT_TMPDIR}/setup/predict-root
tarfile=${SHUNIT_TMPDIR}/setup/download-predict.tgz
url='https://www.qsl.net/kd2bd/predict-2.2.7.tar.gz'
source ${unit}
mkdir -p $(dirname ${tarfile})
mkdir -p ${installPath}
install_predict "${url}" "${installPath}" "${tarfile}" >${stdoutF} 2>${stderrF}
rtrn=$?
assertTrue "expected 0 exit status" $?
assertNull "unexpected error" "`cat $stderrF`"
}
. shunit2