aboutsummaryrefslogtreecommitdiff
path: root/trunk
diff options
context:
space:
mode:
Diffstat (limited to 'trunk')
-rw-r--r--trunk/lib/common.sh33
-rwxr-xr-xtrunk/src/jail-commit6
-rwxr-xr-xtrunk/src/templatepkg103
3 files changed, 119 insertions, 23 deletions
diff --git a/trunk/lib/common.sh b/trunk/lib/common.sh
index 5785223..952f25d 100644
--- a/trunk/lib/common.sh
+++ b/trunk/lib/common.sh
@@ -447,3 +447,36 @@ function set_jail_perms {
}
+function use_svn {
+
+ # check if svn usage is enabled
+
+ if [ "$TEMPLATES_UNDER_SVN" == "1" ] && \
+ [ "$TEMPLATE_STORAGE_STYLE" == "own-folder" ]; then
+ return 0
+ else
+ return 1
+ fi
+
+}
+
+function svn_check {
+
+ # check if a file is under svn
+ # usage: svn_check <file>
+
+ local cwd
+
+ cwd="`pwd`"
+ cd `dirname $1`
+
+ if [ "`svn status $1 | awk '{ print $1 }'`" == "?" ]; then
+ return 1
+ else
+ return 0
+ fi
+
+ cd $cwd
+
+}
+
diff --git a/trunk/src/jail-commit b/trunk/src/jail-commit
index d6e18f3..656d568 100755
--- a/trunk/src/jail-commit
+++ b/trunk/src/jail-commit
@@ -36,8 +36,7 @@ function template_merge {
return 1
fi
- rm -f $TEMPLATE_BASE.perms
- touch $TEMPLATE_BASE.perms
+ echo "" > $TEMPLATE_BASE.perms
cd $TEMPLATE_BASE.d
for file in `find`; do
@@ -57,8 +56,7 @@ function template_merge {
function template_svn_commit {
- if [ "$TEMPLATES_UNDER_SVN" == "1" ] && \
- [ "$TEMPLATE_STORAGE_STYLE" == "own-folder" ]; then
+ if use_svn; then
cd `basedir $TEMPLATE_BASE`
svn commit -m "changes for `date`"
fi
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