diff --git a/rivet b/rivet index 97759a0..278e3cd 100755 --- a/rivet +++ b/rivet @@ -6,36 +6,21 @@ unset SKIP_HEADER unset SKIP_LIST unset VERBOSE unset PRINT_HELP +unset SKIP_SITEMAP usage() { - printf "Usage: rivet [-o destdir] [-hovelf] srcdir\n" + printf "Usage: rivet [-o destdir] [-hovelf] srcdir domain\n" printf "\t-h: prints this message\n" printf "\t-o [destdir]: specifies the output direcotory to be [destdir]\n" printf "\t-v: makes the script verbose\n" printf "\t-e: skips prepending _header.html to .html files\n" printf "\t-f: skips appending _footer.html to .html files\n" printf "\t-l: skips the generation of .html file list\n" + printf "\t-s: skips sitemap.xml creation\n" + printf "\t-u: makes all references to the url 'http' instead of 'https'\n" exit 2 } -apply_header() { - tmpfile="tmpheadfile.tmp" - cp "$1" "$tmpfile" - sed "/
/r $headerfile" "$tmpfile" > "$1" - rm -f "$tmpfile" -} - -apply_footer() { - tmpfoot="tmpfooter.tmp" - tmpfile="tmpfootfile.tmp" - cp "$footerfile" "$tmpfoot" - sed -i '1s/^/' >> "$tmpfoot" - cp "$1" "$tmpfile" - sed "/<\/body/r $tmpfoot" "$tmpfile" > "$1" - rm -f "$tmpfile" "$tmpfoot" -} - convert() { tmpfile="tmpconvfile.tmp" infile="$1" @@ -53,6 +38,7 @@ if ! command -v lowdown > /dev/null; then fi destdir='dst' +prefix='https' # Get arguments using getopts # rivet [src] [-vhelf] [-o dir] # -o [dir]: set the destination directory, defaults to "dst" @@ -61,24 +47,40 @@ destdir='dst' # -e: skip prepend header # -l: skip article list # -f: skip append footer -while getopts 'o:vhelf' c +# -s: skip sitemap creation +while getopts 'o:vhelfsu' c do case "$c" in - o) destdir=$OPTARG ;; + o) destdir=${OPTARG%%\/} ;; v) VERBOSE=true ;; h) PRINT_HELP=true ;; e) SKIP_HEADER=true ;; l) SKIP_LIST=true ;; f) SKIP_FOOTER=true ;; + s) SKIP_SITEMAP=true ;; + u) prefix='http' ;; *) ;; esac done shift $((OPTIND - 1)) -srcdir="$(basename "$1")" +if ! [ "$1" ] || ! [ "$2" ]; then + echo "Not enough arguments" + usage +fi + +src="$1" +srcdir=${src%%\/} +unset src + +# Remove any junk from the domain eg. [https://]domain.com[/] +url="$(echo "$2" | + sed -e 's/^https*:\/\///' | + sed -e 's/\/$//' | + sed -e 's/[]\/$*.^[]/\\&/g')" + headerfile=$srcdir/_header.html footerfile=$srcdir/_footer.html - if [ "$PRINT_HELP" ]; then usage fi @@ -101,19 +103,70 @@ while IFS="" read -r file; do convert "$file" done -# Prepend header +# Prepare the header if ! [ "$SKIP_HEADER" ]; then find "$destdir" -name "*.html" | while IFS="" read -r file; do - apply_header "$file" + sed -i "//r $headerfile" "$file" done fi -# Append footer +# Prepate the footer if ! [ "$SKIP_FOOTER" ]; then find "$destdir" -name "*.html" | while IFS="" read -r file; do - apply_footer "$file" + sed -i "/