From afa57d77c03e44bee59fbf41754a53833c902ce3 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Thu, 29 Mar 2012 11:43:10 +0200 Subject: Add a configuration file upgrade script This isn't ready for distribution but allows users of the -git version of calcurse to easily update their configuration files without having to edit them manually. Following things are still missing here: * A command line parameter to specify a custom data directory. * A backup file that is created automatically before upgrading. * Debug output. Signed-off-by: Lukas Fleischer --- Makefile.am | 2 +- configure.ac | 4 +-- scripts/Makefile.am | 3 +++ scripts/calcurse-upgrade | 67 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 scripts/Makefile.am create mode 100644 scripts/calcurse-upgrade diff --git a/Makefile.am b/Makefile.am index b36524d..8e7e1b0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,7 +2,7 @@ AUTOMAKE_OPTIONS= foreign ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = po src test +SUBDIRS = po src test scripts if ENABLE_DOCS SUBDIRS += doc diff --git a/configure.ac b/configure.ac index 0500722..33b72ca 100644 --- a/configure.ac +++ b/configure.ac @@ -145,8 +145,8 @@ AM_XGETTEXT_OPTION([--no-location --keyword=_ --keyword=N_]) #------------------------------------------------------------------------------- # Create Makefiles #------------------------------------------------------------------------------- -AC_OUTPUT(Makefile doc/Makefile src/Makefile test/Makefile po/Makefile.in \ - po/Makefile) +AC_OUTPUT(Makefile doc/Makefile src/Makefile test/Makefile scripts/Makefile \ + po/Makefile.in po/Makefile) #------------------------------------------------------------------------------- # Summary #------------------------------------------------------------------------------- diff --git a/scripts/Makefile.am b/scripts/Makefile.am new file mode 100644 index 0000000..408de30 --- /dev/null +++ b/scripts/Makefile.am @@ -0,0 +1,3 @@ +AUTOMAKE_OPTIONS = foreign + +dist_bin_SCRIPTS = calcurse-upgrade diff --git a/scripts/calcurse-upgrade b/scripts/calcurse-upgrade new file mode 100644 index 0000000..c7e9691 --- /dev/null +++ b/scripts/calcurse-upgrade @@ -0,0 +1,67 @@ +#!/bin/sh + +CONFFILE=$HOME/.calcurse/conf + +if grep -q -e '^auto_save=' -e '^auto_gc=' -e '^periodic_save=' \ + -e '^confirm_quit=' -e '^confirm_delete=' -e '^skip_system_dialogs=' \ + -e '^skip_progress_bar=' -e '^calendar_default_view=' \ + -e '^week_begins_on_monday=' -e '^color-theme=' -e '^layout=' \ + -e '^side-bar_width=' -e '^notify-bar_show=' -e '^notify-bar_date=' \ + -e '^notify-bar_clock=' -e '^notify-bar_warning=' -e '^notify-bar_command=' \ + -e '^notify-all=' -e '^output_datefmt=' -e '^input_datefmt=' \ + -e '^notify-daemon_enable=' -e '^notify-daemon_log=' "$CONFFILE"; then + + tmpfile="${TMPDIR:-/tmp}/calcurse-upgrade.$!" + [ -e "$tmpfile" ] && exit 1 + + sed -e 's/^auto_save=/general.autosave=/' \ + -e 's/^auto_gc=/general.autogc=/' \ + -e 's/^periodic_save=/general.periodicsave=/' \ + -e 's/^confirm_quit=/general.confirmquit=/' \ + -e 's/^confirm_delete=/general.confirmdelete=/' \ + -e 's/^skip_system_dialogs=/general.systemdialogs=/' \ + -e 's/^skip_progress_bar=/general.progressbar=/' \ + -e 's/^calendar_default_view=/appearance.calendarview=/' \ + -e 's/^week_begins_on_monday=/general.firstdayofweek=/' \ + -e 's/^color-theme=/appearance.theme=/' \ + -e 's/^layout=/appearance.layout=/' \ + -e 's/^side-bar_width=/appearance.sidebarwidth=/' \ + -e 's/^notify-bar_show=/appearance.notifybar=/' \ + -e 's/^notify-bar_date=/format.notifydate=/' \ + -e 's/^notify-bar_clock=/format.notifytime=/' \ + -e 's/^notify-bar_warning=/notification.warning=/' \ + -e 's/^notify-bar_command=/notification.command=/' \ + -e 's/^notify-all=/notification.notifyall=/' \ + -e 's/^output_datefmt=/format.outputdate=/' \ + -e 's/^input_datefmt=/format.inputdate=/' \ + -e 's/^notify-daemon_enable=/daemon.enable=/' \ + -e 's/^notify-daemon_log=/daemon.log=/' "$CONFFILE" > "$tmpfile" || exit 1 + mv "$tmpfile" "$CONFFILE" || exit 1 + + if grep -q -e '^[^#=][^#=]*$' -e '^[^#=][^#=]*#.*$' "$CONFFILE"; then + sed -e '/^general.autosave=/{N;s/\n//}' \ + -e '/^general.autogc=/{N;s/\n//}' \ + -e '/^general.periodicsave=/{N;s/\n//}' \ + -e '/^general.confirmquit=/{N;s/\n//}' \ + -e '/^general.confirmdelete=/{N;s/\n//}' \ + -e '/^general.systemdialogs=/{N;s/\n//}' \ + -e '/^general.progressbar=/{N;s/\n//}' \ + -e '/^appearance.calendarview=/{N;s/\n//}' \ + -e '/^general.firstdayofweek=/{N;s/\n//}' \ + -e '/^appearance.theme=/{N;s/\n//}' \ + -e '/^appearance.layout=/{N;s/\n//}' \ + -e '/^appearance.sidebarwidth=/{N;s/\n//}' \ + -e '/^appearance.notifybar=/{N;s/\n//}' \ + -e '/^format.notifydate=/{N;s/\n//}' \ + -e '/^format.notifytime=/{N;s/\n//}' \ + -e '/^notification.warning=/{N;s/\n//}' \ + -e '/^notification.command=/{N;s/\n//}' \ + -e '/^notification.notifyall=/{N;s/\n//}' \ + -e '/^format.outputdate=/{N;s/\n//}' \ + -e '/^format.inputdate=/{N;s/\n//}' \ + -e '/^daemon.enable=/{N;s/\n//}' \ + -e '/^daemon.log=/{N;s/\n//}' "$CONFFILE" > "$tmpfile" || exit 1 + mv "$tmpfile" "$CONFFILE" || exit 1 + fi +fi + -- cgit v1.2.3-54-g00ecf