diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 1a0d13c84..dd4d60c37 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -44,3 +44,10 @@ install( DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME villas ) + +install( + PROGRAMS villas-api.sh + COMPONENT bin + DESTINATION ${CMAKE_INSTALL_BINDIR} + RENAME villas-api +) diff --git a/tools/villas-api.sh b/tools/villas-api.sh new file mode 100755 index 000000000..fdaccdf87 --- /dev/null +++ b/tools/villas-api.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# Check if all required commands exist + +if ! command -v curl &> /dev/null; then + echo "curl could not be found" + exit 1 +fi + +if ! command -v jq &> /dev/null; then + echo "jq could not be found" + exit 1 +fi + +if [ $# -lt 1 ]; then + echo "usage: villas-api ACTION [REQUEST-JSON]" + exit 1 +fi + +ACTION=$1 +REQUEST=${2:-\{\}} +ID=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1) +ENDPOINT=${ENDPOINT:-http://localhost:80/api/v1} + +echo "Issuing API request: action=${ACTION}, id=${ID}, request=${REQUEST}, endpoint=${ENDPOINT}" + +curl -s -X POST --data "{ + \"action\" : \"${ACTION}\", + \"id\": \"${ID}\", + \"request\": ${REQUEST} +}" ${ENDPOINT} | jq .