Re-think the confdir logic
[grml-debootstrap.git] / grml-debootstrap
index cc19118..908aad9 100755 (executable)
@@ -51,11 +51,12 @@ Configuration options:
 
   -c, --config=file      Use specified configuration file, defaults to
                            /etc/debootstrap/config
-      --packages[=f]     Install packages defined in /etc/debootstrap/packages.
-                           Option arg: alternative package list file.
-      --debconf[=f]      Pre-seed packages using
-                           /etc/debootstrap/debconf-selections. Option arg:
-                           alternative preseed db file.
+  -d, --confdir=path     Place of config files for debootstrap, defaults to
+                           /etc/debootstrap
+      --packages[=f]     Install packages defined in <confdir>/packages. Option
+                           arg: alternative package list file.
+      --debconf[=f]      Pre-seed packages using <confdir>/debconf-selections.
+                           Option arg: alternative pre-seed db file.
       --keep_src_list    Do not overwrite user provided apt sources.list.
       --hostname=name    Hostname of Debian system.
       --password=pwd     Use specified password as password for user root.
@@ -103,6 +104,20 @@ fi
 # source external command line parameter-processing script
 . $prog_real.clp
 
+# == business-logic of command line parameter-processing
+
+# source configuration file in <confdir> if supplied. {{{
+[ "$_opt_confdir" ] && {
+  CONFFILES=$_opt_confdir
+  if ! [ -r "$CONFFILES/config" ] ; then
+    eerror "Error: config file $CONFFILES/config not found."; eend 1; exit 1
+  fi
+  if ! . "$CONFFILES/config" ; then
+    eerror "Error reading config file $CONFFILES/config" ; eend 1 ; exit 1
+  fi
+}
+# }}}
+
 [ "$_opt_mirror" ]             && MIRROR=$_opt_mirror
 [ "$_opt_iso" ]                        && ISO=$_opt_iso
 [ "$_opt_release" ]            && RELEASE=$_opt_release
@@ -720,9 +735,11 @@ preparechroot() {
   sed -i "s#GRUB=.*#GRUB=\"$GRUB\"#"          $MNTPOINT/etc/debootstrap/config
   sed -i "s#GROOT=.*#GROOT=\"$GROOT\"#"       $MNTPOINT/etc/debootstrap/config
 
-  cp /etc/debootstrap/packages  $MNTPOINT/etc/debootstrap/packages
-  [ -f /etc/debootstrap/debconf-selections -a "$DEBCONF" = 'yes' ] && \
-    cp /etc/debootstrap/debconf-selections $MNTPOINT/etc/debootstrap/
+  cp ${_opt_packages:-/etc/debootstrap/packages} \
+    $MNTPOINT/etc/debootstrap/packages
+  _opt_debconf=${_opt_debconf:-/etc/debootstrap/debconf-selections}
+  [ -f $_opt_debconf -a "$DEBCONF" = 'yes' ] && \
+    cp $_opt_debconf $MNTPOINT/etc/debootstrap/debconf-selections
 
   # notice: do NOT use $CHROOT_VARIABLES inside chroot but statically file instead!
   cp $CHROOT_VARIABLES          $MNTPOINT/etc/debootstrap/variables