|
@@ -0,0 +1,63 @@
|
|
|
+#!/bin/bash
|
|
|
+
|
|
|
+# Go trough all the files available in this folder.
|
|
|
+commonFiles=();
|
|
|
+for sourceFile in .*; do
|
|
|
+
|
|
|
+ # Exclude some files.
|
|
|
+ if [[ "$sourceFile" == "install_unattended.sh" || "$sourceFile" == "install.sh" ]] || [[ "$sourceFile" == "README.md" ]] || [[ "$sourceFile" == "." ]] || [[ "$sourceFile" == ".." ]] || [[ "$sourceFile" == ".git" ]]; then
|
|
|
+ continue;
|
|
|
+ fi;
|
|
|
+
|
|
|
+ # Set the target path for the source file.
|
|
|
+ # We'll port them to the ~/ (home) directory.
|
|
|
+ targetFile="$HOME/$sourceFile";
|
|
|
+
|
|
|
+ # The file already exists.
|
|
|
+ if [ -e "$targetFile" ]; then
|
|
|
+
|
|
|
+ # The source and target point to the same file, continue.
|
|
|
+ [ "$sourceFile" -ef "$targetFile" ] && continue;
|
|
|
+
|
|
|
+ # The content of the file is the same, continue.
|
|
|
+ diff -rq "$sourceFile" "$targetFile" > /dev/null 2>&1 && continue;
|
|
|
+
|
|
|
+ # The source file is another file than our dotfile.
|
|
|
+ # Store it in the commonFiles array so we can back it up.
|
|
|
+ commonFiles+=("$sourceFile");
|
|
|
+
|
|
|
+ fi;
|
|
|
+done;
|
|
|
+
|
|
|
+# Show the files that will be overwritten.
|
|
|
+conflictCount=${#commonFiles[@]};
|
|
|
+
|
|
|
+# Create a suffix with a timestamp so the user can see which
|
|
|
+# files and when they've been backupped.
|
|
|
+backupSuffix=".jsVimconfig-$(date +'%Y%m%d-%H%M%S')";
|
|
|
+
|
|
|
+# Rename the conflicting files as backup.
|
|
|
+for sourceFile in "${commonFiles[@]}"; do
|
|
|
+ targetFile="$HOME/$sourceFile";
|
|
|
+ mv -v "$targetFile" "$targetFile$backupSuffix";
|
|
|
+done;
|
|
|
+
|
|
|
+# Symlink the files in the home dir by those in the dotfiles repo.
|
|
|
+for sourceFile in .*; do
|
|
|
+
|
|
|
+ # Exclude some files.
|
|
|
+ if [[ "$sourceFile" == "install_unattended.sh" || "$sourceFile" == "install.sh" ]] || [[ "$sourceFile" == "README.md" ]] || [[ "$sourceFile" == "." ]] || [[ "$sourceFile" == ".." ]] || [[ "$sourceFile" == ".git" ]]; then
|
|
|
+ continue;
|
|
|
+ fi;
|
|
|
+
|
|
|
+ targetFile="$HOME/$sourceFile";
|
|
|
+
|
|
|
+ # Delete the old file and replace it by the symlink.
|
|
|
+ rm -rf "$targetFile" &&
|
|
|
+ ln -vs "$PWD/$sourceFile" "$targetFile";
|
|
|
+done;
|
|
|
+
|
|
|
+# This will add a tag to our prompt, so we know which environment we're in.
|
|
|
+# It is adaptable in ~/.bash_environment
|
|
|
+touch ~/.bash_environment;
|
|
|
+echo -e "export __prompt_environment='DEVELOPMENT'" | tee ~/.bash_environment > /dev/null;
|