Move upgrade script to separate file. Add framework to support future upgrades.
--- a/Makefile Sun Mar 13 13:56:48 2016 +0200
+++ b/Makefile Sun Mar 13 14:06:08 2016 +0200
@@ -6,7 +6,7 @@
################################################################
# Standard Makefile settings.
-SHELL = /bin/sh
+SHELL = /bin/bash
export PATH := /bin:/usr/bin:${PATH}
# Disable built in pattern rules.
@@ -95,8 +95,8 @@
fi
read ver <$(COMPAT_FILE); if [ "$$ver" -ne $(COMPAT_VER) ]; then echo "*** "Run '"make upgrade"' first" ***"; exit 1; fi
-.PHONY: check-upgrade-comapt
-check-upgrade-comapt:
+.PHONY: upgrade
+upgrade:
\
if [ -f $(COMPAT_FILE) ]; then \
read ver <$(COMPAT_FILE); \
@@ -104,27 +104,13 @@
echo "*** "Project is too old, downgrade is not possible..." ***"; \
exit 1; \
fi; \
-fi
-
-.PHONY: upgrade
-upgrade: check-upgrade-comapt
- \
-mkdir -p $(mylispdir); \
-rm -f $(emacsdir)/autoload-my.el; \
-rm -f ~/.emacs; \
-[ -d $(emacsdir)/my-lisp ] && mv $(emacsdir)/my-lisp $(mylispdir); \
-for f in .emacs-my .emacs-custom.el .emacs-pre .emacs-post .emacs-places .emacs.desktop .emacs-places .emacs-autogen .ido.last .recentf; do \
- if [ -f ~/$$f ]; then [ -f $(emacsdir)/$$f ] && mv ~/$$f $(emacsdir)/$$f.1 || mv ~/$$f $(emacsdir); fi; \
- if [ -f $(mylispdir)/$$f ]; then [ -f $(emacsdir)/$$f ] && mv $(mylispdir)/$$f $(emacsdir)/$$f.2 || mv $(mylispdir)/$$f $(emacsdir); fi; \
-done; \
-for f in `find $(mylispdir) -maxdepth 1 -type f -name '.emacs?*'`; do \
- fn=$${f##*/}; \
- [ -f $(emacsdir)/$$fn ] && mv $$f $(emacsdir)/$$fn.3 || mv $$f $(emacsdir); \
-done; \
-if [ -f ~/.emacs.bmk ]; then [ -f $(emacsdir)/bookmarks ] && mv ~/.emacs.bmk $(emacsdir)/bookmarks.$$$$ || mv ~/.emacs.bmk $(emacsdir)/bookmarks; fi; \
-if [ -f $(emacsdir)/.emacs.bmk ]; then [ -f $(emacsdir)/bookmarks ] && mv $(emacsdir)/.emacs.bmk $(emacsdir)/bookmarks.$$$$ || mv $(emacsdir)/.emacs.bmk $(emacsdir)/bookmarks; fi; \
-echo $(COMPAT_VER) >$(COMPAT_FILE); \
-make install
+else \
+ ver=0; \
+fi; \
+for ((i=ver+1; i <= $(COMPAT_VER); i++)); do \
+ $(SHELL) upgrade/$$i.bash $(emacsdir); \
+done
+ make install
.PHONY: install-all
install-all: install
@@ -138,6 +124,7 @@
.PHONY: install
install: check-install-comapt
mkdir -p $(mylispdir)
+ echo $(COMPAT_VER) >$(COMPAT_FILE)
$(cleanup_mylispdir)
for file in .emacs-pre .emacs-post; do \
[ -f $(emacsdir)/$$file ] || cp $$file $(emacsdir)/$$file; \
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/upgrade/1.bash Sun Mar 13 14:06:08 2016 +0200
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+set -x -e
+
+emacsdir=$1
+if [ -z $emacsdir ]; then
+ echo You forget to pass emacsdir!
+ exit 1
+fi
+mylispdir=$emacsdir/my
+
+mkdir -p $mylispdir
+rm -f $emacsdir/autoload-my.el
+rm -f ~/.emacs
+[ -d $emacsdir/my-lisp ] && mv $emacsdir/my-lisp $mylispdir
+for f in .emacs-my .emacs-custom.el .emacs-pre .emacs-post .emacs-places .emacs.desktop .emacs-places .emacs-autogen .ido.last .recentf; do
+ if [ -f ~/$f ]; then [ -f $emacsdir/$f ] && mv ~/$f $emacsdir/$f.1 || mv ~/$f $emacsdir; fi
+ if [ -f $mylispdir/$f ]; then [ -f $emacsdir/$f ] && mv $mylispdir/$f $emacsdir/$f.2 || mv $mylispdir/$f $emacsdir; fi
+done
+for f in `find $mylispdir -maxdepth 1 -type f -name '.emacs?*'`; do
+ fn=${f##*/}
+ [ -f $emacsdir/$fn ] && mv $f $emacsdir/$fn.3 || mv $f $emacsdir
+done
+if [ -f ~/.emacs.bmk ]; then [ -f $emacsdir/bookmarks ] && mv ~/.emacs.bmk $emacsdir/bookmarks.$$ || mv ~/.emacs.bmk $emacsdir/bookmarks; fi
+if [ -f $emacsdir/.emacs.bmk ]; then [ -f $emacsdir/bookmarks ] && mv $emacsdir/.emacs.bmk $emacsdir/bookmarks.$$ || mv $emacsdir/.emacs.bmk $emacsdir/bookmarks; fi