From 9be3a9c1f09448652e7b91e6722968ac79f5aa4d Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Fri, 1 Jun 2012 14:14:19 +0200 Subject: scripts/: Add support for placeholders Allow for specifying placeholders in shell scripts that are replaced during build time. Predefine a "@PACKAGE_VERSION@" placeholder that is replaced with the current version number. Also, rename all shell scripts to ".sh.in". Signed-off-by: Lukas Fleischer --- po/POTFILES.in | 2 +- scripts/Makefile.am | 12 ++- scripts/calcurse-upgrade.sh | 170 ----------------------------------------- scripts/calcurse-upgrade.sh.in | 170 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 180 insertions(+), 174 deletions(-) delete mode 100644 scripts/calcurse-upgrade.sh create mode 100644 scripts/calcurse-upgrade.sh.in diff --git a/po/POTFILES.in b/po/POTFILES.in index 2219c3d..6b3969a 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -27,4 +27,4 @@ src/utils.c src/vars.c src/wins.c -scripts/calcurse-upgrade.sh +scripts/calcurse-upgrade.sh.in diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 5502cfd..fc0b83b 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -4,10 +4,16 @@ dist_bin_SCRIPTS = \ calcurse-upgrade EXTRA_DIST = \ - calcurse-upgrade.sh + calcurse-upgrade.sh.in CLEANFILES = \ calcurse-upgrade -calcurse-upgrade: calcurse-upgrade.sh - $(AM_V_GEN) $(INSTALL) $< $@ +edit = sed \ + -e 's|@PACKAGE_VERSION[@]|$(PACKAGE_VERSION)|g' + +calcurse-upgrade: calcurse-upgrade.sh.in + $(AM_V_at)$(RM) "$@" + $(AM_V_GEN)$(edit) <"$(srcdir)/$<" >"$@" + $(AM_V_at)chmod +x "$@" + $(AM_V_at)chmod a-w "$@" diff --git a/scripts/calcurse-upgrade.sh b/scripts/calcurse-upgrade.sh deleted file mode 100644 index bf3f92e..0000000 --- a/scripts/calcurse-upgrade.sh +++ /dev/null @@ -1,170 +0,0 @@ -#!/bin/sh - -export TEXTDOMAIN='calcurse' - -set -e - -CONFFILE=$HOME/.calcurse/conf - -if [ "$#" -gt 0 ]; then - if [ "$1" = "--config" ]; then - CONFFILE=$2 - else - echo "$(gettext "unrecognized option:") \"$1\"" >&2 - exit 1 - fi -fi - -if [ ! -e "$CONFFILE" ]; then - echo "$(gettext "Configuration file not found:") $CONFFILE" >&2 - exit 1 -fi - -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 - - echo "$(gettext "Pre-3.0.0 configuration file format detected...")" - - tmpfile="${TMPDIR:-/tmp}/calcurse-upgrade.$!" - [ -e "$tmpfile" ] && exit 1 - - echo -n "$(gettext "Upgrade configuration directives...")" - - 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" - mv "$tmpfile" "$CONFFILE" - - if grep -q -e '^[^#=][^#=]*$' -e '^[^#=][^#=]*#.*$' "$CONFFILE"; then - sed ' - /^general.autosave=/{ - N - s/\n// - } - /^general.autogc=/{ - N - s/\n// - } - /^general.periodicsave=/{ - N - s/\n// - } - /^general.confirmquit=/{ - N - s/\n// - } - /^general.confirmdelete=/{ - N - s/\n// - } - /^general.systemdialogs=/{ - N - s/\n// - } - /^general.progressbar=/{ - N - s/\n// - } - /^appearance.calendarview=/{ - N - s/\n// - } - /^general.firstdayofweek=/{ - N - s/\n// - } - /^appearance.theme=/{ - N - s/\n// - } - /^appearance.layout=/{ - N - s/\n// - } - /^appearance.sidebarwidth=/{ - N - s/\n// - } - /^appearance.notifybar=/{ - N - s/\n// - } - /^format.notifydate=/{ - N - s/\n// - } - /^format.notifytime=/{ - N - s/\n// - } - /^notification.warning=/{ - N - s/\n// - } - /^notification.command=/{ - N - s/\n// - } - /^notification.notifyall=/{ - N - s/\n// - } - /^format.outputdate=/{ - N - s/\n// - } - /^format.inputdate=/{ - N - s/\n// - } - /^daemon.enable=/{ - N - s/\n// - } - /^daemon.log=/{ - N - s/\n// - }' "$CONFFILE" > "$tmpfile" - mv "$tmpfile" "$CONFFILE" - fi - - awk ' - BEGIN { FS=OFS="=" } - $1 == "general.systemdialogs" || $1 == "general.progressbar" \ - { $2 = ($2 == "yes") ? "no" : "yes" } - $1 == "general.firstdayofweek" { $2 = ($2 == "yes") ? "monday" : "sunday" } - $1 == "appearance.calendarview" { $2 = ($2 == 0) ? "monthly" : \ - ($2 == 1) ? "weekly" : $2 } - { print } - ' < "$CONFFILE" > "$tmpfile" - mv "$tmpfile" "$CONFFILE" - - echo -n ' ' - echo "$(gettext 'done')" -fi - diff --git a/scripts/calcurse-upgrade.sh.in b/scripts/calcurse-upgrade.sh.in new file mode 100644 index 0000000..bf3f92e --- /dev/null +++ b/scripts/calcurse-upgrade.sh.in @@ -0,0 +1,170 @@ +#!/bin/sh + +export TEXTDOMAIN='calcurse' + +set -e + +CONFFILE=$HOME/.calcurse/conf + +if [ "$#" -gt 0 ]; then + if [ "$1" = "--config" ]; then + CONFFILE=$2 + else + echo "$(gettext "unrecognized option:") \"$1\"" >&2 + exit 1 + fi +fi + +if [ ! -e "$CONFFILE" ]; then + echo "$(gettext "Configuration file not found:") $CONFFILE" >&2 + exit 1 +fi + +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 + + echo "$(gettext "Pre-3.0.0 configuration file format detected...")" + + tmpfile="${TMPDIR:-/tmp}/calcurse-upgrade.$!" + [ -e "$tmpfile" ] && exit 1 + + echo -n "$(gettext "Upgrade configuration directives...")" + + 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" + mv "$tmpfile" "$CONFFILE" + + if grep -q -e '^[^#=][^#=]*$' -e '^[^#=][^#=]*#.*$' "$CONFFILE"; then + sed ' + /^general.autosave=/{ + N + s/\n// + } + /^general.autogc=/{ + N + s/\n// + } + /^general.periodicsave=/{ + N + s/\n// + } + /^general.confirmquit=/{ + N + s/\n// + } + /^general.confirmdelete=/{ + N + s/\n// + } + /^general.systemdialogs=/{ + N + s/\n// + } + /^general.progressbar=/{ + N + s/\n// + } + /^appearance.calendarview=/{ + N + s/\n// + } + /^general.firstdayofweek=/{ + N + s/\n// + } + /^appearance.theme=/{ + N + s/\n// + } + /^appearance.layout=/{ + N + s/\n// + } + /^appearance.sidebarwidth=/{ + N + s/\n// + } + /^appearance.notifybar=/{ + N + s/\n// + } + /^format.notifydate=/{ + N + s/\n// + } + /^format.notifytime=/{ + N + s/\n// + } + /^notification.warning=/{ + N + s/\n// + } + /^notification.command=/{ + N + s/\n// + } + /^notification.notifyall=/{ + N + s/\n// + } + /^format.outputdate=/{ + N + s/\n// + } + /^format.inputdate=/{ + N + s/\n// + } + /^daemon.enable=/{ + N + s/\n// + } + /^daemon.log=/{ + N + s/\n// + }' "$CONFFILE" > "$tmpfile" + mv "$tmpfile" "$CONFFILE" + fi + + awk ' + BEGIN { FS=OFS="=" } + $1 == "general.systemdialogs" || $1 == "general.progressbar" \ + { $2 = ($2 == "yes") ? "no" : "yes" } + $1 == "general.firstdayofweek" { $2 = ($2 == "yes") ? "monday" : "sunday" } + $1 == "appearance.calendarview" { $2 = ($2 == 0) ? "monthly" : \ + ($2 == 1) ? "weekly" : $2 } + { print } + ' < "$CONFFILE" > "$tmpfile" + mv "$tmpfile" "$CONFFILE" + + echo -n ' ' + echo "$(gettext 'done')" +fi + -- cgit v1.2.3-70-g09d2