Release new version 0.11.4
[grml-autoconfig.git] / sbin / grml-autoconfig
index 02a655f..e2147a7 100755 (executable)
@@ -1,34 +1,36 @@
-#!/bin/sh
+#!/bin/bash
 # Filename:      grml-autoconfig
 # Purpose:       configuration interface for grml-autoconfig
 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika(at)grml.org>
 # Bug-Reports:   see http://grml.org/bugs/
 # License:       This file is licensed under the GPL v2.
-# Latest change: Die Sep 26 12:26:05 CEST 2006 [mika]
 ################################################################################
 
-if [ "$UID" != 0 ];  then
+if [ $(id -u) != 0 ] ; then
   echo "Error: please run this script with uid 0 (root)." ; exit 1
 fi
 
 LANG=C
 LC_ALL=C
-PN=`basename "$0"`
-TMPFILE=`mktemp`
-
-grep -q small /etc/grml_version 2>/dev/null && AUTOCONFIG=/etc/grml/autoconfig.small || AUTOCONFIG=/etc/grml/autoconfig
+PN="$(basename $0)"
+TMPFILE="$(mktemp)"
 
+AUTOCONFIG=/etc/grml/autoconfig
 [ -r $AUTOCONFIG ] || exit 1
 
+. $AUTOCONFIG
+
 # helper functions
 activate_value()
 {
-  sed -i "s/$1.*/$1='yes'/" $AUTOCONFIG
+  check_entry $1
+  sed -i "s/$1.*/$1'yes'/" ${CONFIG_AUTOCONFIG_LOCAL}
 }
 
 deactivate_value()
 {
-  sed -i "s/$1.*/$1='no'/" $AUTOCONFIG
+  check_entry $1
+  sed -i "s/$1.*/$1'no'/" ${CONFIG_AUTOCONFIG_LOCAL}
 }
 
 check_setting()
@@ -36,58 +38,58 @@ check_setting()
   grep -q $* $TMPFILE && return 0 || return 1
 }
 
+check_entry()
+{
+  if ! grep -q ${1} ${CONFIG_AUTOCONFIG_LOCAL} 2>/dev/null ; then
+    grep $1 ${AUTOCONFIG} >> ${CONFIG_AUTOCONFIG_LOCAL}
+  fi
+}
+
+is_set()
+{
+    [ $1 = 'yes' ] && return 0 || return 1
+}
 check_current_state()
 {
-  grep -q '^CONFIG_DHCP=.*yes'     $AUTOCONFIG && DHCPSTATUS=ON     || DHCPSTATUS=OFF
-  grep -q '^CONFIG_ACPI_APM=.*yes' $AUTOCONFIG && ACPI_APMSTATUS=ON || ACPI_APMSTATUS=OFF
-  grep -q '^CONFIG_CPU=.*yes'      $AUTOCONFIG && CPUSTATUS=ON      || CPUSTATUS=OFF
-  grep -q '^CONFIG_SYSLOG=.*yes'   $AUTOCONFIG && SYSLOGSTATUS=ON   || SYSLOGSTATUS=OFF
-  grep -q '^CONFIG_GPM=.*yes'      $AUTOCONFIG && GPMSTATUS=ON      || GPMSTATUS=OFF
-  grep -q '^CONFIG_KERNEL=.*yes'   $AUTOCONFIG && KERNELSTATUS=ON   || KERNELSTATUS=OFF
-  grep -q '^CONFIG_FSTAB=.*yes'    $AUTOCONFIG && FSTABSTATUS=ON    || FSTABSTATUS=OFF
-  grep -q '^CONFIG_LANGUAGE=.*yes' $AUTOCONFIG && LANGUAGESTATUS=ON || LANGUAGESTATUS=OFF
-  grep -q '^CONFIG_DMA=.*yes'      $AUTOCONFIG && DMASTATUS=ON      || DMASTATUS=OFF
-  grep -q '^CONFIG_MIXER=.*yes'    $AUTOCONFIG && MIXERSTATUS=ON    || MIXERSTATUS=OFF
+  is_set $CONFIG_FSTAB      && FSTABSTATUS=ON    || FSTABSTATUS=OFF
+  is_set $CONFIG_CPU        && CPUSTATUS=ON      || CPUSTATUS=OFF
+  is_set $CONFIG_ACPI       && ACPISTATUS=ON     || ACPISTATUS=OFF
+  is_set $CONFIG_SYSLOG     && SYSLOGSTATUS=ON   || SYSLOGSTATUS=OFF
+  is_set $CONFIG_GPM        && GPMSTATUS=ON      || GPMSTATUS=OFF
 }
 
 # main program
 interface()
 {
-  dialog --cr-wrap --clear --cancel-label "Exit" --title "$PN" --checklist "grml-autoconfig is the framework which includes hardware
-detection, activation of system services and this is the
+  dialog --cr-wrap --clear --cancel-label "Exit" --title "$PN" --checklist \
+"grml-autoconfig is the framework which includes hardware
+detection, activation of system services. This is the
 interface to activate or deactivate some features.
 
-If you do not know what to do at this stage just leave it untouched,
-the defaults are the recommended values.
+If you do not know what to do at this stage just leave it untouched.
+
+All the configuration happens in the file /etc/grml/autoconfig.local -
+you can edit the file manually as well.
 
-All the configuration happens in the file /etc/grml/autoconfig - you can
-edit it manually as well.
+Please do not confuse these settings with plain Debian configuration.
+For example disabling dhcp here will NOT deactivate any configured network
+settings in /etc/network/interfaces, it just configures grml-autoconfig
 " 0 0 0 \
-dhcp "check for network devices and run pump (get ip-address via DHCP)" $DHCPSTATUS \
-acpi_apm "load ACPI/APM modules" $ACPI_APMSTATUS \
-cpufreq "activate cpydyn/powernowd for frequency-scalable CPUs" $CPUSTATUS \
+fstab "update /etc/fstab entries (check for devices)" $FSTABSTATUS \
+cpufreq "activate cpu frequency scaling" $CPUSTATUS \
+acpi "load ACPI modules" $ACPISTATUS \
 syslog "start syslog-ng" $SYSLOGSTATUS \
 gpm "start GPM (mouse on console)" $GPMSTATUS \
-kernel "display information on running kernel" $KERNELSTATUS \
-fstab "update /etc/fstab entries (check for devices)" $FSTABSTATUS \
-language "run loadkeys / consolechars" $LANGUAGESTATUS \
-dma "enable DMA for all IDE drives" $DMASTATUS \
-mixer "set audio volumes" $MIXERSTATUS \
   2>$TMPFILE
 }
 
 set_values()
 {
-  check_setting dhcp        && activate_value CONFIG_DHCP         || deactivate_value CONFIG_DHCP
-  check_setting acpi_apm    && activate_value CONFIG_ACPI_APM     || deactivate_value CONFIG_ACPI_APM
-  check_setting cpufreq     && activate_value CONFIG_CPU          || deactivate_value CONFIG_CPU
-  check_setting syslog      && activate_value CONFIG_SYSLOG       || deactivate_value CONFIG_SYSLOG
-  check_setting gpm         && activate_value CONFIG_GPM          || deactivate_value CONFIG_GPM
-  check_setting kernel      && activate_value CONFIG_KERNEL       || deactivate_value CONFIG_KERNEL
-  check_setting fstab       && activate_value CONFIG_FSTAB        || deactivate_value CONFIG_FSTAB
-  check_setting language    && activate_value CONFIG_LANGUAGE     || deactivate_value CONFIG_LANGUAGE
-  check_setting dma         && activate_value CONFIG_DMA          || deactivate_value CONFIG_DMA
-  check_setting mixer       && activate_value CONFIG_MIXER        || deactivate_value CONFIG_MIXER
+  check_setting fstab     && activate_value CONFIG_FSTAB=    || deactivate_value CONFIG_FSTAB=
+  check_setting cpufreq   && activate_value CONFIG_CPU=      || deactivate_value CONFIG_CPU=
+  check_setting acpi      && activate_value CONFIG_ACPI=     || deactivate_value CONFIG_ACPI=
+  check_setting syslog    && activate_value CONFIG_SYSLOG=   || deactivate_value CONFIG_SYSLOG=
+  check_setting gpm       && activate_value CONFIG_GPM=      || deactivate_value CONFIG_GPM=
 }
 
 # and now run it: