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 -  | 
