version 0.3
fixes: - fixed the mess of options and general inconsistencies between program man page and help message - fixed some cases where rivet should fail but didn't and specified return values for all exit conditions - fixed the header system, before the header would have been added inside of <head></head> which is incorrect, browsers would fix it on the fly but still it is not correct. Now _header.html contents are put inside <header></header> at the beginning of <body> - fixed <footer> outside of <body> - some fixes in the man page additions: - added the requirement for _metadata.html, this file contains tags and html metadata that is put inside <head> - the main article is now enclosed inside <article></article> tags for better styling
This commit is contained in:
parent
5ac9e2ae5f
commit
280d0946db
2
makefile
2
makefile
@ -1,4 +1,4 @@
|
||||
VERSION = 0.2
|
||||
VERSION = 0.3
|
||||
PREFIX = /usr/local
|
||||
MANPREFIX = ${PREFIX}/share/man
|
||||
|
||||
|
22
rivet.1
22
rivet.1
@ -5,10 +5,12 @@ rivet \- simple static site generator
|
||||
|
||||
.SH SYNOPSIS
|
||||
.SY rivet
|
||||
.OP \-vhelfsu
|
||||
.OP \-hvelfsurdt
|
||||
.OP \-o destdir
|
||||
.OP \-p string
|
||||
.I srcdir/
|
||||
.OP \-m number
|
||||
.OP \-n string
|
||||
.I srcdir
|
||||
.I domain
|
||||
.YS
|
||||
|
||||
@ -16,7 +18,7 @@ rivet \- simple static site generator
|
||||
.PP
|
||||
Rivet is a POSIX shell script that relies on
|
||||
.BR lowdown(1)
|
||||
to convert markdown ( refer to
|
||||
to convert markdown (refer to
|
||||
.BR lowdown(5)
|
||||
for more info on the dialect of markdown used and metadata) files to html and
|
||||
build an output directory which can be uploaded to an http server.
|
||||
@ -48,7 +50,7 @@ Set the title of the atom feed to
|
||||
.IP "\-d string"
|
||||
Set the description of the atom feed to
|
||||
.I string
|
||||
.IP "\-n number"
|
||||
.IP "\-m number"
|
||||
Set the maximum number of elements in the atom feed to
|
||||
.I number
|
||||
setting it to '0' includes all files
|
||||
@ -62,6 +64,9 @@ Disables the application of the user-supplied header in
|
||||
.IP \-f
|
||||
Disables the application of the user-supplied footer in
|
||||
.I _footer.html
|
||||
.IP \-t
|
||||
Disables the insertion of the user-supplied metadata in
|
||||
.I _metadata.html
|
||||
.IP \-l
|
||||
Disables the generation of the "Pages" section in index.html
|
||||
.IP \-s
|
||||
@ -95,6 +100,7 @@ src/
|
||||
- index.md
|
||||
- _header.html
|
||||
- _footer.html
|
||||
- _metadata.html
|
||||
.EE
|
||||
|
||||
.PP
|
||||
@ -110,6 +116,8 @@ contains
|
||||
.EX
|
||||
<p> Header </p>
|
||||
.EE
|
||||
.I _metadata.html
|
||||
can be empty
|
||||
|
||||
.PP
|
||||
Note that since the contents of
|
||||
@ -119,6 +127,12 @@ and
|
||||
will be placed inside the correct tags, the files themselves do not need to
|
||||
contain <header> and <footer> tags (the script removes them)
|
||||
|
||||
.PP
|
||||
The contents of
|
||||
.I _metadata.html
|
||||
are placed inside the <head> tags, so it can contain stylesheets, icons and
|
||||
other valid entries for the head of an html document
|
||||
|
||||
.PP
|
||||
To generate the site from the folder run the command
|
||||
.EX
|
||||
|
75
rivet.sh
75
rivet.sh
@ -23,6 +23,7 @@
|
||||
set -e
|
||||
unset SKIP_FOOTER
|
||||
unset SKIP_HEADER
|
||||
unset SKIP_META
|
||||
unset SKIP_LIST
|
||||
unset VERBOSE
|
||||
unset PRINT_HELP
|
||||
@ -30,7 +31,7 @@ unset SKIP_SITEMAP
|
||||
unset SKIP_FEED
|
||||
|
||||
usage() {
|
||||
printf "Usage: rivet [-hvelfsu] [-p string] [-o destdir] srcdir domain\n"
|
||||
printf "Usage: rivet [-hvelfsurdt] [-p string] [-o destdir] [-m number] [-n string] srcdir domain\n"
|
||||
printf "\t-h: prints this message\n"
|
||||
printf "\t-o [destdir]: specifies the output direcotory to be [destdir]\n"
|
||||
printf "\t-p [string]: Rename the \"Pages\" section to [string]\n"
|
||||
@ -40,11 +41,12 @@ usage() {
|
||||
0 to include all files\n"
|
||||
printf "\t-v: Makes the script verbose\n"
|
||||
printf "\t-e: Do not prepend _header.html to .html files\n"
|
||||
printf "\t-f: Do not prepend _footer.html to .html files\n"
|
||||
printf "\t-l: Do not generate \"Pages\" section in index.html\n"
|
||||
printf "\t-f: Do not prepend _footer.html to .html files\n"
|
||||
printf "\t-s: Do not generate sitemap.xml\n"
|
||||
printf "\t-r: Do not generate an atom feed\n"
|
||||
printf "\t-u: Makes all references to the url 'http' instead of 'https'\n"
|
||||
printf "\t-r: Do not generate an atom feed\n"
|
||||
printf "\t-t: Do not insert contents of _metadata.html"
|
||||
exit 2
|
||||
}
|
||||
|
||||
@ -55,7 +57,8 @@ convert() {
|
||||
tmpfile="tmpconvfile.tmp"
|
||||
outfile="${infile%md}html"
|
||||
cp "$infile" "$tmpfile"
|
||||
lowdown -s -Thtml -o "$outfile" "$tmpfile"
|
||||
lowdown --html-no-skiphtml --html-no-escapehtml -s -Thtml \
|
||||
-o "$outfile" "$tmpfile"
|
||||
rm -f "$tmpfile" "$infile"
|
||||
fi
|
||||
# TODO: convert links to .md to .html
|
||||
@ -64,7 +67,7 @@ convert() {
|
||||
# Check dependencies
|
||||
if ! command -v lowdown > /dev/null; then
|
||||
echo "lowdown is not installed"
|
||||
exit
|
||||
exit 1
|
||||
fi
|
||||
|
||||
destdir='dst'
|
||||
@ -73,7 +76,7 @@ linksec='Pages'
|
||||
blog_title='Atom feed'
|
||||
blog_desc=''
|
||||
blog_nmax='0'
|
||||
while getopts 'o:vhelfsrup:n:d:m:' c
|
||||
while getopts 'o:vhelfsrup:n:d:m:t' c
|
||||
do
|
||||
case "$c" in
|
||||
o) destdir=${OPTARG%%\/} ;;
|
||||
@ -89,6 +92,7 @@ do
|
||||
n) blog_title="$OPTARG" ;;
|
||||
d) blog_desc="$OPTARG" ;;
|
||||
m) blog_nmax="$OPTARG" ;;
|
||||
t) SKIP_META=true ;;
|
||||
*) ;;
|
||||
esac
|
||||
done
|
||||
@ -103,6 +107,7 @@ srcdir=${src%%\/}
|
||||
unset src
|
||||
headerfile=$srcdir/_header.html
|
||||
footerfile=$srcdir/_footer.html
|
||||
metafile=$srcdir/_metadata.html
|
||||
objlist=objlist.tmp
|
||||
objdate=objdate.tmp
|
||||
|
||||
@ -135,6 +140,7 @@ url="$prefix"'://'"$domain"
|
||||
|
||||
if [ "$PRINT_HELP" ]; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
if [ "$VERBOSE" ]; then
|
||||
set -x
|
||||
@ -143,6 +149,7 @@ fi
|
||||
if ! [ -d "$srcdir" ]; then
|
||||
echo "Error: missing source direcotry"
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm -rf "$destdir"
|
||||
@ -159,7 +166,7 @@ while IFS="" read -r file; do
|
||||
done < "$objlist"
|
||||
sed -i -e "s,^\/*[^\/]*\/,$destdir/," "$objlist"
|
||||
|
||||
# Convert markdown files
|
||||
# Convert convertible files
|
||||
while IFS="" read -r file; do
|
||||
convert "$file"
|
||||
done < "$objlist"
|
||||
@ -172,25 +179,13 @@ linklist=linklist.tmp
|
||||
cp -f "$objlist" "$linklist"
|
||||
sed -i -e "s/^$destdir//" -e "s/^/$prefix:\/\/$domain/" "$linklist"
|
||||
|
||||
# Prepare the header
|
||||
if ! [ "$SKIP_HEADER" ]; then
|
||||
# Insert metadata into <head>
|
||||
if ! [ "$SKIP_META" ]; then
|
||||
find "$destdir" -name "*.html" |
|
||||
while IFS="" read -r file; do
|
||||
sed -i "/<head>/r $headerfile" "$file"
|
||||
sed -i "/<head>/r $metafile" "$file"
|
||||
done
|
||||
fi
|
||||
# Prepate the footer
|
||||
if ! [ "$SKIP_FOOTER" ]; then
|
||||
tmpfoot="tmpfootfile.tmp"
|
||||
cp "$footerfile" "$tmpfoot"
|
||||
sed -i '1s/^/<footer>/' "$tmpfoot"
|
||||
echo '</footer>' >> "$tmpfoot"
|
||||
find "$destdir" -name "*.html" |
|
||||
while IFS="" read -r file; do
|
||||
sed -i "/<\/body>/r $tmpfoot" "$file"
|
||||
done
|
||||
rm -f "$tmpfoot"
|
||||
fi
|
||||
|
||||
# Prepare index file list
|
||||
if ! [ "$SKIP_LIST" ]; then
|
||||
@ -221,6 +216,40 @@ EOF
|
||||
rm -f "$tmpfile"
|
||||
fi
|
||||
|
||||
# enclose article inside <article></article>
|
||||
find "$destdir" -name "*.html" |
|
||||
while IFS="" read -r file; do
|
||||
sed -i -e '/<body>/a <article>' -e '/<\/body>/i </article>' "$file"
|
||||
done
|
||||
|
||||
# Prepate the header
|
||||
if ! [ "$SKIP_HEADER" ]; then
|
||||
tmphead="tmpheadfile.tmp"
|
||||
cp "$headerfile" "$tmphead"
|
||||
sed -i '1s/^/<header>/' "$tmphead"
|
||||
echo '</header>' >> "$tmphead"
|
||||
find "$destdir" -name "*.html" |
|
||||
while IFS="" read -r file; do
|
||||
sed -i "/<body>/r $tmphead" "$file"
|
||||
done
|
||||
rm -f "$tmphead"
|
||||
fi
|
||||
|
||||
# Prepare the footer
|
||||
if ! [ "$SKIP_FOOTER" ]; then
|
||||
tmpfoot="tmpfootfile.tmp"
|
||||
cp "$footerfile" "$tmpfoot"
|
||||
sed -i '1s/^/<footer>/' "$tmpfoot"
|
||||
echo '</footer>' >> "$tmpfoot"
|
||||
find "$destdir" -name "*.html" |
|
||||
while IFS="" read -r file; do
|
||||
sed -i '/<\/body>/i REPLACE' "$file"
|
||||
sed -i "/^REPLACE/r $tmpfoot" "$file"
|
||||
sed -i 's/^REPLACE//' "$file"
|
||||
done
|
||||
rm -f "$tmpfoot"
|
||||
fi
|
||||
|
||||
# Generate sitemap
|
||||
if ! [ "$SKIP_SITEMAP" ]; then
|
||||
cat << EOF >> "$destdir"/sitemap.xml
|
||||
@ -277,4 +306,4 @@ fi
|
||||
|
||||
rm -f "$objlist" "$linklist" "$objdate"
|
||||
|
||||
exit
|
||||
exit 0
|
||||
|
Loading…
Reference in New Issue
Block a user