# HG changeset patch # User Oleksandr Gavenko # Date 1457870768 -7200 # Node ID 54b0b0bb457037ada4be9b4499b6ab087694ffe0 # Parent a796e1fddc70b849ef0070ef73b873bb7561e70d Move upgrade script to separate file. Add framework to support future upgrades. diff -r a796e1fddc70 -r 54b0b0bb4570 Makefile --- 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; \ diff -r a796e1fddc70 -r 54b0b0bb4570 upgrade/1.bash --- /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