ports/www/hs-gitit/files/gitit.in
Johannes 5 Joemann 7fa7c89ce0 www/hs-gitit: Restore and update to 0.15.1.1
Gitit is a wiki program written in Haskell. It uses Happstack for the
web server and pandoc for markup processing. Pages and uploaded files
are stored in a git, darcs, or mercurial repository and may be
modified either by using the VCS's command-line tools or through
the wiki's web interface. By default, pandoc's extended version of
markdown is used as a markup language, but reStructuredText, LaTeX,
HTML, DocBook, or Emacs Org-mode markup can also be used. Gitit can
be configured to display TeX math (using texmath) and highlighted
source code (using highlighting-kate).

Other features include

 * plugins: dynamically loaded page transformations written in
   Haskell (see "Network.Gitit.Interface")
 * categories
 * caching
 * Atom feeds (site-wide and per-page)
 * a library, "Network.Gitit", that makes it simple to include
   a gitit wiki in any happstack application

WWW: https://github.com/jgm/gitit

PR:		273260
2023-09-24 14:57:13 -04:00

236 lines
6.8 KiB
Bash
Executable file

#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: gitit
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# gitit_enable (bool): Set to NO by default.
# Set it to YES to enable gitit.
# gitit_cfg (str): Set this to the list of all gitit instance
# names, if you want to run more than one.
# If set, then the gitit_* variables are used as
# defaults for the corresponding instance
# specific variables gitit_<instance>_*.
# gitit_chdir (path): Directory in which to start gitit.
# gitit_dir (path): Directory in which to start gitit. When set and
# when multiple gitit instances are used via
# gitit_cfg, then their default gitit_..._chdir
# is $gitit_dir/<instance>.
# gitit_supervise (bool):
# Whether daemon process should restart
# gitit on exit. (Might cause looping restarts!)
# gitit_runuser (user): User id that runs this gitit instance.
# gitit_config (path): Config file (possibly relative to gitit_chdir).
# gitit_port (number): TCP port number to listen for HTTP requests.
# gitit_flags (str): Defaults to "+RTS -I0 -RTS". That avoids CPU
# usage by ghc's idle garbage collector, but
# only if the gitit port was built using
# CONFIGURE_ARGS+= "--ghc-option=-rtsopts".
# gitit_locale (str): UTF-8 required!
# gitit_timezone (str): gitit 0.11.1 requires UTC
#
. /etc/rc.subr
name=gitit
desc="run gitit Wiki webserver process(es)"
rcvar=gitit_enable
load_rc_config $name
: ${gitit_enable:=NO}
: ${gitit_program=%%PREFIX%%/bin/gitit}
: ${gitit_pidfile=/var/run/${name}.pid}
: ${gitit_dir=/var/gitit}
: ${gitit_supervise=NO}
: ${gitit_runuser=gitit}
: ${gitit_config=${name}.conf}
: ${gitit_port=5001}
: ${gitit_flags="+RTS -I0 -RTS"}
: ${gitit_locale=en_US.UTF-8}
: ${gitit_timezone=UTC}
start_cmd="gitit_start $*"
stop_cmd="gitit_stop $*"
restart_cmd="gitit_restart $*"
status_cmd="gitit_status $*"
cmd=$1
gitit_setdefaults()
{
[ -n "${gitit_cfg}" ] || return
eval gitit_enable_default=\$${name}_enable
#eval gitit_chdir_default=\$${name}_chdir
eval gitit_supervise_default=\$${name}_supervise
eval gitit_runuser_default=\$${name}_runuser
eval gitit_config_default=\$${name}_config
eval gitit_port_default=\$${name}_port
eval gitit_flags_default=\$${name}_flags
eval gitit_locale_default=\$${name}_locale
eval gitit_timezone_default=\$${name}_timezone
}
gitit_setinstancevars()
{
local instance gitit_supervise_instance gitit_config_instance gitit_runuser_instance gitit_port_instance gitit_flags_instance gitit_locale_instance gitit_timezone_instance
instance=$1
eval gitit_enable_instance=\$${name}_${instance}_enable
[ -z "${gitit_enable_instance}" ] || gitit_enable="${gitit_enable_instance}"
[ -n "${gitit_enable_instance}" ] || gitit_enable="${gitit_enable_default}"
eval gitit_chdir=\$${name}_${instance}_chdir
[ -n "${gitit_chdir}" ] || [ -z "${gitit_dir} " ] || gitit_chdir="${gitit_dir}/${instance}"
eval gitit_supervise_instance=\$${name}_${instance}_supervise
[ -z "${gitit_supervise_instance}" ] || gitit_supervise="${gitit_supervise_instance}"
[ -n "${gitit_supervise_instance}" ] || gitit_supervise="${gitit_supervise_default}"
eval gitit_runuser_instance=\$${name}_${instance}_runuser
[ -z "${gitit_runuser_instance}" ] || gitit_runuser="${gitit_runuser_instance}"
[ -n "${gitit_runuser_instance}" ] || gitit_runuser="${gitit_runuser_default}"
eval gitit_config_instance=\$${name}_${instance}_config
[ -z "${gitit_config_instance}" ] || gitit_config="${gitit_config_instance}"
[ -n "${gitit_config_instance}" ] || gitit_config="${gitit_config_default}"
eval gitit_port_instance=\$${name}_${instance}_port
[ -z "${gitit_port_instance}" ] || gitit_port="${gitit_port_instance}"
[ -n "${gitit_port_instance}" ] || gitit_port="${gitit_port_default}"
eval gitit_flags_instance=\$${name}_${instance}_flags
[ -z "${gitit_flags_instance}" ] || gitit_flags="${gitit_flags_instance}"
[ -n "${gitit_flags_instance}" ] || gitit_flags="${gitit_flags_default}"
eval gitit_locale_instance=\$${name}_${instance}_locale
[ -z "${gitit_locale_instance}" ] || gitit_locale="${gitit_locale_instance}"
[ -n "${gitit_locale_instance}" ] || gitit_locale="${gitit_locale_default}"
eval gitit_timezone_instance=\$${name}_${instance}_timezone
[ -z "${gitit_timezone_instance}" ] || gitit_timezone="${gitit_timezone_instance}"
gitit_pidfile=/var/run/${name}-${instance}.pid
pidfile=`if checkyesno gitit_supervise ; then echo /var/run/${name}-${instance}-daemon.pid ; else echo ${gitit_pidfile} ; fi`
}
gitit_runonecmd()
{
local real_gitit_program
command_args=
[ -z "$gitit_config" ] || command_args="$command_args -f $gitit_config"
[ -z "$gitit_port" ] || command_args="$command_args -p $gitit_port"
[ -z "$gitit_flags" ] || command_args="$command_args $gitit_flags"
[ -z "$gitit_locale" ] || export LANG=$gitit_locale
[ -z "$gitit_locale" ] || export LC_ALL=$gitit_locale
[ -z "$gitit_timezone" ] || export TZ=$gitit_timezone
daemonflags=
if checkyesno gitit_supervise
then
daemonflags="-r -P $pidfile "
fi
daemonflags="$daemonflags-p $gitit_pidfile"
command=/usr/sbin/daemon
command_args="-f $daemonflags -u $gitit_runuser $gitit_program $command_args"
real_gitit_program=${gitit_program}
gitit_program=${command}
gitit_flags=
rc_flags=
run_rc_command "${cmd}"
case ${cmd} in
*start)
# make pidfile readable for $gitit_runuser
chgrp $gitit_runuser $gitit_pidfile && \
chmod 640 $gitit_pidfile
;;
esac
gitit_program=${real_gitit_program}
unset LANG LC_ALL
}
gitit_cmd()
{
local instance prefixchar runinstances i argi
if [ -z "${gitit_cfg}" ]
then
gitit_pidfile=/var/run/${name}.pid
pidfile=`if checkyesno gitit_supervise ; then echo /var/run/${name}-daemon.pid ; else echo ${gitit_pidfile} ; fi`
gitit_runonecmd
else
case $cmd in
*restart)
prefixchar="-+"
;;
*start)
prefixchar="+"
;;
*stop)
prefixchar="-"
;;
*status)
prefixchar="?"
;;
esac
# rc_extra_args is always empty at this point, so we
# extract additional parameters from $*. Positional
# parameters have to be passed down to this function.
runinstances=
i=2
if [ $# -ge 2 ]
then
while [ $i -le $# ]
do
eval argi=\$$i
if echo "${gitit_cfg}" | grep -q -w "${argi}"
then
runinstances="${runinstances} ${argi}"
else
echo "Skipping ${argi}"' - not in ${gitit_cfg}.'
fi
i=$(($i + 1))
done
else
runinstances=${gitit_cfg}
fi
for instance in ${runinstances}
do
echo -n "${prefixchar}${instance}: "
gitit_setinstancevars ${instance}
gitit_runonecmd
done
fi
}
gitit_start()
{
unset start_cmd
gitit_setdefaults
gitit_cmd $*
}
gitit_stop()
{
unset stop_cmd
gitit_setdefaults
gitit_cmd $*
}
gitit_restart()
{
unset restart_cmd
unset stop_cmd
unset start_cmd
gitit_setdefaults
cmd=stop
gitit_cmd $*
cmd=start
gitit_cmd $*
}
gitit_status()
{
unset status_cmd
gitit_setdefaults
gitit_cmd $*
}
run_rc_command "$1"