53 lines
1018 B
Bash
Executable File
53 lines
1018 B
Bash
Executable File
#!/bin/bash
|
|
|
|
function format() {
|
|
# format file
|
|
# typstyle --format $1
|
|
|
|
if [ -z "$1" ]; then
|
|
return
|
|
fi
|
|
|
|
local wd=$(dirname $(realpath "$1"))
|
|
|
|
echo "processing file $1..."
|
|
typstyle "$2" "$1" > /dev/null
|
|
if [ $? -eq 1 ]; then
|
|
echo "failed format validation: $1"
|
|
exit 1
|
|
fi
|
|
|
|
local imports=$(rg "#import \"([a-z0-9/\-.]+\.typ)\"" -Nor '$1' "$1")
|
|
|
|
# format all included files
|
|
while IFS= read -r line; do
|
|
if [ -z "$line" ]; then
|
|
continue
|
|
fi
|
|
format "$wd/$line" "$2"
|
|
done <<< "$imports"
|
|
|
|
local includes=$(rg "#import \"([a-z0-9/\-.]+\.typ)\"" -Nor '$1' "$1")
|
|
|
|
# format all included files
|
|
while IFS= read -r line; do
|
|
if [ -z "$line" ]; then
|
|
continue
|
|
fi
|
|
format "$wd/$line" "$2"
|
|
done <<< "$includes"
|
|
}
|
|
|
|
case $1 in
|
|
"--format")
|
|
format "$2" "--inplace"
|
|
;;
|
|
"--check")
|
|
format "$2" "--check"
|
|
;;
|
|
*)
|
|
echo "unknown option: $1"
|
|
exit 1
|
|
;;
|
|
esac
|