From bfee1e99ba5c9f83ab81483f45b7040bc38fb800 Mon Sep 17 00:00:00 2001
From: Yoshinori Okuji <yo@nexedi.com>
Date: Fri, 18 Apr 2008 13:59:27 +0000
Subject: [PATCH] Clean up, and add options to specify a svn root path and a
 destination directory.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@20672 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/bin/build_bt5_from_svn.sh | 62 +++++++++++++++++---------
 1 file changed, 41 insertions(+), 21 deletions(-)

diff --git a/product/ERP5/bin/build_bt5_from_svn.sh b/product/ERP5/bin/build_bt5_from_svn.sh
index 784a29f4ec..2990b70047 100755
--- a/product/ERP5/bin/build_bt5_from_svn.sh
+++ b/product/ERP5/bin/build_bt5_from_svn.sh
@@ -1,23 +1,43 @@
-#!/bin/bash
+#! /bin/bash
+#
+# Usage: build_bt5_from_svn.sh [-p path] [-d dir]
+#
+# The path is the last part of the svn root, for example, tag/5.0 or trunk.
+# By default, the path is "trunk".
+#
+# The dir is the destination directory where the repository is made.
+# By default, the dir is the current directory.
 
-# TODO: BT5 version support (stable/unstable)
+set -e
+
+path=trunk
+repository=$(pwd)
+
+while getopts "p:d:" opt; do
+  case $opt in
+    p) path="$OPTARG" ;;
+    d) repository="$OPTARG" ;;
+  esac
+done
 
 # Lock file name
-LOCKFILE="/tmp/`basename $0`.lock"
+LOCKFILE="/tmp/$(basename $0).lock"
 # SVN paths
-SVNROOT="https://svn.erp5.org/repos/public/erp5/trunk/"
+SVNROOT="https://svn.erp5.org/repos/public/erp5/$path"
 # Relative svn paths to fetch
 MODULES="bt5 products/ERP5/bootstrap"
 # Script generating the business template repository index
 GENBTLIST="products/ERP5/bin"
-# Local directory to receive CVS copy
+# Local directory to receive SVN copies
 BASELOCALDIR="/tmp"
+LOCALDIR="$BASELOCALDIR/$$"
 # Local directory to receive butiness templates
-BT5DIR="/var/lib/zope/static/reposit/erp5/upload_module"
+BT5DIR="$repostiry"
 
-function cleanup () {
-  rm -f $LOCKFILE
-  exit 1
+
+function cleanup {
+  rm -f "$LOCKFILE"
+  rm -rf "$LOCALDIR"
 }
 
 if [ -e "$LOCKFILE" ]; then
@@ -25,37 +45,37 @@ if [ -e "$LOCKFILE" ]; then
   exit 1
 fi
 
-touch "$LOCKFILE" || exit 1
-LOCALDIR="$BASELOCALDIR/$$"
-mkdir "$LOCALDIR" || cleanup
+trap "cleanup" ERR
+
+touch "$LOCKFILE"
+mkdir "$LOCALDIR"
 
 for MODULE in $MODULES; do
-  # Checkout the source code from cvs
-  cd "$LOCALDIR" || cleanup
-  svn co "$SVNROOT$MODULE" > /dev/null || cleanup
+  # Checkout the source code from svn
+  cd "$LOCALDIR"
+  svn co "$SVNROOT/$MODULE" > /dev/null
   BMODULE=`basename "$MODULE"`
 
   # Create one archive for each Business Template
   cd "$LOCALDIR/$BMODULE"
   for BT5 in `ls "$LOCALDIR/$BMODULE"`; do
     if [ -d "$LOCALDIR/$BMODULE/$BT5" ]; then
-      tar -zcf "$LOCALDIR/$BT5.bt5" --exclude .svn "$BT5" || cleanup
+      tar -zcf "$LOCALDIR/$BT5.bt5" --exclude .svn "$BT5"
     fi
   done
 done
 
 # Get the latest version of the genbt5list and generate the index
-cd "$LOCALDIR" || cleanup
-svn co "$SVNROOT$GENBTLIST" > /dev/null || cleanup
+cd "$LOCALDIR"
+svn co "$SVNROOT/$GENBTLIST" > /dev/null
 
 # Publish the repository
 mv -f "$LOCALDIR/"*.bt5 "$BT5DIR"
 
 # Generate the index from repository directory, in case there are BT5 manually added there
-cd "$BT5DIR" || cleanup
+cd "$BT5DIR"
 /usr/bin/python "$LOCALDIR/`basename $GENBTLIST`/genbt5list" > /dev/null
 chmod go+r bt5list
 
 # Clean up
-rm -rf $LOCALDIR
-rm -f $LOCKFILE
+cleanup
-- 
2.30.9