Aquí hay un script beautify.sh
que formateará cualquier archivo en la línea de comando, usando Neovim .
Debería funcionar con cualquier formato de archivo que vim reconozca, por lo que javascript, json, c, java, etc. No es un verdadero formateador, sino más bien un buen penetrador.
Ejemplo de uso:
$ cat /tmp/it.json
{
"images": [
{
"time": 2.86091,
"transaction":
{
"status": "Complete",
"gallery_name": "gallerytest1",
}
}
}
$ cat /tmp/it.json | beautify.sh
{
"images": [
{
"time": 2.86091,
"transaction":
{
"status": "Complete",
"gallery_name": "gallerytest1",
}
}
}
beautify.sh
#!/usr/bin/env bash
function show_help()
{
ME=$(basename $0)
IT=$(CAT <<EOF
Format a file at the command line using neovim
usage: cat /some/file | $ME
$ME /some/file
)
echo "$IT"
exit
}
if [ "$1" == "help" ]
then
show_help
fi
# Determine if we're processing a file from stdin or args
if [ -p /dev/stdin ]; then
FILE=$(mktemp)
cat > $FILE
FROM_STDIN=true
else
if [ -z "$1" ]
then
show_help
fi
FILE="$*"
FROM_STDIN=false
fi
# put vim commands in a temp file to use to do the formatting
TMP_VIM_CMDS_FILE=$(mktemp)
rm -f $TMP_VIM_CMDS_FILE
echo "gg=G" > $TMP_VIM_CMDS_FILE
echo ":wq" >> $TMP_VIM_CMDS_FILE
# run neovim to do the formatting
nvim --headless --noplugin -n -u NONE -s $TMP_VIM_CMDS_FILE $FILE &> /dev/null
# show output and cleanup
rm -f $TMP_VIM_CMDS_FILE
if [ "$FROM_STDIN" == "true" ]
then
cat $FILE
rm -f $FILE
fi