vee/bin/veecat

120 lines
2.0 KiB
Bash
Executable File

#!/bin/sh
# This is a companion tool to vee that is used internally by vee; if
# you wish to write your own custom scripts to manage your posts, then
# then I suggest using this tool for extracting out the relevant bits
# you wish to use for your scripts (e.g., title (-t), date (-d), etc).
# Usage:
# echo "path/to/*.raw" | veecat [-t | -d | -a ] # I know this is funky
# preserve new lines
OLD_IFS=$IFS
IFS=
die_error()
{
echo "$1"
exit 1
}
die_cleanly()
{
exit 0
}
read_config()
{ if [ -e ./.veerc ]; then
. ./.veerc
fi
}
get_title()
{
TITLE=$(head -n 3 "$1" | tail -n 1)
echo "$TITLE"
}
get_date()
{
DATE=$(head -n 1 "$1")
echo "$DATE"
}
get_header()
{
# get line one through line 5, the entire header w/o separator
echo $(cat "$1" | head -n 5)
}
get_body()
{
# figure out how many lones file is for $(tail) command
LC=$(wc -l "$1" | awk '{print "$1"}')
BC=$(($LC-6))
$(cat "$1" | tail -n "$BC")
}
get_all()
{
cat "$1"
}
die_error()
{
echo "$1"
exit 1
}
die_cleanly()
{
exit 0
}
SHOWBODY=0
SHOWTITLE=0
SHOWDATE=0
SHOWALL=0
while getopts 'abdt' option; do
case $option in
a) SHOWALL=1
;;
b) SHOWBODY=1
;;
d) SHOWDATE=1
;;
t) SHOWTITLE=1
;;
esac
done
read_config
# if -tdb detected, do the right thing and do a SHOWALL (i.e., -tbd == -a )
if [ $SHOWTITLE -eq 1 ] && [ $SHOWDATE -eq 1 ] && [ $SHOWBODY -eq 1 ]; then
SHOWALL=1
fi
# kind of funky, but accepts the name of the .raw file via standard in
while read -r IN <&0 ; do
# make sure file exists, else just ignore line (more Unix-y this way)
if [ -e "$IN" ]; then
# assumes file is a proper *.raw , else GIGO
if [ $SHOWALL -eq 1 ]; then
echo $(get_all "$IN")
else
if [ $SHOWTITLE -eq 1 ]; then
echo $(get_title "$IN")
fi
if [ $SHOWDATE -eq 1 ]; then
echo $(get_date "$IN")
fi
if [ $SHOWBODY -eq 1 ]; then
echo $(get_body "$IN")
fi
fi
fi
done