#!/usr/bin/env bash set -e SCRIPT_DIR="$( cd "$( dirname "$BASH_SOURCE[0]" )" && pwd )" symlink_file() { filename="$SCRIPT_DIR/$1" destination="$HOME/$2/$1" mkdir -p $(dirname "$destination") if [ -L "$destination" ]; then echo "[WARNING] $filename already symlinked" return fi if [ -e "$destination" ]; then echo "[ERROR] $destination exists but it's not a symlink. Please fix that manually" exit 1 fi ln -s "$filename" "$destination" echo "[OK] $filename -> $destination" } deploy_manifest() { for row in $(cat $SCRIPT_DIR/$1); do if [[ "$row" =~ ^#.* ]]; then continue fi filename=$(echo $row | cut -d \| -f 1) operation=$(echo $row | cut -d \| -f 2) destination=$(echo $row | cut -d \| -f 3) case $operation in symlink) symlink_file $filename $destination ;; *) echo "[WARNING] Unknown operation $operation. Skipping..." ;; esac done } if [ -z "$@" ]; then echo "Usage: $0 " echo "ERROR: no MANIFEST file is provided" exit 1 fi deployManifest $1