diff --git a/veilid-python/update_schema.sh b/veilid-python/update_schema.sh index 41f2366c..43db5dba 100755 --- a/veilid-python/update_schema.sh +++ b/veilid-python/update_schema.sh @@ -2,16 +2,27 @@ set -eo pipefail SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -VEILID_SERVER=$SCRIPTDIR/../target/debug/veilid-server +# If $VEILID_SERVER is set, use that, otherwise find a valid Veilid server by looking in the usual places +if [ -z "${VEILID_SERVER}" ]; then + for VEILID_SERVER_CANDIDATE in ${SCRIPTDIR}/../target/debug/veilid-server; do + echo -n "Trying Veilid server at ${VEILID_SERVER_CANDIDATE}..." + if [ -f "${VEILID_SERVER_CANDIDATE}" ]; then + echo " found!" + VEILID_SERVER="${VEILID_SERVER_CANDIDATE}" + break + else + echo " not found." + fi + done +fi -# Ensure executable exists -if [ ! -f "$VEILID_SERVER" ]; then - echo "$VEILID_SERVER does not exist. Build with cargo build." +# If $VEILID_SERVER is still not set, or if it doesn't actually exist, bail +if [[ -z "${VEILID_SERVER}" || ! -f "${VEILID_SERVER}" ]]; then + echo "No valid in-tree Veilid server was found. Go to the top level directory, run 'cargo build', then change back to this directory and run this script again." exit 1 fi # Produce schema from veilid-server -$VEILID_SERVER --emit-schema Request > $SCRIPTDIR/veilid/schema/Request.json -$VEILID_SERVER --emit-schema RecvMessage > $SCRIPTDIR/veilid/schema/RecvMessage.json - - +for SCHEMA in "Request" "RecvMessage"; do + echo -n "Updating ${SCHEMA}..." && ${VEILID_SERVER} --emit-schema ${SCHEMA} > $SCRIPTDIR/veilid/schema/${SCHEMA} && echo " done." || echo " error!" +done