Release new version 0.9.45
[grml-autoconfig.git] / sbin / grml-autoconfig
1 #!/bin/bash
2 # Filename:      grml-autoconfig
3 # Purpose:       configuration interface for grml-autoconfig
4 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika(at)grml.org>
5 # Bug-Reports:   see http://grml.org/bugs/
6 # License:       This file is licensed under the GPL v2.
7 ################################################################################
8
9 if [ $(id -u) != 0 ] ; then
10   echo "Error: please run this script with uid 0 (root)." ; exit 1
11 fi
12
13 LANG=C
14 LC_ALL=C
15 PN="$(basename $0)"
16 TMPFILE="$(mktemp)"
17
18 AUTOCONFIG=/etc/grml/autoconfig
19 [ -r $AUTOCONFIG ] || exit 1
20
21 . $AUTOCONFIG
22
23 # helper functions
24 activate_value()
25 {
26   check_entry $1
27   sed -i "s/$1.*/$1'yes'/" ${CONFIG_AUTOCONFIG_LOCAL}
28 }
29
30 deactivate_value()
31 {
32   check_entry $1
33   sed -i "s/$1.*/$1'no'/" ${CONFIG_AUTOCONFIG_LOCAL}
34 }
35
36 check_setting()
37 {
38   grep -q $* $TMPFILE && return 0 || return 1
39 }
40
41 check_entry()
42 {
43   if ! grep -q ${1} ${CONFIG_AUTOCONFIG_LOCAL} 2>/dev/null ; then
44     grep $1 ${AUTOCONFIG} >> ${CONFIG_AUTOCONFIG_LOCAL}
45   fi
46 }
47
48 is_set()
49 {
50     [ $1 = 'yes' ] && return 0 || return 1
51 }
52 check_current_state()
53 {
54   is_set $CONFIG_FSTAB      && FSTABSTATUS=ON    || FSTABSTATUS=OFF
55   is_set $CONFIG_CPU        && CPUSTATUS=ON      || CPUSTATUS=OFF
56   is_set $CONFIG_ACPI       && ACPISTATUS=ON     || ACPISTATUS=OFF
57   is_set $CONFIG_SYSLOG     && SYSLOGSTATUS=ON   || SYSLOGSTATUS=OFF
58   is_set $CONFIG_GPM        && GPMSTATUS=ON      || GPMSTATUS=OFF
59 }
60
61 # main program
62 interface()
63 {
64   dialog --cr-wrap --clear --cancel-label "Exit" --title "$PN" --checklist \
65 "grml-autoconfig is the framework which includes hardware
66 detection, activation of system services. This is the
67 interface to activate or deactivate some features.
68
69 If you do not know what to do at this stage just leave it untouched.
70
71 All the configuration happens in the file /etc/grml/autoconfig.local -
72 you can edit the file manually as well.
73
74 Please do not confuse these settings with plain Debian configuration.
75 For example disabling dhcp here will NOT deactivate any configured network
76 settings in /etc/network/interfaces, it just configures grml-autoconfig
77 " 0 0 0 \
78 fstab "update /etc/fstab entries (check for devices)" $FSTABSTATUS \
79 cpufreq "activate cpu frequency scaling" $CPUSTATUS \
80 acpi "load ACPI modules" $ACPISTATUS \
81 syslog "start syslog-ng" $SYSLOGSTATUS \
82 gpm "start GPM (mouse on console)" $GPMSTATUS \
83   2>$TMPFILE
84 }
85
86 set_values()
87 {
88   check_setting fstab     && activate_value CONFIG_FSTAB=    || deactivate_value CONFIG_FSTAB=
89   check_setting cpufreq   && activate_value CONFIG_CPU=      || deactivate_value CONFIG_CPU=
90   check_setting acpi      && activate_value CONFIG_ACPI=     || deactivate_value CONFIG_ACPI=
91   check_setting syslog    && activate_value CONFIG_SYSLOG=   || deactivate_value CONFIG_SYSLOG=
92   check_setting gpm       && activate_value CONFIG_GPM=      || deactivate_value CONFIG_GPM=
93 }
94
95 # and now run it:
96   check_current_state
97   interface
98   retval=$?
99   case $retval in
100    0)
101     set_values && dialog --stdout --title "${PN}" --msgbox "Adjusting values via grml-autoconfig was successful!" 5 60 || \
102     dialog --stdout --title "${PN}" --msgbox "There was an error adjusting values via grml-autoconfig. Sorry." 5 60
103     rm -f $TMPFILE &>/dev/null
104     ;;
105    1)
106     echo "Exit pressed."
107     ;;
108    255)
109     echo "ESC pressed."
110     exit 1
111     ;;
112   esac
113
114 ## END OF FILE #################################################################