diff options
Diffstat (limited to 'branches/0.6/src/templatepkg')
-rwxr-xr-x | branches/0.6/src/templatepkg | 959 |
1 files changed, 0 insertions, 959 deletions
diff --git a/branches/0.6/src/templatepkg b/branches/0.6/src/templatepkg deleted file mode 100755 index 048ac22..0000000 --- a/branches/0.6/src/templatepkg +++ /dev/null @@ -1,959 +0,0 @@ -#!/bin/bash -# -# templatepkg v0.3: template maintenance script from simplepkg suite -# -# feedback: rhatto at riseup.net | gpl -# -# Templatepkg is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or any later version. -# -# Templatepkg is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., 59 Temple -# Place - Suite 330, Boston, MA 02111-1307, USA -# - -COMMON="/usr/libexec/simplepkg/common.sh" -BASENAME="`basename $0`" - -if [ -f "$COMMON" ]; then - source $COMMON - eval_config $BASENAME -else - echo "error: file $COMMON found, check your $BASENAME installation" - exit 1 -fi - -function usage_summary { - - echo "options are:" - echo "" - echo " -c | --create: create a template from a jail or existing template" - echo " -u | --update: update a template from a jail" - echo " -a | --add: add files into a template" - echo " -d | --delete: delete files or folders from a template" - echo " -s | --sync: sync $TEMPLATE_FOLDER working copy" - echo " -e | --export: export $TEMPLATE_FOLDER to a svn repository" - echo " -i | --import: grab $TEMPLATE_FOLDER from a svn repository" - echo " -r | --remove: remove a template" - echo " -l | --list: list templates" - echo " -b | --batch-edit: add or edit post-installation scripts" - echo " -p | --pack: create a package from a template" - echo " -t | --template-edit: edit template package list" - echo " -h | --help: display this summary" - echo "" - -} - -function display_help { - - # display help - # usage: help [help-topic] - - local option - - if [ -z "$1" ]; then - echo "type $BASENAME --help <option> for aditional help" - usage_summary - exit - fi - - option="$1" - - if ! echo $option | grep -q -e "^-"; then - option="-`echo $option | sed -e 's/--/-/' -e 's/\(.\).*/\1/'`" - else - option="`echo $option | sed -e 's/--/-/' -e 's/\(..\).*/\1/'`" - fi - - usage_summary | grep -e "^ $option" - - echo "" - case $option in - - "-c" | "--create") - echo " $BASENAME $option <template> [jail-root|template-name]" - ;; - "-u" | "--update") - echo " $BASENAME $option <template> [jail-root]" - ;; - "-a" | "--add") - echo " $BASENAME $option <template> <file-name> [jail-root]" - echo "" - echo " file-name: the file or directory to be added" - echo " jail-root: the jail under file-name is located" - ;; - "-d" | "--delete") - echo " $BASENAME $option <template> <file-name>" - ;; - "-s" | "--sync") - echo " $BASENAME $option" - ;; - "-e" | "--export") - echo " $BASENAME $option <svn-repository>" - ;; - "-i" | "--import") - echo " $BASENAME $option <svn-repository>" - ;; - "-r" | "--remove") - echo " $BASENAME $option <template-name>" - ;; - "-l" | "--list") - echo " $BASENAME $option [template-name]" - ;; - "-b" | "--batch-edit") - echo " $BASENAME $option <template-name> <script-name>" - ;; - "-p" | "--pack") - echo " $BASENAME $option <template-name> [version] [build] [arch]" - ;; - "-t" | "--template-edit") - echo " $BASENAME $option <template-name>" - ;; - "-h" | "--help") - echo " -h | --help: display this help." - ;; - *) - echo $BASENAME: invalid help option $option - esac - - case $option in - "-c" | "-u" | "-a") - echo "" - echo " if ommited, jail-root defaults to /" - ;; - esac - - echo "" - -} - -function usage { - - echo "usage: $BASENAME <option> [<template> [arguments]]" - usage_summary - exit - -} - -function check_svn_repo { - - # check a svn repository URL - # usage: set_svn_repo <repository> - - if [ ! -z "$1" ]; then - if echo $1 | grep -q -v -e "^svn://"; then - if echo $1 | grep -q -v -e "^svn+ssh://"; then - if echo $1 | grep -q -v -e "^file://"; then - echo $BASENAME: invalid repository URL $1 - return 1 - fi - fi - fi - else - echo $BASENAME: no repository defined - return 1 - fi - -} - -function import_export_templates { - - # import from or export to $TEMPLATE_FOLDER in a svn repository - # usage: template_export <import|export> <repository> - - local templates templates_folder basedir repository mode preposition - - if [ "$?" != 0 ]; then - usage - exit 1 - elif ! use_svn; then - echo $BASENAME: simplepkg not configured to use svn - exit 1 - fi - - templates_folder="$TEMPLATE_FOLDER" - templates="`basename $TEMPLATE_FOLDER`" - basedir="`dirname $templates_folder`" - mode="$1" - repository="$2" - preposition="from" - - check_svn_repo $repository - - if [ ! -z "$2" ]; then - - if [ ! -d "$templates_folder/.svn" ]; then - - cd $basedir - - if [ "$mode" == "export" ]; then - preposition="to" - echo Exporting templates to $repository... - svn import $templates/ $repository/ -m "initial import" - if [ "$?" != "0" ]; then - echo $BASENAME: export failed - exit 1 - fi - fi - - if [ -d "templates" ]; then - mv $templates $templates.old - fi - - echo Checking out templates from $repository... - svn checkout $repository $templates - - if [ "$?" == "0" ]; then - rm -rf $templates.old - else - rm -rf $templates - mv $templates.old $templates - echo $BASENAME: $mode failed - exit 1 - fi - - else - echo "$BASENAME: $templates_folder seens to be already $mode""ed $preposition $repository" - exit 1 - fi - - fi - -} - -function template_create { - - # create a new template - - local template_base info_commit orig_template list - - if [ ! -d "`dirname $TEMPLATE_BASE`" ]; then - - echo Creating template `basename $TEMPLATE_BASE`... - - if use_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ]; then - cd `dirname $TEMPLATE_BASE` - svn mkdir `dirname $TEMPLATE_BASE` - else - mkdir -p `dirname $TEMPLATE_BASE` - fi - - else - echo $BASENAME: template `basename $TEMPLATE_BASE` already exists - exit 1 - fi - - touch $TEMPLATE_BASE.perms - touch $TEMPLATE_BASE.template - - if use_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ]; then - - cd `dirname $TEMPLATE_BASE` - - if ! svn_check $TEMPLATE_BASE.d; then - svn mkdir $TEMPLATE_BASE.d - info_commit="yes" - else - mkdir -p $TEMPLATE_BASE.d - fi - - if ! svn_check $TEMPLATE_BASE.s; then - svn mkdir $TEMPLATE_BASE.s - info_commit="yes" - else - mkdir -p $TEMPLATE_BASE.s - fi - - if ! svn_check $TEMPLATE_BASE.template; then - svn add $TEMPLATE_BASE.template - info_commit="yes" - fi - - if ! svn_check $TEMPLATE_BASE.perms; then - svn add $TEMPLATE_BASE.perms - info_commit="yes" - fi - - elif use_svn && [ -d "$TEMPLATE_FOLDER/.svn" ]; then - - mkdir $TEMPLATE_BASE.{d,s} - cd $TEMPLATE_FOLDER - svn add `basename $TEMPLATE_BASE` - info_commit="yes" - - else - mkdir $TEMPLATE_BASE.{d,s} - fi - - if [ -d "/$ROOT" ]; then - template_update - elif [ ! -z "$ROOT" ]; then - - # copy from an existing template - - if [ -d "$TEMPLATE_FOLDER/$ROOT" ]; then - orig_template="$TEMPLATE_FOLDER/$ROOT" - elif [ -d "$BASE_CONF/templates/$ROOT" ]; then - orig_template="$BASE_CONF/templates/$ROOT" - elif [ -d "$BASE_CONF/defaults/templates/$ROOT" ]; then - orig_template="$BASE_CONF/defaults/templates/$ROOT" - else - return 1 - fi - - if [ -f "$orig_template/$ROOT.perms" ]; then - cat $orig_template/$ROOT.perms > $TEMPLATE_BASE.perms - fi - - if [ -f "$orig_template/$ROOT.template" ]; then - cat $orig_template/$ROOT.template > $TEMPLATE_BASE.template - fi - - if use_svn && [ -d "$orig_template/.svn" ]; then - - cd `dirname $TEMPLATE_BASE` - - list="`ls $orig_template/$ROOT.d/ 2> /dev/null`" - if [ ! -z "$list" ]; then - echo Copying files to the new template... - rsync -av --exclude=.svn $orig_template/$ROOT.d/ $TEMPLATE_BASE.d/ - svn add `basename $TEMPLATE_BASE`.d/* - info_commit="yes" - fi - - list="`ls $orig_template/$ROOT.s/ 2> /dev/null`" - if [ ! -z "$list" ]; then - echo Copying scripts to the new template... - rsync -av --exclude=.svn $orig_template/$ROOT.s/ $TEMPLATE_BASE.s/ - svn add `basename $TEMPLATE_BASE`.s/* - info_commit="yes" - fi - - else - - list="`ls $orig_template/$ROOT.d/ 2> /dev/null`" - if [ ! -z "$list" ]; then - echo Copying files to the new template... - rsync -av $orig_template/$ROOT.d/ $TEMPLATE_BASE.d/ - fi - - list="`ls $orig_template/$ROOT.s/ 2> /dev/null`" - if [ ! -z "$list" ]; then - echo Copying scripts to the new template... - rsync -av $orig_template/$ROOT.s/ $TEMPLATE_BASE.s/ - fi - - fi - - else - echo $BASENAME: warning: no root directory defined - fi - - if [ "$info_commit" == "yes" ] && [ -z "$SILENT" ]; then - echo "$BASENAME: please run 'jail-commit --all' to add files under $file into the svn repository" - fi - -} - -function template_update { - - # update the template package list - - check_template_exist - - if [ ! -d "$ROOT/var/log/packages" ]; then - echo $ROOT/var/log/packages: directory not found - exit 1 - fi - - echo Checking package list for template `basename $TEMPLATE_BASE`... - - for package in `ls -1 $ROOT/var/log/packages/`; do - pack=`package_name $package` - if [ -f $TEMPLATE ]; then - if ! `grep -v -e "^#" $TEMPLATE | cut -d : -f 1 | awk '{ print $1 }' | grep -q -e "^$pack\$"`; then - echo $pack >> $TEMPLATE - echo Added $pack # on $TEMPLATE - fi - else - echo $pack >> $TEMPLATE - echo Added $pack # on $TEMPLATE - fi - done - - # check if each package from the template is installed - grep -v -e "^#" $TEMPLATE | cut -d : -f 1 | awk '{ print $1 }' | while read pack; do - - if [ ! -z "$pack" ]; then - unset found - for candidate in `ls $ROOT/var/log/packages/$pack* 2> /dev/null`; do - candidate="`package_name $candidate`" - if [ "$pack" == "$candidate" ]; then - found="1" - break - fi - done - if [ "$found" != "1" ]; then - # remove a non-installed package from the template - sed "/^$pack$/d" $TEMPLATE | sed "/^$pack $/d" | sed "/^$pack:*/d" | sed "/^$pack */d" > $TEMPLATE.tmp - cat $TEMPLATE.tmp > $TEMPLATE - rm -f $TEMPLATE.tmp - echo Removed $pack # from $TEMPLATE - fi - fi - - done - - if ! svn_check $TEMPLATE_BASE.template && [ -d "`dirname $TEMPLATE_BASE`/.svn" ]; then - cd `dirname $TEMPLATE_BASE` - svn add `basedir $TEMPLATE_BASE`.template - fi - -} - -function template_add { - - # add a file in a template - # usage: template_add <jail-root> <file> - - local info_commit cwd - - if [ -z "$1" ] || [ -z "$2" ]; then - return 1 - fi - - check_template_exist - - jail="/$1" - file="$2" - - if [ -a "$TEMPLATE_BASE.d/$file" ]; then - if [ -d "$TEMPLATE_BASE.d/$file" ]; then - - echo $BASENAME: folder `slash $file` already on $TEMPLATE_BASE.d, checking for contents - - cd $jail - for candidate in `find $file`; do - if [ ! -a "$TEMPLATE_BASE.d/$candidate" ]; then - mkdir -p $TEMPLATE_BASE.d/`dirname $candidate` - cp -a $jail/$candidate $TEMPLATE_BASE.d/$candidate - if use_svn && [ -d "$TEMPLATE_BASE.d/.svn" ]; then - cwd="`pwd`" - cd $TEMPLATE_BASE.d - svn add ./$candidate - if [ "$?" != "0" ]; then - echo $BASENAME: error adding `slash $candidate` into the revision system - fi - cd $cwd - info_commit="yes" - else - echo Added `slash $jail/$candidate` on `slash $TEMPLATE_BASE.d/$candidate` - fi - fi - done - - if [ "$info_commit" == "yes" ] && [ -z "$SILENT" ]; then - echo "$BASENAME: please run 'jail-commit --all' to add files under `slash $file` into the svn repository" - fi - - else - echo $BASENAME: file `slash $file` already on $TEMPLATE_BASE.d - exit 1 - fi - else - - if [ -a "$jail/$file" ]; then - - destination="`echo $TEMPLATE_BASE.d/$file | sed -e 's/\/$//'`" - - if use_svn && [ -d "$TEMPLATE_BASE.d/.svn" ]; then - - if [ ! -d "$TEMPLATE_BASE.d/`dirname $file`/.svn" ]; then - mkdir -p $TEMPLATE_BASE.d/`dirname $file`/ - svn add $TEMPLATE_BASE.d/`dirname $file`/ - fi - - cp -a $jail/$file $destination - - cwd="`pwd`" - cd $TEMPLATE_BASE.d - svn add ./$file - - if [ "$?" != "0" ]; then - echo $BASENAME: error adding `slash $candidate` into the revision system - else - if [ -z "$SILENT" ]; then - echo "$BASENAME: please run 'jail-commit --all' to add `slash $file` into the svn repository" - fi - fi - - cd $cwd - - else - - mkdir -p $TEMPLATE_BASE.d/`dirname $file`/ - cp -a $jail/$file $destination - echo Added `slash $jail/$file` on `slash $destination` - - fi - - else - echo $BASENAME: `slash $jail/$file`: file not found - exit 1 - fi - fi - -} - -function check_template_exist { - - # check if a template exists - # and create missing components - - local components - - components="template perms d s" - - if [ ! -d "`dirname $TEMPLATE_BASE`" ]; then - echo $BASENAME: template not found - exit 1 - fi - - for component in $components; do - - if [ ! -e "$TEMPLATE_BASE.$component" ]; then - - echo "$BASENAME: template component not found: $TEMPLATE_BASE.$component; creating..." - - cd `dirname $TEMPLATE_BASE` - - if [ "$component" == "perms" ] || [ "$component" == "template" ]; then - touch $TEMPLATE_BASE.$component - else - mkdir $TEMPLATE_BASE.$component - fi - - if use_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ]; then - svn add $TEMPLATE_BASE.$component - info_commit="yes" - fi - - elif use_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ] && \ - ! svn_check $TEMPLATE_BASE.$component; then - - cd `dirname $TEMPLATE_BASE` - svn add $TEMPLATE_BASE.$component - info_commit="yes" - - fi - - done - - if [ "$info_commit" == "yes" ] && [ -z "$SILENT" ]; then - echo "$BASENAME: please run 'jail-commit --all' to add new files in the svn repository" - fi - -} - -function template_delete { - - # delete a file from a template - # usage: template_delete <file> - - if [ -e "$TEMPLATE_BASE.d/$1" ]; then - if use_svn && [ -d "$TEMPLATE_BASE.d/.svn" ]; then - cd $TEMPLATE_BASE.d - svn del --force ./$1 || rm -rf ./$1 - if [ -z "$SILENT" ]; then - echo "$BASENAME: please run 'jail-commit --all' to del $1 in the svn repository" - fi - else - rm -rf $TEMPLATE_BASE.d/$1 - echo Removed $1 from $TEMPLATE_BASE.d - fi - elif [ -e "$TEMPLATE_BASE.s/$1" ]; then - if use_svn && [ -d "$TEMPLATE_BASE.s/.svn" ]; then - cd $TEMPLATE_BASE.s - svn del --force ./$1 || rm -rf ./$1 - if [ -z "$SILENT" ]; then - echo "$BASENAME: please run 'jail-commit --all' to del $1 in the svn repository" - fi - else - rm -rf $TEMPLATE_BASE.s/$1 - echo Removed $1 from $TEMPLATE_BASE.s - fi - else - if [ ! -d "$TEMPLATE_BASE.d" ]; then - echo $BASENAME: template folder $TEMPLATE_BASE.d not found - else - echo $BASENAME: file $1 not found at $TEMPLATE_BASE.d - fi - exit 1 - fi - -} - -function template_remove { - - # remove a template - # usage: template_remove - - local basedir template - - basedir="`dirname $TEMPLATE_BASE`" - template="`basename $basedir`" - - if [ ! -d "$basedir" ]; then - echo $BASENAME: template $template does not exist - exit 1 - fi - - if use_svn && [ -d "$basedir/.svn" ]; then - cd $TEMPLATE_FOLDER - svn update - svn del --force $template - if [ "$?" != "0" ]; then - echo $BASENAME: error deleting template $template - else - svn commit -m "deleted $template" - if [ "$?" != "0" ]; then - echo $BASENAME: error commiting to svn repository - fi - fi - else - rm -rf $basedir - fi - -} - -function template_list { - - # list templates - # usage: template_list [template_name] - - local list basedir template - - if [ "$TEMPLATE_STORAGE_STYLE" != "own-folder" ]; then - echo "$BASENAME: option only available if TEMPLATE_STORAGE_STYLE configured as 'own-folder'" - return 1 - fi - - if echo $1 | grep -q "/" || [ ! -z "$1" ]; then - - template="`echo $1 | cut -d "/" -f 1`" - - if [ -e "$BASE_CONF/defaults/templates/$1" ]; then - list="`ls $BASE_CONF/defaults/templates/$1 2> /dev/null`" - if [ "$?" == "0" ]; then - list="`echo $list | xargs`" - echo "In the default template $template: $list" - fi - fi - - if [ -e "$TEMPLATE_FOLDER/$1" ]; then - list="`ls $TEMPLATE_FOLDER/$1 2> /dev/null`" - if [ "$?" == "0" ]; then - list="`echo $list | xargs`" - echo "In the custom template $template: $list" - fi - fi - - else - - list="`ls $BASE_CONF/defaults/templates/$1 2> /dev/null`" - if [ "$?" == "0" ]; then - list="`echo $list | xargs`" - echo "Default templates: $list" - fi - - list="`ls $TEMPLATE_FOLDER/$1 2> /dev/null`" - if [ "$?" == "0" ]; then - list="`echo $list | xargs`" - echo "Custom templates: $list" - fi - - fi - -} - -function template_post_install_edit { - - # add or edit a post-installation script - # usage: template_post_install_edit <script-name> - - if [ -z "$1" ]; then - echo $BASENAME: no template specified - exit 1 - elif echo $1 | grep -q "/"; then - echo $BASENAME: error: invalid script name $1 - fi - - if [ -f "$TEMPLATE_BASE.s/$1" ]; then - sha1sum="`sha1sum $TEMPLATE_BASE.s/$1`" - if [ ! -z "$EDITOR" ]; then - $EDITOR $TEMPLATE_BASE.s/$1 - else - vi $TEMPLATE_BASE.s/$1 - fi - if [ "$sha1sum" != "`sha1sum $TEMPLATE_BASE.s/$1`" ] && \ - [ -d "`dirname $TEMPLATE_BASE`/.svn" ] && [ -z "$SILENT" ]; then - echo "$BASENAME: please run 'jail-commit --all' to send changes to the repository" - fi - else - - if [ -e "$TEMPLATE_BASE.s/$1" ]; then - - echo $BASENAME: file $TEMPLATE_BASE.s/$1 not a regular file - - elif [ -d "$TEMPLATE_BASE.s" ]; then - - touch $TEMPLATE_BASE.s/$1 - chmod +x $TEMPLATE_BASE.s/$1 - - if [ -d "$TEMPLATE_BASE.s/.svn" ]; then - cd $TEMPLATE_BASE.s - svn add $1 - if [ -z "$SILENT" ]; then - echo "$BASENAME: please run 'jail-commit --all' to send the script to the repository" - fi - fi - - echo "$BASENAME: script created; run templatepkg -p `basename $TEMPLATE_BASE` $1 again to edit it" - - else - echo $BASENAME: folder not found: $TEMPLATE_BASE.s - fi - - fi - -} - -function template_edit { - - # edit a template package list - # usage: template_edit - - if [ -f "$TEMPLATE_BASE.template" ]; then - sha1sum="`sha1sum $TEMPLATE_BASE.template`" - if [ ! -z "$EDITOR" ]; then - $EDITOR $TEMPLATE_BASE.template - else - vi $TEMPLATE_BASE.template - fi - if [ "$sha1sum" != "`sha1sum $TEMPLATE_BASE.template`" ] && \ - [ -d "`dirname $TEMPLATE_BASE`/.svn" ] && [ -z "$SILENT" ]; then - echo "$BASENAME: please run 'jail-commit --all' to send changes to the repository" - fi - elif [ -e "$TEMPLATE_BASE.template" ]; then - echo $BASENAME: file $TEMPLATE_BASE.template not a regular file - else - echo $BASENAME: file not found: $TEMPLATE_BASE.template - fi - -} - -function require { - - # requires a string - # usage: require [string] - - if [ -z "$1" ]; then - usage - fi - -} - -function setroot { - - # set ROOT variable - # usage: setroot <value1> <value2> - - if [ -z "$1" ]; then - ROOT="/" - else - ROOT="$1" - fi - -} - -function create_doinst { - - # create a doinst.sh from a template.perms file - # usage: create_doinst <doinst-path> - - rm -f $1/doinst.sh - - if [ -s "$TEMPLATE_BASE.perms" ]; then - echo Creating doinst.sh... - cat $TEMPLATE_BASE.perms | while read entry; do - file="`echo $entry | cut -d ";" -f 1`" - if [ -e "$TEMPLATE_BASE.d/$file" ]; then - owner="`echo $entry | cut -d ";" -f 2`" - group="`echo $entry | cut -d ";" -f 3`" - perms="`echo $entry | cut -d ";" -f 4`" - echo "( chmod $perms /$file )" >> $1/doinst.sh - echo "( chown $owner:$group /$file )" >> $1/doinst.sh - fi - done - fi - -} - -function package_template { - - # make a package from a template - # usage: package_template [version] [build] [arch] - - local template version build arch - - template="`basename $TEMPLATE_BASE`" - - if [ ! -d "$TEMPLATE_BASE.d" ]; then - $BASENAME: folder not found: $TEMPLATE.base.d - return 1 - fi - - echo Buiding package for template $template... - - if [ -z "$1" ]; then - version="1" - else - version="$1" - fi - - if [ -z "$2" ]; then - build="1" - else - build="$2" - fi - - if [ -z "$3" ]; then - arch="noarch" - else - arch="$3" - fi - - TMP=${TMP:=/tmp} - rm -rf $TMP/templatepkg - mkdir -p $TMP/templatepkg - - rsync -av --exclude=.svn $TEMPLATE_BASE.d/ $TMP/templatepkg/ - mkdir $TMP/templatepkg/install - create_doinst $TMP/templatepkg/install - - echo "template-$template: template-$template" > $TMP/templatepkg/install/slack-desc - echo "template-$template: " >> $TMP/templatepkg/install/slack-desc - echo "template-$template: simplepkg template $template" >> $TMP/templatepkg/install/slack-desc - - for ((n=1;n<=8;n++)); do - echo "template-$template: " >> $TMP/templatepkg/install/slack-desc - done - - cd $TMP/templatepkg - - makepkg -c n -l y $TMP/template-$template-$version-noarch-$build.tgz - - cd $TMP - rm -rf templatepkg - -} - -# ----------------------------------------------------- -# main -# ----------------------------------------------------- - -if [ ! -z "$2" ]; then - search_template $2 --new -fi - -TEMPLATE="$TEMPLATE_BASE.template" - -if [ "$1" == "-u" ] || [ "$1" == "--update" ]; then - - require $2 - setroot $3 - template_update - -elif [ "$1" == "-c" ] || [ "$1" == "--create" ]; then - - require $2 - setroot $3 - template_create - -elif [ "$1" == "-a" ] || [ "$1" == "--add" ]; then - - require $2 - - if [ -z "$3" ]; then - usage - else - setroot $4 - fi - - template_add $ROOT $3 - -elif [ "$1" == "-d" ] || [ "$1" == "--delete" ]; then - - require $2 - - if [ -z "$3" ]; then - usage - else - template_delete $3 - fi - -elif [ "$1" == "-s" ] || [ "$1" == "--sync" ]; then - - if use_svn && [ -d "$TEMPLATE_FOLDER/.svn" ]; then - ( cd $TEMPLATE_FOLDER && svn update ) - true - fi - -elif [ "$1" == "-e" ] || [ "$1" == "--export" ]; then - - require $2 - import_export_templates export $2 - -elif [ "$1" == "-i" ] || [ "$1" == "--import" ]; then - - require $2 - import_export_templates import $2 - -elif [ "$1" == "-r" ] || [ "$1" == "--remove" ]; then - - require $2 - template_remove - -elif [ "$1" == "-l" ] || [ "$1" == "--list" ]; then - - template_list $2 - -elif [ "$1" == "-b" ] || [ "$1" == "--batch-edit" ]; then - - require $3 - template_post_install_edit $3 - -elif [ "$1" == "-t" ] || [ "$1" == "--template-edit" ]; then - - require $2 - template_edit - -elif [ "$1" == "-p" ] || [ "$1" == "--pack" ]; then - - require $2 - shift ; shift - package_template $* - -elif [ "$1" == "-h" ] || [ "$1" == "--help" ]; then - - display_help $2 - -else - usage -fi - |