use external command line parameter-processing script
authorTong Sun <suntong@cpan.org>
Fri, 17 Oct 2008 02:20:51 +0000 (22:20 -0400)
committerMichael Prokop <mika@grml.org>
Mon, 20 Oct 2008 14:04:50 +0000 (16:04 +0200)
grml-debootstrap
grml-debootstrap.clp [new file with mode: 0644]

index 84f4753..ef7f442 100755 (executable)
@@ -11,6 +11,7 @@ set -e # exit on any error
 
 # variables {{{
 PN="$(basename $0)"
 
 # variables {{{
 PN="$(basename $0)"
+prog_real=`readlink -f -- $0`
 VERSION='0.23'
 MNTPOINT="/mnt/debootstrap.$$"
 
 VERSION='0.23'
 MNTPOINT="/mnt/debootstrap.$$"
 
@@ -99,73 +100,8 @@ fi
 # }}}
 
 # cmdline handling {{{
 # }}}
 
 # cmdline handling {{{
-
-while [ "$#" -gt "0" ] ; do
-    case $1 in
-        -c|--config)
-            shift
-            CONFIGFILE=$1
-            ;;
-        --grub)
-            shift
-            GRUB=$1
-            ;;
-        --groot)
-            shift
-            GROOT=$1
-            ;;
-        -h|--help)
-            usage ; eend 0
-            eend 0
-            exit 0
-            ;;
-        --hostname)
-            shift
-            HOSTNAME=$1
-            ;;
-        --interactive)
-            INTERACTIVE=1
-            ;;
-        -i|--iso)
-            shift
-            [ -n "$MIRROR" ] && unset MIRROR
-            ISO=$1
-            ;;
-        -m|--mirror)
-            shift
-            MIRROR=$1
-            CHROOTMIRROR=$1
-            ;;
-        -p|--mntpoint)
-            shift
-            MNTPOINT=$1
-            ;;
-        --password)
-            shift
-            ROOTPASSWORD=$1
-            ;;
-        -r|--release)
-            shift
-            RELEASE=$1
-            ;;
-        -t|--target)
-            shift
-            TARGET=$1
-            ;;
-        -v|--version)
-            einfo "$PN - version $VERSION"
-            einfo "Send bug reports to bugs@grml.org or http://grml.org/bugs/"
-            eend 0
-            exit 0
-            ;;
-        *)
-            eerror "Syntax error."
-            usage ; eend 1
-            exit 1
-            ;;
-    esac
-    shift
-done
+# source external command line parameter-processing script
+. $prog_real.clp
 # }}}
 
 # welcome screen {{{
 # }}}
 
 # welcome screen {{{
diff --git a/grml-debootstrap.clp b/grml-debootstrap.clp
new file mode 100644 (file)
index 0000000..3dec6d9
--- /dev/null
@@ -0,0 +1,122 @@
+# -*- shell-script -*-
+
+#
+# shell script command line parameter-processing for:
+#
+# grml-debootstrap - wrapper around debootstrap for installing plain Debian via
+# grml
+#
+# @Author:  Tong SUN
+# @Release: $Revision: $, under the BSD license
+# @HomeURL: http://xpt.sourceforge.net/
+#
+
+
+eval set -- `getopt \
+  -o +m:i:r:t:p:c:hv --long \
+    mirror:,iso:,release:,target:,mntpoint:,debopt:,interactive,config:,packages::,debconf::,keep_src_list,hostname:,password:,bootappend:,groot:,grub:,help,version \
+  -- "$@"`
+
+while :; do
+  case "$1" in
+
+  # == Bootstrap options
+  --mirror|-m)         # Mirror which should be used for apt-get/aptitude.
+    shift; _opt_mirror="$1"
+    ;;
+  --iso|-i)            # Mountpoint where a Debian ISO is mounted to, for use instead
+    shift; _opt_iso="$1"
+    ;;
+  --release|-r)        # Release of new Debian system (default: stable).
+    shift; _opt_release="$1"
+    ;;
+  --target|-t)         # Target partition (/dev/...) or directory.
+    shift; _opt_target="$1"
+    ;;
+  --mntpoint|-p)       # Mountpoint used for mounting the target system.
+    shift; _opt_mntpoint="$1"
+    ;;
+  --debopt)            # Extra parameters passed to the debootstrap.
+    shift; _opt_debopt="$1"
+    ;;
+  --interactive)       # Use interactive mode (frontend).
+    _opt_interactive=T
+    ;;
+  #
+
+  # == Configuration options
+  --config|-c)         # Use specified configuration file, defaults to /etc/debootstr
+    shift; _opt_config="$1"
+    ;;
+  --packages)          # Install packages defined in /etc/debootstrap/packages. Optio
+    shift; _opt_packages="$1"
+    _opt_packages_set=T
+    ;;
+  --debconf)           # Pre-seed packages using /etc/debootstrap/debconf-selections.
+    shift; _opt_debconf="$1"
+    _opt_debconf_set=T
+    ;;
+  --keep_src_list)     # Do not overwrite user provided apt sources.list.
+    _opt_keep_src_list=T
+    ;;
+  --hostname)          # Hostname of Debian system.
+    shift; _opt_hostname="$1"
+    ;;
+  --password)          # Use specified password as password for user root.
+    shift; _opt_password="$1"
+    ;;
+  #
+  --bootappend)        # Add specified appendline to kernel whilst booting.
+    shift; _opt_bootappend="$1"
+    ;;
+  --groot)             # Root device for usage in grub, corresponds with $TARGET in g
+    shift; _opt_groot="$1"
+    ;;
+  --grub)              # Target for grub installation. Use grub syntax for specifying
+    shift; _opt_grub="$1"
+    ;;
+
+  # == Other options
+  --help|-h)           # Print this usage information and exit.
+    _opt_help=T
+    ;;
+  --version|-v)        # Show summary of options and exit.
+    _opt_version=T
+    ;;
+  --)
+    shift; break
+    ;;
+  *)
+    eerror "Internal getopt error!"; eend 1 ; exit 1
+    ;;
+  esac
+  shift
+done
+
+
+[ "$_opt_debug" ] && {
+  echo "[grml-debootstrap] debug: _opt_mirror=$_opt_mirror"
+  echo "[grml-debootstrap] debug: _opt_iso=$_opt_iso"
+  echo "[grml-debootstrap] debug: _opt_release=$_opt_release"
+  echo "[grml-debootstrap] debug: _opt_target=$_opt_target"
+  echo "[grml-debootstrap] debug: _opt_mntpoint=$_opt_mntpoint"
+  echo "[grml-debootstrap] debug: _opt_debopt=$_opt_debopt"
+  echo "[grml-debootstrap] debug: _opt_interactive=$_opt_interactive"
+  echo "[grml-debootstrap] debug: _opt_config=$_opt_config"
+  echo "[grml-debootstrap] debug: _opt_packages=$_opt_packages"
+  echo "[grml-debootstrap] debug: _opt_debconf=$_opt_debconf"
+  echo "[grml-debootstrap] debug: _opt_keep_src_list=$_opt_keep_src_list"
+  echo "[grml-debootstrap] debug: _opt_hostname=$_opt_hostname"
+  echo "[grml-debootstrap] debug: _opt_password=$_opt_password"
+  echo "[grml-debootstrap] debug: _opt_bootappend=$_opt_bootappend"
+  echo "[grml-debootstrap] debug: _opt_groot=$_opt_groot"
+  echo "[grml-debootstrap] debug: _opt_grub=$_opt_grub"
+  echo "[grml-debootstrap] debug: _opt_help=$_opt_help"
+  echo "[grml-debootstrap] debug: _opt_version=$_opt_version"
+}
+
+if [ "$_opt_check_failed" ]; then
+  eerror "Not all mandatory options are set."; eend 1 ; exit 1
+fi
+
+# End