Create and document basic installation script
This commit is contained in:
29
README.md
29
README.md
@@ -4,6 +4,35 @@ would-reformat - automatic reformatting for emacs without being annoying
|
|||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
|
- Change to the directory where you would want to use **would-reformat**:
|
||||||
|
`$ cd ~/devel/my-project`
|
||||||
|
- From that directory, call the script `install.sh` in the directory where
|
||||||
|
you have **would-reformat** checked out:
|
||||||
|
`you@host:~/devel/my-project $ ~/src/would-reformat/install.sh`
|
||||||
|
|
||||||
|
This will do the following:
|
||||||
|
|
||||||
|
- create the directory `~/devel/my-project/bin` if it does not exist
|
||||||
|
- create `~/devel/my-project/_reformat-common.sh`,
|
||||||
|
`~/devel/my-project/do-reformat.sh`, and
|
||||||
|
`~/devel/my-project/bin/would-reformat.sh` as symlinks to files with
|
||||||
|
the same names in `~/src/would-reformat`.
|
||||||
|
- create `~/devel/my-project/.dir-locals.el` as a symlink to the file
|
||||||
|
with the same name in `~/src/would-reformat`.
|
||||||
|
|
||||||
|
This should work from a checkout wherever you happen to have it. It doesn't
|
||||||
|
need to be in `~/src`. However, if you remove the checkout, then the symlinks
|
||||||
|
will break, so don't do that. If you rename the checkout, the symlinks will break.
|
||||||
|
|
||||||
|
The directory `bin` with respect to `my-project` however is hardcoded
|
||||||
|
(enhancements here are welcome).
|
||||||
|
|
||||||
|
The script `install.sh` favors conservatism over being clever: for example,
|
||||||
|
if it finds the file `~/devel/my-project/bin/do-reformat.sh` then it
|
||||||
|
checks whether it is a symlink to `~/src/would-reformat/do-reformat.sh`.
|
||||||
|
If it is not, then it just prints a warning rather than attempting to correct
|
||||||
|
the situation.
|
||||||
|
|
||||||
# Development
|
# Development
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
52
install.sh
Executable file
52
install.sh
Executable file
@@ -0,0 +1,52 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -uo pipefail
|
||||||
|
IFS=$'\n\t'
|
||||||
|
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
here=$(pwd)
|
||||||
|
|
||||||
|
ret=0
|
||||||
|
|
||||||
|
# If this use of readlink breaks, see
|
||||||
|
# https://unix.stackexchange.com/questions/47710/find-only-destination-of-symlink
|
||||||
|
# for discussion of alternatives.
|
||||||
|
|
||||||
|
for i in _reformat-common.sh do-reformat.sh would-reformat.sh; do
|
||||||
|
if [[ -f "$here"/bin/"$i" ]] ; then
|
||||||
|
dest=$(readlink bin/$i)
|
||||||
|
if [[ x"$dest" == x"$DIR/$i" ]] ; then
|
||||||
|
echo $i is in place, good
|
||||||
|
else
|
||||||
|
echo $i exists but it is not a symlink or does not point to the right place
|
||||||
|
echo If it is a symlink, it points to: $dest
|
||||||
|
echo "(If it doesn't point anywhere, then it probably is not a symlink)"
|
||||||
|
ret=1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# it doesn't exist; create it
|
||||||
|
echo setting $i up
|
||||||
|
mkdir -p $here/bin
|
||||||
|
ln -s $DIR/$i $here/bin/$i
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ -f $here/.dir-locals.el ]] ; then
|
||||||
|
dest=$(readlink .dir-locals.el)
|
||||||
|
if [[ x"$dest" == x"$DIR/_dir-locals.el" ]] ; then
|
||||||
|
echo .dir-locals.el is in place, good
|
||||||
|
else
|
||||||
|
echo .dir-locals.el exists but it is not a symlink or does not point to
|
||||||
|
echo the right place
|
||||||
|
echo
|
||||||
|
echo It is possible that you are using .dir-locals.el for other purposes,
|
||||||
|
echo in which case this is not really an error.
|
||||||
|
ret=1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo setting .dir-locals.el up
|
||||||
|
ln -s $DIR/_dir-locals.el $here/.dir-locals.el
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit $ret
|
||||||
Reference in New Issue
Block a user