#!/usr/local/plan9/bin/rc path=(. ./bin $PLAN9/bin /bin/ /usr/bin) uri = `{echo -n $REQUEST_URI | sed 's/\?.*//; s/[^a-zA-Z0-9_+\-\/]//g'} ifs='/' { args = `{echo -n $uri} } cd .. # default config site=$SERVER_NAME sitedir=sites/$site headers=inc/headers.tpl body=index siteTitle='' siteSubTitle='' title='' template=_default sidebar=sidebar # Title fn gentitle { echo '

' ^ $"siteTitle ^ '' ^ $"siteSubTitle ^ '

' } dirfilter = '/\/./d; /\/_[^\/]*$/d; s,^\./,,; s,\.md$,,;' # Sidebar fn menu { ls -F $1 | sed $dirfilter | awk -F/ ' BEGIN { print "" } /^([a-zA-Z0-9+_\-]+[\/*]?)+$/ && $NF != "index" { isdir = match($0, "/$") sub("[*/]$", "") bname = $0 sub("^(.*/)?([0-9]+_)?", "", bname) gsub("_", " ", bname) if(isdir) { bname = bname "/" path = $0 "/" } if(index(ENVIRON["REQUEST_URI"], "/" path) == 1) { if(isdir) { print "
  • » " bname "" system("rc -c ''menu " path "''") } else { print "
  • » " bname "" } } else print "
  • › " bname "" print "
  • " }' } fn gensidebar { @{ cd $sitedir menu . } } fn sortedBlogPostList { # the /./ is added so we can sort -t. and order only the file name ls $*^'/./' | grep '[0-9]+.*\.md$'| sort -r -t. +1 } # Body fn genbody { if ( test -f $body.md ) markdown.pl < $body.md if not if ( test -f $body.tpl ) template.awk $body.tpl | rc if not if(~ $body */index && ~ $#blogDirs 0) { echo '

    ' `{basename `{basename -d $body}}'

    ' echo '' } if not template.awk inc/404.tpl | rc # Technically wrong. Will spit out blog entries after 404 for /blog/foo, for instance. if(! ~ $#blogDirs 0) { if ( ! ~ $blogTitle '' ) echo '

    '$"blogTitle'

    ' for ( f in `{ sortedBlogPostList $blogDirs } ) { title=`{basename $f | sed 's/^[0-9\-]*_(.*)\.md$/\1/; s/_/ /g' } du=`{ls -l $f} echo '##' $title '*('By $du(4) Last mod: $du(7 8 9) ')*' cat $f echo } | markdown.pl } } . etc/initrc if (! ~ $args '') { title=$args($#args) title=`{echo $title | sed 's/_/ /g' } body=$uri } fpath=$sitedir for ( i in '' $args ) { fpath = $fpath/$i if ( test -f $fpath/_config ) . $fpath/_config } template=$sitedir/$template.tpl echo body: $body; echo body: $sitedir/$body; ls $sitedir/$body body=$sitedir/$body if (! ~ $#sidebar 0) sidebar=tpl/_inc/$sidebar.tpl if (test -d $body) body=$body/index cat $headers $template | template.awk | rc