aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Bobov <abobov@gmail.com>2013-11-14 11:09:47 +0600
committerAnton Bobov <abobov@gmail.com>2013-11-14 18:29:23 +0600
commitc10e0e31a4233e82ba83504c145d746b206435cd (patch)
tree7058d1bb45a045275c81caf4ea9539e7e9dae784
parentafca4ae1cf0d071fcce2068223a5becef9be6a28 (diff)
Rewrite install file.
Added check before link creating (can be forced with -f option). After creating links script build all path and resources.
-rwxr-xr-x.gitignore1
-rwxr-xr-xcreate_links.sh43
-rwxr-xr-xinstall.sh71
3 files changed, 72 insertions, 43 deletions
diff --git a/.gitignore b/.gitignore
index e699c28..7f3a2be 100755
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
/files/.mutt/aliases
/files/.mutt/certificates
/files/.mutt/secret
+/files/.mutt/cache
/files/.vim/.netrwhist
/files/.vim/doc/tags
/files/.vim/spell
diff --git a/create_links.sh b/create_links.sh
deleted file mode 100755
index be97089..0000000
--- a/create_links.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/bash
-
-# Based on file from https://github.com/benhoskings/dot-files
-
-set -e
-dir="$(cd "$(dirname "$0")" && pwd)"
-os=$(uname --operating-system)
-CMD=$SYSTEMROOT/System32/cmd.exe
-
-filter() {
- fname="files/$(basename "$@")"
- if [[ "$fname" == "files/." || "$fname" == "files/.." ]] ; then
- return 0
- fi
- return 1
-}
-
-create_windows_link()
-{
- target=$target/$(basename "$link")
- rm -rvf "$target"
- if [ -d "$link" ] ; then
- $CMD /c mklink /D $(cygpath --windows "$target") $(cygpath --windows "$link")
- else
- $CMD /c mklink $(cygpath --windows "$target") $(cygpath --windows "$link")
- fi
-}
-
-create_link()
-{
- local link=$(echo "$1" | sed "s#^$HOME/##")
- local target="$2"
- case "$os" in
- "Cygwin") create_windows_link ;;
- *) ln --verbose --symbolic --force "$link" "$target" ;;
- esac
-}
-
-cd &&
-ls --format=single-column --directory "$dir"/files/.* "$dir"/files/bin | while read f ; do
- filter "$f" ||
- create_link "$f" .
-done
diff --git a/install.sh b/install.sh
new file mode 100755
index 0000000..affdf12
--- /dev/null
+++ b/install.sh
@@ -0,0 +1,71 @@
+#!/bin/bash
+
+set -e
+dir="$(cd "$(dirname "$0")" && pwd)"
+os=$(uname --operating-system)
+CMD=$SYSTEMROOT/System32/cmd.exe
+
+filter() {
+ fname="files/$(basename "$@")"
+ if [[ "$fname" == "files/." || "$fname" == "files/.." ]] ; then
+ return 0
+ fi
+ return 1
+}
+
+create_windows_link() {
+ fp=$1
+ tp=$2
+ opt=""
+ if [ -d "$fp" ] ; then
+ opt="/D"
+ fi
+ if [[ 1 = $OVERRIDE ]] ; then
+ rm --recursive --force "$tp"
+ else
+ rm --force "$tp"
+ fi
+ $CMD /c mklink $opt $(cygpath --windows "$tp") $(cygpath --windows "$fp") >/dev/null
+}
+
+create_link() {
+ while read fp tp ; do
+ case "$os" in
+ "Cygwin") create_windows_link "$fp" "$tp" ;;
+ *) ln --symbolic --force --no-target-directory "$fp" "$tp" ;;
+ esac
+ done
+}
+
+after_install() {
+ mkdir -p $HOME/tmp/vim-undo $HOME/tmp/vim-backup
+ mkdir -p $HOME/.mutt/cache
+ touch $HOME/.mutt/aliases
+ if ! which ctags >/dev/null 2>&1; then
+ echo 'No ctags.' >&2
+ fi
+ cd $HOME/.vim/bundle/Command-T/ruby/command-t && make >/dev/null
+}
+
+check_override() {
+ while read filename ; do
+ fp=$dir/files/$filename
+ tp=$HOME/$filename
+ if [[ 1 != $OVERRIDE ]] ; then
+ rp=$(readlink -f "$tp")
+ if [[ -e "$rp" && "$rp" != "$fp" ]] ; then
+ echo "Skip: $filename" >&2
+ continue
+ fi
+ fi
+ echo "$fp" "$tp"
+ done
+}
+
+if [[ "-f" = "$1" ]] ; then
+ OVERRIDE=1
+fi
+
+cd && \
+ ( ls --format=single-column --almost-all "$dir/files" | check_override | create_link ) && \
+ after_install