]> gitweb.fluxo.info Git - simplepkg.git/commitdiff
templatepkg: now -c is different from -u
authorrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>
Sun, 11 Feb 2007 22:07:34 +0000 (22:07 +0000)
committerrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>
Sun, 11 Feb 2007 22:07:34 +0000 (22:07 +0000)
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@186 04377dda-e619-0410-9926-eae83683ac58

trunk/lib/common.sh
trunk/src/jail-commit
trunk/src/templatepkg

index 5785223423aef12d4e7307f0c737479df3cd5b49..952f25d6b26bfc50039cdd6366ce149cf23729b0 100644 (file)
@@ -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
+
+}
+
index d6e18f392d6c523f02a451e1313c4880bcbb57c0..656d5685bce49736d73bf76cb7dbfd18b4d7bd2e 100755 (executable)
@@ -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
index 0a484068ecc3a76af495a4c117bd8e108124789a..914f1aa454e25c7e325966ee176896558ece55e6 100755 (executable)
@@ -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