#!/usr/bin/perl
#
# Setup file for ikiwiki.
# 
# Passing this to ikiwiki --setup will make ikiwiki generate
# wrappers and build the wiki.
# 
# Remember to re-run ikiwiki --setup any time you edit this file.

require IkiWiki::Setup::Standard;

my $root = $ENV{ROOT};

my $srcdir;
my $destdir;
my $cgi_wrapper = '';
my $git_wrapper = '';
my $gitorigin_branch = '';

if (defined $ENV{WEB_SERVER})
{
    $srcdir = $root.'/hurd-web';
    $destdir = $root.'/public_html';
    $cgi_wrapper = $root.'/hurd-web.cgi';
    $git_wrapper = $root.'/hurd-web.update';
    $gitorigin_branch = 'origin';
}
else
{
    $srcdir = $root;
    $destdir = $ENV{DESTDIR} || $srcdir.'.rendered';
}

IkiWiki::Setup::Standard->import({
	# name of the wiki
	wikiname => 'GNU Hurd',
	# contact email for wiki
	adminemail => 'tschwinge@gnu.org',
	# users who are wiki admins
	adminuser => [qw{tschwinge}],
	# users who are banned from the wiki
	banned_users => [qw{AlbertF bernhart ColetCris flamberian Jack_Dark
			    jasclaine NateNash
			    http://calvinyoung.myopenid.com/
			    http://heaton.myopenid.com/
			    http://hilarybunton.myopenid.com/}],
	# where the source of the wiki is located
	srcdir => $srcdir,
	# where to build the wiki
	destdir => $destdir,
	# base url to the wiki
	url => 'http://www.bddebian.com:8888/~hurd-web',
	# url to the ikiwiki.cgi
	cgiurl => 'http://www.bddebian.com:8888/cgi-bin/hurd-web-ikiwiki.cgi',
	# filename of cgi wrapper to generate
	cgi_wrapper => $cgi_wrapper,
	# mode for cgi_wrapper (can safely be made suid)
	cgi_wrappermode => '06755',
	# rcs backend to use
	rcs => 'git',
	# plugins to add to the default configuration
	add_plugins => [qw{goodstuff
			   cutpaste editdiff edittemplate favicon getsource
			     html rename repolist search sidebar table txt
			   field getfield ymlfront
			   copyright license texinfo}],
	# plugins to disable
	disable_plugins => [],
	# additional directory to search for template files
	templatedir => $srcdir.'/.templates',
	# base wiki source location
	#underlaydir => '/usr/share/ikiwiki/basewiki',
	# display verbose messages?
	verbose => 1,
	# log to syslog?
	syslog => 0,
	# create output files named page/index.html?
	usedirs => 1,
	# use '!'-prefixed preprocessor directives?
	prefix_directives => 1,
	# use page/index.mdwn source files
	indexpages => 0,
	# enable Discussion pages?
	discussion => 1,
	# name of Discussion pages
	discussionpage => 'Discussion',
	# generate HTML5? (experimental)
	html5 => 0,
	# only send cookies over SSL connections?
	sslcookie => 0,
	# extension to use for new pages
	default_pageext => 'mdwn',
	# extension to use for html files
	htmlext => 'html',
	# strftime format string to display date
	timeformat => '%F %T %Z',
	# UTF-8 locale to use
	locale => 'C',
	# put user pages below specified page
	userdir => 'user',
	# how many backlinks to show before hiding excess (0 to show all)
	numbacklinks => 10,
	# attempt to hardlink source files? (optimisation for large files)
	hardlink => 1,
	# force ikiwiki to use a particular umask
	#umask => 022,
	# group for wrappers to run in
	#wrappergroup => 'ikiwiki',
	# extra library and plugin directory
	libdir => $srcdir.'/.library',
	# environment variables
	ENV => {},
	# regexp of normally excluded files to include
	#include => '^\\.htaccess$',
	# regexp of files that should be skipped
	#exclude => '^(*\\.private|Makefile)$',
	# specifies the characters that are allowed in source filenames
	wiki_file_chars => '-[:alnum:]+/.:_',
	# allow symlinks in the path leading to the srcdir (potentially insecure)
	#allow_symlinks_before_srcdir => 0,

	######################################################################
	# core plugins
	#   (editpage, git, htmlscrubber, inline, link, meta, parentlinks)
	######################################################################

	# git plugin
	# git hook to generate
	git_wrapper => $git_wrapper,
	# shell command for git_wrapper to run, in the background
	#git_wrapper_background_command => 'git push github',
	# mode for git_wrapper (can safely be made suid)
	git_wrappermode => '0700',
	# git pre-receive hook to generate
	#git_test_receive_wrapper => '/git/wiki.git/hooks/pre-receive',
	# unix users whose commits should be checked by the pre-receive hook
	#untrusted_committers => [],
	# gitweb url to show file history ([[file]] substituted)
	historyurl => 'http://www.bddebian.com:8888/gitweb/?p=hurd-web;a=history;f=[[file]];hb=HEAD',
	# gitweb url to show a diff ([[file]], [[sha1_to]], [[sha1_from]], [[sha1_commit]], and [[sha1_parent]] substituted)
	diffurl => 'http://www.bddebian.com:8888/gitweb/?p=hurd-web;a=blobdiff;f=[[file]];h=[[sha1_to]];hp=[[sha1_from]];hb=[[sha1_commit]];hpb=[[sha1_parent]]',
	# where to pull and push changes (set to empty string to disable)
	gitorigin_branch => $gitorigin_branch,
	# branch that the wiki is stored in
	gitmaster_branch => 'master',

	# htmlscrubber plugin
	# PageSpec specifying pages not to scrub
	#htmlscrubber_skip => '!*/Discussion',

	# inline plugin
	# enable rss feeds by default?
	rss => 1,
	# enable atom feeds by default?
	atom => 1,
	# allow rss feeds to be used?
	#allowrss => 0,
	# allow atom feeds to be used?
	#allowatom => 0,
	# urls to ping (using XML-RPC) on feed update
	pingurl => [],

	######################################################################
	# auth plugins
	#   (anonok, blogspam, httpauth, lockedit, moderatedcomments,
	#    opendiscussion, openid, passwordauth, signinedit)
	######################################################################

	# anonok plugin
	# PageSpec to limit which pages anonymous users can edit
	#anonok_pagespec => '*/discussion',

	# blogspam plugin
	# PageSpec of pages to check for spam
	#blogspam_pagespec => 'postcomment(*)',
	# options to send to blogspam server
	#blogspam_options => 'blacklist=1.2.3.4,blacklist=8.7.6.5,max-links=10',
	# blogspam server XML-RPC url
	#blogspam_server => '',

	# httpauth plugin
	# url to redirect to when authentication is needed
	#cgiauthurl => 'http://example.com/wiki/auth/ikiwiki.cgi',
	# PageSpec of pages where only httpauth will be used for authentication
	#httpauth_pagespec => '!*/Discussion',

	# lockedit plugin
	# PageSpec controlling which pages are locked
	#locked_pages => '!*/Discussion',

	# moderatedcomments plugin
	# PageSpec matching users or comment locations to moderate
	#moderate_pagespec => '*',

	# openid plugin
	# url pattern of openid realm (default is cgiurl)
	#openid_realm => '',
	# url to ikiwiki cgi to use for openid authentication (default is cgiurl)
	#openid_cgiurl => '',

	# passwordauth plugin
	# a password that must be entered when signing up for an account
	#account_creation_password => 's3cr1t',
	# cost of generating a password using Authen::Passphrase::BlowfishCrypt
	#password_cost => 8,

	######################################################################
	# format plugins
	#   (creole, highlight, hnb, html, mdwn, otl, rawhtml, textile, txt)
	######################################################################

	# highlight plugin
	# types of source files to syntax highlight
	#tohighlight => '.c .h .cpp .pl .py Makefile:make',
	# location of highlight's filetypes.conf
	#filetypes_conf => '/etc/highlight/filetypes.conf',
	# location of highlight's langDefs directory
	#langdefdir => '/usr/share/highlight/langDefs',

	# mdwn plugin
	# enable multimarkdown features?
	#multimarkdown => 0,

	######################################################################
	# misc plugins
	#   (filecheck)
	######################################################################

	######################################################################
	# web plugins
	#   (404, attachment, comments, editdiff, edittemplate, getsource,
	#    google, goto, mirrorlist, remove, rename, repolist, search,
	#    theme, websetup, wmd)
	######################################################################

	# attachment plugin
	# enhanced PageSpec specifying what attachments are allowed
	#allowed_attachments => 'virusfree() and mimetype(image/*) and maxsize(50kb)',
	# virus checker program (reads STDIN, returns nonzero if virus found)
	#virus_checker => 'clamdscan -',

	# comments plugin
	# PageSpec of pages where comments are allowed
	#comments_pagespec => 'blog/* and !*/Discussion',
	# PageSpec of pages where posting new comments is not allowed
	#comments_closed_pagespec => 'blog/controversial or blog/flamewar',
	# Base name for comments, e.g. "comment_" for pages like "sandbox/comment_12"
	#comments_pagename => '',
	# Interpret directives in comments?
	#comments_allowdirectives => 0,
	# Allow anonymous commenters to set an author name?
	#comments_allowauthor => 0,
	# commit comments to the VCS
	#comments_commit => 1,

	# getsource plugin
	# Mime type for returned source.
	#getsource_mimetype => 'text/plain; charset=utf-8',

	# mirrorlist plugin
	# list of mirrors
	#mirrorlist => {},

	# repolist plugin
	# URIs of repositories containing the wiki's source
	repositories => [qw{git://git.savannah.gnu.org/hurd/web.git
			    http://git.savannah.gnu.org/r/hurd/web.git
			    git://flubber.bddebian.com/~hurd-web/hurd-web
			    http://www.bddebian.com:8888/git/hurd-web}],

	# search plugin
	# path to the omega cgi program
	#omega_cgi => '/usr/lib/cgi-bin/omega/omega',

	# theme plugin
	# name of theme to enable
	#theme => 'actiontabs',

	# websetup plugin
	# list of plugins that cannot be enabled/disabled via the web interface
	#websetup_force_plugins => [],
	# list of additional setup field keys to treat as unsafe
	#websetup_unsafe => [],
	# show unsafe settings, read-only, in web interface?
	#websetup_show_unsafe => 1,

	######################################################################
	# widget plugins
	#   (calendar, color, conditional, cutpaste, date, format, fortune,
	#    graphviz, haiku, img, linkmap, listdirectives, map, more,
	#    orphans, pagecount, pagestats, poll, polygen, postsparkline,
	#    progress, shortcut, sparkline, table, template, teximg, toc,
	#    toggle, version)
	######################################################################

	# calendar plugin
	# base of the archives hierarchy
	#archivebase => 'archives',
	# PageSpec of pages to include in the archives; used by ikiwiki-calendar command
	#archive_pagespec => 'page(posts/*) and !*/Discussion',

	# listdirectives plugin
	# directory in srcdir that contains directive descriptions
	#directive_description_dir => 'ikiwiki/directive',

	# teximg plugin
	# Should teximg use dvipng to render, or dvips and convert?
	#teximg_dvipng => '',
	# LaTeX prefix for teximg plugin
	#teximg_prefix => '\\documentclass{article}
	#\\usepackage{amsmath}
	#\\usepackage{amsfonts}
	#\\usepackage{amssymb}
	#\\pagestyle{empty}
	#\\begin{document}
	#',
	# LaTeX postfix for teximg plugin
	#teximg_postfix => '\\end{document}',

	######################################################################
	# other plugins
	#   (aggregate, autoindex, brokenlinks, camelcase, ddate, embed,
	#    favicon, field, flattr, getfield, goodstuff, htmlbalance,
	#    localstyle, pagetemplate, pingee, pinger, prettydate,
	#    recentchanges, recentchangesdiff, relativedate, rsync,
	#    sidebar, smiley, sortnaturally, tag, testpagespec, underlay,
	#    ymlfront)
	######################################################################

	# aggregate plugin
	# enable aggregation to internal pages?
	#aggregateinternal => 1,
	# allow aggregation to be triggered via the web?
	#aggregate_webtrigger => 0,

	# camelcase plugin
	# list of words to not turn into links
	#camelcase_ignore => [],

	# field plugin
	# simple registration of fields by plugin
	#field_register => {meta => 'last'},
	# allow config settings to be queried
	#field_allow_config => 0,
	# fields flagged as tag-fields
	#field_tags => {BookAuthor => '/books/authors'},

	# flattr plugin
	# userid or user name to use by default for Flattr buttons
	#flattr_userid => 'joeyh',

	# pinger plugin
	# how many seconds to try pinging before timing out
	#pinger_timeout => 15,

	# prettydate plugin
	# format to use to display date
	#prettydateformat => '%X, %B %o, %Y',

	# recentchanges plugin
	# name of the recentchanges page
	recentchangespage => 'recent_changes',
	# number of changes to track
	recentchangesnum => 100,

	# rsync plugin
	# command to run to sync updated pages
	#rsync_command => 'rsync -qa --delete . user@host:/path/to/docroot/',

	# sidebar plugin
	# show sidebar page on all pages?
	#global_sidebars => 1,

	# tag plugin
	# parent page tags are located under
	tagbase => 'tag',
	# autocreate new tag pages?
	#tag_autocreate => 1,

	# underlay plugin
	# extra underlay directories to add
	#add_underlays => '',

	# ymlfront plugin
	# delimiters of YAML data
	ymlfront_delim => [qw{--YAML-START-- --YAML-END--}],
})