After creating wikis several times and wishing it was easier, I decided I should just write a script, so here it is:

#newwiki.sh - Script to create a new wiki instance.
#v-0.75
#Created by Matt Lorimer matt.lorimer@usu.edu
#Last edited on 04-07-2005

#Function to display available options you can pass to this script
function ShowOpts
{
        if [ $# -lt 1 ]
        then
        {
                echo "newwiki.sh WikiName [-f] [-l] [-u] [-g] [-p] [-s] [-h] [--help]"
                echo "   WikiName is the name of the wiki you are creating"
                echo "   -f --farm              Indicates this is part of a wiki farm (some"
                echo "                  files are not copied) - default value is false"
                echo "   -l --location  Location you would like you wiki data stored"
                echo "                  in - default value is current directory"
                echo "   -u                     User Apache runs under - default value is apache"
                echo "   -g                     Group Apache runs under - default value is apache"
                echo "   -p --prefix            Prefix you used when installing moin - default"
                echo "                  value is /usr (same as installer)"
                echo "   -s                     Share directory for moin installation - default"
                echo "                  value is \$PREFIX/share/moin (same as installer)"
                echo "   -q --quiet             Supress all output except errors"
                echo "   -v --verbose           Display information on progress"
                echo "   -h --help              Display this information"
                exit 1
        }
        fi
}

#function that actually creates the wiki
function CreateWiki
{
        #create the directory for this instance
        mkdir -p $WIKILOCATION/$INSTANCE

        if [ $VERBOSE = true ]
        then
                echo "Copying Share data to $WIKILOCATION/$INSTANCE/ ...."
        fi

        # Copy template data directory
        cp -r $SHARE/data $WIKILOCATION/$INSTANCE/

        if [ $FARM = true ]
        then
                if [ $VERBOSE = true ]
                then
                        echo "Copying default wikiconfig to $WIKILOCATION/$INSTANCE.py..."
                fi

                cp $SHARE/config/wikiconfig.py $WIKILOCATION/$INSTANCE.py

                if [ $VERBOSE = true ]
                then
                        echo "Setting permissions on $WIKILOCATION/$INSTANCE.py..."
                fi

                # Set permissions correctly on this file
                chown $USER:$GROUP $WIKILOCATION/$INSTANCE.py
                chmod -R ug+rwX $WIKILOCATION/$INSTANCE
                chmod -R o-rwx $WIKILOCATION/$INSTANCE
        else
                if [ $VERBOSE = true ]
                then
                        echo "Copying underlay directory and wikiconfig.py file to $WIKILOCATION/$INSTANCE/ ..."
                fi

                # Copy underlay data directory -- Not necessary for additional wiki's with one install
                cp -r $SHARE/underlay $WIKILOCATION/$INSTANCE/

                # Copy wiki configuration sample file
                cp $SHARE/config/wikiconfig.py $WIKILOCATION/$INSTANCE
        fi

        if [ $VERBOSE = true ]
        then
                echo "Fixing Permissions on $WIKILOCATION/$INSTANCE/ ..."
        fi

        # Fix any ownership problems
        chown -R $USER.$GROUP $WIKILOCATION/$INSTANCE

        # Make apache user and group have read and write permissions and execute permissions where necessary
        chmod -R ug+rwX $WIKILOCATION/$INSTANCE

        # Nobody else needs to do anything with the files.
        chmod -R o-rwx $WIKILOCATION/$INSTANCE

        if [ $QUIET = false ]
        then
                echo "$INSTANCE created successfully.  You must edit your apache config file accordingly."
                if [ $FARM = true ]
                then
                        echo "You must also edit $WIKILOCATION/$INSTANCE.py"
                        echo "and your $WIKILOCATION/farmconfig.py file"
                else
                        echo "You must also edit $WIKILOCATION/$INSTANCE/wikiconfig.py"
                fi
        fi
}

#Default values for the script

#Weather this is being added to a wiki farm or not
FARM=false

# Prefix you used when installing moinmoin
PREFIX=/usr

# If you didn't change this, this is correct.
SHARE=$PREFIX/share/moin

# Where your wiki data will be stored.
WIKILOCATION="./"

# User and group apache runs under
USER=apache
GROUP=apache

#Set quiet and verbose to both be off by default
QUIET=false
VERBOSE=false

#Time to parse out the
TEMP=`getopt -o fhvql:u:g:p:s: -l help,farm,quiet,verbose,prefix:,location: -- "$@"`

#Make sure they didn't pass any invalid arguments to the script
if [ $? != 0 ]
then
        #if they did, then show them what the options are and quit with an error code of 1
        ShowOpts
        exit 1
fi

# Note the quotes around `$TEMP': they are essential!
eval set -- "$TEMP"

while true ; do
        case "$1" in
                -h|--help) ShowOpts ; shift ;;
                -q|--quiet) QUIET=true ; shift ;;
                -v|--verbose) VERBOSE=true ; shift ;;
                -f|--farm) FARM=true ; shift ;;
                -l|--location) WIKILOCATION=$2 ; shift 2 ;;
                -u) USER=$2 ; shift 2 ;;
                -g) GROUP=$2 ; shift 2 ;;
                -p|--prefix) PREFIX=$2 ; shift 2 ;;
                -s) SHARE=$2 ; shift 2 ;;
                --) shift ; break ;;
                *) echo "Internal error!" ; exit 1 ;;
        esac
done

if [ $# -ne 1 ]
then
        echo "You specified $# values.  The command must only have one value"
        ShowOpts
        exit 1
fi

INSTANCE=$1

CreateWiki

Matt Lorimer

We could add this after the install script supplied. :-)

See also ../MakeWiki.

MoinMoin: ScriptMarket/WikiCreationScript (last edited 2007-10-29 19:13:04 by localhost)