Parse command line arguments in common.sh
authorGuido Trotter <ultrotter@google.com>
Thu, 16 Oct 2008 09:20:04 +0000 (09:20 +0000)
committerGuido Trotter <ultrotter@google.com>
Thu, 16 Oct 2008 09:20:04 +0000 (09:20 +0000)
Currently each of the 4 OS API scripts parses its command line
separately. Creating common.sh lets us centralize this behavior.

For the rename script we change the old_name variable to just instance
for more uniformity with what the new version of the API will do.

Reviewed-by: iustinp

common.sh [new file with mode: 0644]
create.in
export
import
rename

diff --git a/common.sh b/common.sh
new file mode 100644 (file)
index 0000000..cfc913a
--- /dev/null
+++ b/common.sh
@@ -0,0 +1,37 @@
+
+get_api5_arguments() {
+  TEMP=`getopt -o o:n:i:b:s: -n '$0' -- "$@"`
+  if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
+  # Note the quotes around `$TEMP': they are essential!
+  eval set -- "$TEMP"
+  while true; do
+    case "$1" in
+      -i|-o) instance=$2; shift 2;;
+
+      -n) new_name=$2; shift 2;;
+
+      -b) blockdev=$2; shift 2;;
+
+      -s) swapdev=$2; shift 2;;
+
+      --) shift; break;;
+
+      *)  echo "Internal error!"; exit 1;;
+    esac
+  done
+  if [ -z "$instance" -o -z "$blockdev" ]; then
+    echo "Missing OS API Argument"
+    exit 1
+  fi
+  if [ "$0" != "export" -a -z "$swapdev"  ]; then
+    echo "Missing OS API Argument"
+    exit 1
+  fi
+  if [ "$0" = "rename" -a -z "$new_name"  ]; then
+    echo "Missing OS API Argument"
+    exit 1
+  fi
+}
+
+get_api5_arguments
+
index 8426d92..2212286 100755 (executable)
--- a/create.in
+++ b/create.in
@@ -46,30 +46,7 @@ fi
 DPKG_ARCH=${ARCH:-`dpkg --print-architecture`}
 CACHE_FILE="$CACHE_DIR/cache-${SUITE}-${DPKG_ARCH}.tar"
 
-TEMP=`getopt -o i:b:s: -n '$0' -- "$@"`
-
-if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
-
-# Note the quotes around `$TEMP': they are essential!
-eval set -- "$TEMP"
-
-while true; do
-  case "$1" in
-    -i) instance=$2; shift 2;;
-
-    -b) blockdev=$2; shift 2;;
-
-    -s) swapdev=$2; shift 2;;
-
-    --) shift; break;;
-
-    *)  echo "Internal error!"; exit 1;;
-  esac
-done
-if [ -z "$instance" -o -z "$blockdev" -o -z "$swapdev" ]; then
-  echo "Missing -i or -b or -s argument!"
-  exit 1
-fi
+. common.sh
 
 mkswap $swapdev
 mke2fs -Fjq $blockdev
diff --git a/export b/export
index 31fc235..ff1b3c1 100755 (executable)
--- a/export
+++ b/export
 
 set -e
 
-TEMP=`getopt -o i:b: -n '$0' -- "$@"`
-
-if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
-
-# Note the quotes around `$TEMP': they are essential!
-eval set -- "$TEMP"
-
-while true; do 
-       case "$1" in
-               -i) instance="$2"; shift 2;;
-
-               -b) blockdev="$2"; shift 2;;
-
-               --) shift; break;;
-
-               *)  echo "Internal error!"; exit 1;;
-       esac
-done
-if [ -z "$blockdev" ]; then
-       echo "Missing -b argument!"
-       exit 1
-fi
+. common.sh
 
 dump -0 -q -f - "$blockdev"
diff --git a/import b/import
index 90fd7ff..0207fa6 100755 (executable)
--- a/import
+++ b/import
 
 set -e
 
-TEMP=`getopt -o i:b:s: -n '$0' -- "$@"`
-
-if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
-
-# Note the quotes around `$TEMP': they are essential!
-eval set -- "$TEMP"
-
-while true; do 
-       case "$1" in
-               -i) instance=$2; shift 2;;
-
-               -b) blockdev=$2; shift 2;;
-
-               -s) swapdev=$2; shift 2;;
-
-               --) shift; break;;
-
-               *)  echo "Internal error!"; exit 1;;
-       esac
-done
-if [ -z "$instance" -o -z "$blockdev" -o -z "$swapdev" ]; then
-       echo "Missing -i or -b or -s argument!"
-       exit 1
-fi
+. common.sh
 
 mkswap $swapdev
 mke2fs -Fjq $blockdev
diff --git a/rename b/rename
index 66c5409..d7cf756 100755 (executable)
--- a/rename
+++ b/rename
 
 set -e
 
-TEMP=`getopt -o o:n:b:s: -n '$0' -- "$@"`
-
-if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
-
-# Note the quotes around `$TEMP': they are essential!
-eval set -- "$TEMP"
-
-while true; do
-       case "$1" in
-               -o) old_name=$2; shift 2;;
-
-               -n) new_name=$2; shift 2;;
-
-               -b) blockdev=$2; shift 2;;
-
-               -s) swapdev=$2; shift 2;;
-
-               --) shift; break;;
-
-               *)  echo "Internal error!"; exit 1;;
-       esac
-done
-if [ -z "$old_name" -o -z "$new_name" -o -z "$blockdev" -o -z "$swapdev" ]; then
-       echo "Missing -o or -n or -b or -s argument!"
-       exit 1
-fi
+. common.sh
 
 TMPDIR=`mktemp -d` || exit 1
 trap "umount $TMPDIR; rmdir $TMPDIR" EXIT
@@ -63,17 +38,17 @@ MNAME="$TMPDIR/etc/mailname"
 # for hostname, we raise and error if the old hostname is not what we
 # expect
 OLD_HNAME="`cat $HNAME`"
-if [ "$OLD_HNAME" = "$old_name" ]; then
+if [ "$OLD_HNAME" = "$instance" ]; then
        echo $new_name > $HNAME
 else
-       echo "Cannot rename from $old_name to $new_name:" 1>&2
+       echo "Cannot rename from $instance to $new_name:" 1>&2
        echo "Instance has a different hostname ($OLD_HNAME)" 1>&2
        exit 1
 fi
 
-# for mailname, we rename only if it has the old_name, otherwise we
+# for mailname, we rename only if it has the old name, otherwise we
 # ignore it (and assumme that it's a customized name)
-if [ "`cat $MNAME`" = "$old_name" ]; then
+if [ "`cat $MNAME`" = "$instance" ]; then
        echo $new_name > $MNAME
 fi