blob: 79d6c887b4ebd8b029b344fe53cded2aab64f999 [file] [log] [blame]
#!/bin/sh
# Translates a DBus interface name (e.g. org.freedesktop.ModemManager.Modem) to a C++
# header name (mm-modem.h).
translate () {
local oldprefix="$1"
local ifempty="$2"
local filename="$3"
# If the name ends with '.xml', strip it.
# If the name begins with <old-prefix>, strip it.
# If the name begins with a leading dot, strip it.
filename=$(echo "$filename" | sed -e 's/\.xml$//' \
-e "s/^$oldprefix//" \
-e 's/^\.//')
# Lowercase, replace all dots with dashes.
filename=$(echo "$filename" | tr A-Z. a-z-)
# If the name is empty, replace it with ifempty.
[ -z "$filename" ] && filename="$ifempty"
filename="${filename}_server_glue.h"
echo "$filename"
}
runonetest () {
echo "'$1' '$2' '$3' -> "
local res=$(translate "$@")
echo " Got: $res"
echo " Want: $4"
if [ "$res" != "$4" ]; then
exit 1
fi
}
runtest () {
runonetest "org.foo.Bar" "quxx" "org.foo.Bar.Quzz.xml" \
"quzz_server_glue.h"
runonetest "org.foo.Bar" "quxx" "org.foo.Bar.xml" \
"quxx_server_glue.h"
runonetest "org.foo.Bar" "quxx" "baz-hax.xml" \
"baz-hax_server_glue.h"
runonetest "\(org.foo.Bar\|org.foo.Baz\)" "quxx" "org.foo.Bar.Abc.xml" \
"abc_server_glue.h"
runonetest "\(org.foo.Bar\|org.foo.Baz\)" "quxx" "org.foo.Baz.Def.xml" \
"def_server_glue.h"
echo "All OK."
}
usage () {
echo "Usage: $0 <old-prefix> <if-empty> <filename>"
echo " $0 --test"
}
if [ $# -eq 1 -a "$1" == "--test" ]; then
runtest
elif [ $# -eq 3 ]; then
translate "$@"
else
usage
exit
fi