-#! /bin/sh
+#! /bin/bash
set -e
+###--------------------------------------------------------------------------
+### Basic setup.
+
umask 002
sub=
mkdir -p $HOME$sub
-: ${REPO=http://guvnor.distorted.org.uk/ftp/pub/mdw}
+: ${REPO=http://ftp.distorted.org.uk/ftp/pub/mdw/profile}
export PATH=/usr/local/bin:$HOME$sub/bin:/usr/bin:/usr/ccs/bin:/bin
-### Sort out command line
+###--------------------------------------------------------------------------
+### Sort out command line.
+
xstuff= false=
while [ $# -gt 0 ]; do
case "$1" in
shift
done
-### Find out where I am
+###--------------------------------------------------------------------------
+### Environment autoconfiguration.
+
+## Find out where I am
here=$(pwd)
-### Suss out how to print things
+## Suss out how to print things
out=$(echo -n "foo"; echo "bar")
if [ "$out" = "foobar" ]; then
echon="echo -n"
echoc='\c'
fi
-### Create the necessary directories
-echo "Creating directories..."
-for i in bin lib/emacs src; do
- $echon " $i:$echoc"
- if [ -d $HOME$sub/$i ]; then
- echo " already exists."
- else
- mkdir -p $HOME$sub/$i
- echo " done."
- fi
-done
-echo " all done."
-
-### Find out how to fetch things over the net
+## Find out how to fetch things over the net
$echon "Finding URL fetcher:$echoc"
if curl >/dev/null 2>&1 --version || [ $? -eq 2 ]; then
GETURL="curl -fs -o"
exit 1
fi
-### Install necessary things
+###--------------------------------------------------------------------------
+### Create the necessary directories.
+
+echo "Creating directories..."
+for i in bin lib/emacs src; do
+ $echon " $i:$echoc"
+ if [ -d $HOME$sub/$i ]; then
+ echo " already exists."
+ else
+ mkdir -p $HOME$sub/$i
+ echo " done."
+ fi
+done
+echo " all done."
+
+###--------------------------------------------------------------------------
+### Install necessary things.
+
echo "Installing useful scripts..."
-for script in lesspipe.sh start-ssh-agent svnwrap; do
+scripts="
+ lesspipe.sh start-ssh-agent svnwrap"
+for script in $scripts; do
$echon " $script:$echoc"
found=
for p in /bin /usr/bin /usr/local/bin $(echo $PATH | tr : ' '); do
fi
done
-echo " all done."
+echo " all done."
+
+###--------------------------------------------------------------------------
+### Install some more complicated programs.
-### Install some more complicated programs
echo "Installing packages..."
systems="
- mLib:2.0.3:mLib-config
+ mlib:2.0.4:crc-mktab
chkpath:1.1.0:tmpdir
"
[ "$xstuff" ] && systems="$systems
- mgLib:1.1.0:mgLib-config
- xtoys:1.3.0:xscsize
+ xtoys:1.4.0:xatom
"
for system in $systems; do
set -- $(echo $system | tr : ' ')
)
fi
done
-echo " all done."
+echo " all done."
+
+###--------------------------------------------------------------------------
+### Install global configuration.
+
+echo -n "Installing dotfile configuration:"
+if [ -f $HOME$sub/.mdw.conf ]; then
+ echo " already installed."
+else
+ cp mdw.conf $HOME$sub/.mdw.conf
+ echo " done."
+fi
-### Symlink the various dotfiles into place
-dotfiles="
- bash_profile bash_logout bashrc
- emacs emacs-calc
- vm mailrc
+## Symlink the various dotfiles into place
+dotfiles="
+ bash_profile bash_logout bashrc inputrc bash_completion
+ emacs emacs-calc vm
+ vimrc mg
+ mailrc signature
+ cgrc tigrc
+ gdbinit
+ guile
+ aspell.conf
lisp-init.lisp:.cmucl-init.lisp
lisp-init.lisp:.sbclrc
lisp-init.lisp:.clisprc.lisp
- dircolors screenrc cvsrc"
+ lisp-init.lisp:.eclrc
+ dircolors colordiffrc screenrc cvsrc indent.pro"
[ "$xstuff" ] && dotfiles="$dotfiles
- xinitrc xsession Xdefaults
+ xinitrc xsession Xdefaults vncrc vncsession
+ putty-defaults:.putty/sessions/Default%20Settings
eterm-theme.cfg:.Eterm/themes/Eterm/theme.cfg
e-keybindings.cfg:.enlightenment/keybindings.cfg
- jue-peek.jpg:.enlightenment/backgrounds/jue-peek.jpg"
-mkdir -p $HOME/test
+ evnc-keybindings.cfg:.enlightenment-vnc/keybindings.cfg
+ e16-bindings:.e16/bindings.cfg
+ e16-config:.e16/e_config--1.0.cfg
+ jue-peek.jpg:.enlightenment/backgrounds/jue-peek.jpg
+ jue-peek.jpg:.e16/backgrounds/jue-peek.jpg"
echo "Installing dotfiles..."
for d in $dotfiles; do
target=.$d
mv $ft.new $ft
echo " $target"
done
-echo " all done."
+echo " all done."
+
+###--------------------------------------------------------------------------
+### Process the Git configuration.
+
+echo -n "Installing Git configuration:"
+sed "
+1i\
+### generated by $here/setup; do not edit!\
+
+/@releasekey@/ s::$(./mdw-conf release-key 481334C2):g
+/@gitignore@/ s::$(./mdw-conf gitignore $here/gitignore):g
+" gitconfig >$HOME/.gitconfig.new
+mv $HOME/.gitconfig.new $HOME/.gitconfig
+echo " done."
+
+###--------------------------------------------------------------------------
+### Install useful scripts included in this package.
+
+scripts="
+ mdw-editor
+ mdw-conf
+ movemail-hack
+ emerge-hack"
+[ "$xstuff" ] && scripts="$scripts
+ xrun
+ xshutdown"
+echo "Installing scripts..."
+mkdir -p $HOME$sub/bin
+for s in $scripts; do
+ ft=$HOME$sub/bin/$s
+ ln -s $here/$s $ft.new
+ mv $ft.new $ft
+ echo " $s"
+done
+echo " all done."
+
+###--------------------------------------------------------------------------
+### Set up the Emacs config.
+
+$echon "Finding a suitable emacs:$echoc"
+emacs=no
+for i in emacs22 emacs21 emacs; do
+ if type -p >/dev/null $i; then
+ emacs=$i
+ break
+ fi
+done
+if [ $emacs = no ]; then
+ echo " failed."
+ emacs=:
+else
+ echo " $emacs."
+fi
-### Set up the Emacs config
echo "Installing Emacs packages..."
-for elib in make-regexp; do
+emacspkg="
+ make-regexp
+ git git-blame vc-git stgit
+ quilt"
+for elib in $emacspkg; do
$echon " $elib:$echoc"
- if $false emacs >/dev/null 2>&1 --batch --eval '
- (setq load-path (nconc load-path (list "~/lib/emacs")))
- (kill-emacs (condition-case nil
- (progn (load-library "make-regexp") 0)
- (error 1)))'; then
+ if $false $emacs >/dev/null 2>&1 --no-site-file --batch --eval '
+ (progn
+ (setq load-path (nconc load-path (list "~/lib/emacs")))
+ (kill-emacs (condition-case nil
+ (progn (load-library "'"$elib"'") 0)
+ (error 1))))'; then
echo " already installed."
else
$echon " downloading$echoc"
- $GETURL $HOME$sub/lib/emacs/make-regexp.el $REPO/make-regexp.el
+ $GETURL $HOME$sub/lib/emacs/$elib.el $REPO/$elib.el
$echon " compiling$echoc"
(cd $HOME$sub/lib/emacs;
- emacs >/dev/null 2>&1 --batch \
- --eval '(byte-compile-file "make-regexp.el")')
+ $emacs >/dev/null 2>&1 --no-site-file --batch \
+ --eval '(byte-compile-file "'"$elib.el"'")')
echo " done."
fi
done
-echo " all done."
+echo " all done."
$echon "Setting up Emacs configuration:$echoc"
$echon " linking$echoc"
mv $HOME$sub/lib/emacs/$to.new $HOME$sub/lib/emacs/$to
done
$echon " compiling$echoc"
-make >/dev/null 2>&1 -C $HOME$sub/lib/emacs
+make >/dev/null 2>&1 -C $HOME$sub/lib/emacs EMACS=$emacs
echo " done."
+
+###----- That's all, folks --------------------------------------------------