From a6a23d340309c4bb628b65df8082a416db6a053a Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Mon, 4 Jun 2018 22:34:25 +0100 Subject: Adding Haskell install script --- install | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ install.sh | 14 +++++++------- 2 files changed, 61 insertions(+), 7 deletions(-) create mode 100755 install diff --git a/install b/install new file mode 100755 index 0000000..05aab42 --- /dev/null +++ b/install @@ -0,0 +1,54 @@ +#!/usr/bin/env runhaskell +-- -*- haskell -*- + +import System.Directory ( removeFile + , doesFileExist + , createFileLink + , pathIsSymbolicLink + , copyFile + ) + +remIf :: FilePath -> IO () +remIf dest = do + res <- doesFileExist dest + rem res dest + where + rem b dest + | b = removeFile dest + | otherwise = return () + +forceOp :: (FilePath -> FilePath -> IO ()) -> FilePath -> FilePath -> IO () +forceOp op src dest = do + remIf dest + op fullSrc dest + where + fullSrc = + +forceCopy :: FilePath -> FilePath -> IO () +forceCopy = forceOp copyFile + +forceFileSymLink :: FilePath -> FilePath -> IO () +forceFileSymLink = forceOp createFileLink + +main :: IO () +main = do + putStrLn "Installing emacs config..." + forceCopy "./emacs/init.el" "~/.emacs.d/init.el" + forceFileSymLink "./emacs/loader.org" "~/.emacs.d/loader.org" + + putStrLn "Installing X config..." + forceFileSymLink "./X/.Xmodmap" "~/.Xmodmap" + forceFileSymLink "./X/.Xresources" "~/.Xresources" + forceFileSymLink "./X/.xinitrc" "~/.xinitrc" + + putStrLn "Installing tmux config..." + forceFileSymLink "./tmux/.tmux.conf" "~/.tmux.conf" + + putStrLn "Installing i3 config..." + forceFileSymLink "./i3/config" "~/.config/i3/config" + + putStrLn "Installing zsh config..." + forceFileSymLink "./zsh/.zshrc" "~/.zshrc" + + putStrLn "Installing isync config..." + forceFileSymLink "./isync/.mbsyncrc" "~/.mbsyncrc" diff --git a/install.sh b/install.sh index 5d01955..9b5ca42 100644 --- a/install.sh +++ b/install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCRIPT_DIR=$(dirname "$(readlink -f "$0")") EXTRA_OPTS=" -s " @@ -18,24 +18,24 @@ function ln_configs { ln $EXTRA_OPTS ${SCRIPT_DIR}/${1} $2 } -echo "installing emacs config..." +echo "Installing emacs config..." cp ${current_dir}/emacs/init.el ~/.emacs.d/init.el ln_configs emacs/loader.org ~/.emacs.d/loader.org -echo "installing X config" +echo "Installing X config..." ln_configs X/.Xmodmap ~/.Xmodmap ln_configs X/.Xresources ~/.Xresources ln_configs X/.xinitrc ~/.xinitrc -echo "installing tmux config" +echo "Installing tmux config..." ln_configs tmux/.tmux.conf ~/.tmux.conf -echo "installing i3 config" +echo "Installing i3 config..." ln_configs i3/config ~/.config/i3/config -echo "installing zsh config" +echo "Installing zsh config..." ln_configs zsh/.zshrc ~/.zshrc ln_configs zsh/.zsh ~/.zsh -echo "installing isync config" +echo "Installing isync config..." ln_configs isync/.mbsyncrc ~/.mbsyncrc -- cgit