120 lines
2.0 KiB
Plaintext
120 lines
2.0 KiB
Plaintext
|
#!/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
|