diff options
Diffstat (limited to 'trunk/src/templatepkg')
-rwxr-xr-x | trunk/src/templatepkg | 103 |
1 files changed, 84 insertions, 19 deletions
diff --git a/trunk/src/templatepkg b/trunk/src/templatepkg index 0a48406..914f1aa 100755 --- a/trunk/src/templatepkg +++ b/trunk/src/templatepkg @@ -33,10 +33,11 @@ function usage { echo "usage: $BASENAME <option> <template> [arguments]" echo "options:" echo "" - echo " -c | --create: create a template from a jail;" - echo " -u | --update: update a template from a jail." + echo " -c | --create: create a template from a jail; arguments are:" echo "" - echo " -c and -u are equivalent and their arguments are:" + echo " $BASENAME -u <template> [jail-root]" + echo "" + echo " -u | --update: update a template from a jail; arguments are:" echo "" echo " $BASENAME -u <template> [jail-root]" echo "" @@ -61,10 +62,66 @@ function usage { } +function template_create { + + # create a new template + # TODO: usar svn add $TEMPLATE_BASE ao inves de svn mkdir, etc? + + local template_base + + if [ ! -d "$TEMPLATE_BASE" ]; then + if use_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ]; then + cd `dirname $TEMPLATE_BASE` + svn mkdir $TEMPLATE_BASE + else + mkdir -p $TEMPLATE_BASE + fi + fi + + touch $TEMPLATE.perms + touch $TEMPLATE.template + + if use_svn && [ -d "$TEMPLATE_BASE/.svn" ]; then + + cd $TEMPLATE_BASE + + if ! svn_check $TEMPLATE.d; then + svn mkdir $TEMPLATE.d + fi + + if ! svn_check $TEMPLATE.s; then + svn mkdir $TEMPLATE.s + fi + + if ! svn_check $TEMPLATE.template; then + svn add $TEMPLATE.template + fi + + if ! svn_check $TEMPLATE.perms; then + svn add $TEMPLATE.perms + fi + + else + mkdir $TEMPLATE.{d,s} + fi + + template_update + +} + function template_update { # update the template package list + components="$TEMPLATE.template $TEMPLATE.perms $TEMPLATE.d $TEMPLATE.s" + for component in $components; do + if [ ! -a "$component" ]; then + echo $BASENAME: template component not found: $component + echo $BASENAME: please run $BASENAME -c before update a template + exit 1 + fi + done + if [ ! -d "$ROOT/var/log/packages" ]; then echo $ROOT/var/log/packages: directory not found exit 1 @@ -131,7 +188,7 @@ function template_add { if [ ! -a "$TEMPLATE_BASE.d/$candidate" ]; then mkdir -p $TEMPLATE_BASE.d/`dirname $candidate` cp -a $jail/$candidate $TEMPLATE_BASE.d/$candidate - if [ "$TEMPLATES_UNDER_SVN" == "1" ]; then + if use_svn; then ( cd $TEMPLATE_BASE.d && svn add $candidate ) info_commit="yes" fi @@ -152,7 +209,7 @@ function template_add { mkdir -p $TEMPLATE_BASE.d/`dirname $file`/ destination="`echo $TEMPLATE_BASE.d/$file | sed -e 's/\/$//'`" cp -a $jail/$file $destination - if [ "$TEMPLATES_UNDER_SVN" == "1" ]; then + if use_svn; then ( cd $TEMPLATE_BASE.d && svn add $file ) echo $BASENAME: please run jail-commit to add $file into the svn repository true @@ -166,6 +223,19 @@ function template_add { } +function setroot { + + # set ROOT variable + # usage: setroot <value1> <value2> + + if [ -z "$1" ]; then + ROOT="/" + else + ROOT="$1" + fi + +} + # command line parsing if [ -z "$2" ]; then @@ -175,15 +245,14 @@ fi search_template $2 --new TEMPLATE="$TEMPLATE_BASE.template" -if [ "$1" == "-u" ] || [ "$1" == "--update" ] || \ - [ "$1" == "-c" ] || [ "$1" == "--create" ]; then +if [ "$1" == "-u" ] || [ "$1" == "--update" ]; then - if [ -z "$3" ]; then - ROOT="/" - else - ROOT="/$3" - fi + setroot $3 + template_create + +elif [ "$1" == "-c" ] || [ "$1" == "--create" ]; then + setroot $3 template_update elif [ "$1" == "-a" ] || [ "$1" == "--add" ]; then @@ -191,11 +260,7 @@ elif [ "$1" == "-a" ] || [ "$1" == "--add" ]; then if [ -z "$3" ]; then usage else - if [ -z "$4" ]; then - ROOT="/" - else - ROOT="$4" - fi + setroot $4 fi template_add $ROOT $3 @@ -207,7 +272,7 @@ elif [ "$1" == "-d" ] || [ "$1" == "--delete" ]; then else if [ -a "$TEMPLATE_BASE.d/$3" ]; then - if [ "$TEMPLATES_UNDER_SVN" == "1" ]; then + if use_svn; then cd $TEMPLATE_BASE svn del --force ./$3 || rm -rf ./$3 echo $BASENAME: please run jail-commit to del $3 in the svn repository @@ -220,7 +285,7 @@ elif [ "$1" == "-d" ] || [ "$1" == "--delete" ]; then elif [ "$1" == "-s" ] || [ "$1" == "--sync" ]; then - if [ "$TEMPLATES_UNDER_SVN" == "1" ]; then + if use_svn; then if [ -d "$TEMPLATE_BASE.d/.svn" ]; then ( cd $TEMPLATE_BASE.d && svn update ) true |