Browse Source

add an install script that can run without input or output

Bert Pattyn 11 years ago
parent
commit
341b993356
2 changed files with 64 additions and 1 deletions
  1. 1 1
      install.sh
  2. 63 0
      install_unattended.sh

+ 1 - 1
install.sh

@@ -5,7 +5,7 @@ commonFiles=();
 for sourceFile in .*; do
 
 	# Exclude some files.
-	if [[ "$sourceFile" == "dotfiles-002.png" || "$sourceFile" == "dotfiles-001.png" || "$sourceFile" == "install.sh" ]] || [[ "$sourceFile" == "README.md" ]] || [[ "$sourceFile" == "." ]] || [[ "$sourceFile" == ".." ]] || [[ "$sourceFile" == ".git" ]]; then
+	if [[ "$sourceFile" == "install_unattended.sh" || "$sourceFile" == "install.sh" ]] || [[ "$sourceFile" == "README.md" ]] || [[ "$sourceFile" == "." ]] || [[ "$sourceFile" == ".." ]] || [[ "$sourceFile" == ".git" ]]; then
 		continue;
 	fi;
 

+ 63 - 0
install_unattended.sh

@@ -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;