mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-22 01:13:00 +02:00
Usage examples:
Run yanglint on all infix models:
ixyang check
Lint a single model:
ixyang lint infix-interfaces
Dump a tree of ietf-interfaces with all infix augments:
ixyang lint infix-interfaces ietf-interfaces -- -f tree
115 lines
1.9 KiB
Bash
Executable File
115 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
ixdir=$(readlink -f $(dirname "$0")/../)
|
|
. "$ixdir/utils/libix.sh"
|
|
|
|
resolve_host_dir
|
|
|
|
YANGLINT="$HOST_DIR/bin/yanglint"
|
|
[ -x "$YANGLINT" ] || {
|
|
echo "*** Error: yanglint is not installed" >&2
|
|
exit 1
|
|
}
|
|
|
|
yangdir="$ixdir/src/confd/yang"
|
|
|
|
check()
|
|
{
|
|
find "$yangdir" -type f -name '*infix*.yang' | while read file; do
|
|
head -n1 "$file" | grep -q "submodule" && continue
|
|
|
|
printf "%-40s " $(basename "$file")
|
|
|
|
"$YANGLINT" -p "$yangdir" -i "$file" || {
|
|
printf "%-40s FAIL\n" $(basename "$file")
|
|
continue
|
|
}
|
|
|
|
echo ok
|
|
done
|
|
}
|
|
|
|
resolve_model()
|
|
{
|
|
local model="$1"
|
|
|
|
if [ -e "$model" ]; then
|
|
file="$model"
|
|
elif [ -e "$yangdir/$model" ]; then
|
|
file="$yangdir/$model"
|
|
elif [ -e "$yangdir/$model.yang" ]; then
|
|
file="$yangdir/$model.yang"
|
|
else
|
|
file=$(find "$yangdir" -name "$model*" -print -quit)
|
|
fi
|
|
|
|
if [ -z "$file" ]; then
|
|
echo "*** Error: Found no model matching \"$model\"" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "$file"
|
|
}
|
|
|
|
lint()
|
|
{
|
|
local files=
|
|
while [ $# -gt 0 ]; do
|
|
if [ "$1" = "--" ]; then
|
|
shift
|
|
break
|
|
fi
|
|
|
|
files="$files $(resolve_model $1)"
|
|
shift
|
|
done
|
|
|
|
"$YANGLINT" -p "$yangdir" -i "$@" $files
|
|
}
|
|
|
|
yanger()
|
|
{
|
|
local model="$1"
|
|
|
|
"$ixdir/src/statd/python/yanger/yanger" \
|
|
-t "$ixdir/test/case/cli/system-output" \
|
|
"$model"
|
|
}
|
|
|
|
yangerlint()
|
|
{
|
|
local model="$1"
|
|
|
|
yanger "$model" >/tmp/ixyang-yangerlint.json || {
|
|
echo "*** Error: Failed to dump \"$model\"" >&2
|
|
exit 1
|
|
}
|
|
|
|
case "$model" in
|
|
ietf-interfaces)
|
|
lint \
|
|
ietf-interfaces \
|
|
ieee802-ethernet-interface \
|
|
infix-interfaces \
|
|
infix-ethernet-interface \
|
|
\
|
|
/tmp/ixyang-yangerlint.json \
|
|
-- -i -t data
|
|
;;
|
|
*)
|
|
echo "*** Error: yangerlint not implemented for \"$model\"" >&2
|
|
;;
|
|
esac
|
|
|
|
rm /tmp/ixyang-yangerlint.json
|
|
}
|
|
|
|
case "$1" in
|
|
check|lint|yanger|yangerlint)
|
|
"$@"
|
|
;;
|
|
*)
|
|
echo "*** Error: Unknown command \"$1\"" >&2
|
|
return 1
|
|
esac
|