diff --git a/plugins.sh b/plugins.sh
index 47e5792..726ed86 100755
--- a/plugins.sh
+++ b/plugins.sh
@@ -14,69 +14,69 @@
 
 if [ -z "$1" ]
 then
-	echo "
-USAGE: 
+    echo "
+USAGE:
   Parse a support-core plugin -style txt file as specification for jenkins plugins to be installed
   in the reference directory, so user can define a derived Docker image with just :
- 
+
   FROM jenkins
   COPY plugins.txt /plugins.txt
   RUN /usr/local/bin/plugins.sh /plugins.txt
- 
+
   Note: Plugins already installed are skipped
- 
+
 "
-	exit 1
+    exit 1
 else
-	JENKINS_INPUT_JOB_LIST=$1
-	if [ ! -f $JENKINS_INPUT_JOB_LIST ]
-	then
-		echo "ERROR File not found: $JENKINS_INPUT_JOB_LIST"
-		exit 1
-	fi
+    JENKINS_INPUT_JOB_LIST=$1
+    if [ ! -f $JENKINS_INPUT_JOB_LIST ]
+    then
+        echo "ERROR File not found: $JENKINS_INPUT_JOB_LIST"
+        exit 1
+    fi
 fi
 
-# the war includes a # of plugins, to make the build efficient filter out 
+# the war includes a # of plugins, to make the build efficient filter out
 # the plugins so we dont install 2x - there about 17!
 if [ -d $JENKINS_HOME ]
 then
-	TEMP_ALREADY_INSTALLED=$JENKINS_HOME/preinstalled.plugins.$$.txt
+    TEMP_ALREADY_INSTALLED=$JENKINS_HOME/preinstalled.plugins.$$.txt
 else
-	echo "ERROR $JENKINS_HOME not found"
-	exit 1
+    echo "ERROR $JENKINS_HOME not found"
+    exit 1
 fi
 
 JENKINS_PLUGINS_DIR=/var/jenkins_home/plugins
 if [ -d $JENKINS_PLUGINS_DIR ]
 then
-	echo "Analyzing: $JENKINS_PLUGINS_DIR"
-	for i in `ls -pd1 $JENKINS_PLUGINS_DIR/*|egrep '\/$'`
-	do
-		JENKINS_PLUGIN=`basename $i`
-		JENKINS_PLUGIN_VER=`egrep -i Plugin-Version "$i/META-INF/MANIFEST.MF"|cut -d\: -f2|sed 's/ //'`
-		echo "$JENKINS_PLUGIN:$JENKINS_PLUGIN_VER"
-	done > $TEMP_ALREADY_INSTALLED
+    echo "Analyzing: $JENKINS_PLUGINS_DIR"
+    for i in `ls -pd1 $JENKINS_PLUGINS_DIR/*|egrep '\/$'`
+    do
+        JENKINS_PLUGIN=`basename $i`
+        JENKINS_PLUGIN_VER=`egrep -i Plugin-Version "$i/META-INF/MANIFEST.MF"|cut -d\: -f2|sed 's/ //'`
+        echo "$JENKINS_PLUGIN:$JENKINS_PLUGIN_VER"
+    done > $TEMP_ALREADY_INSTALLED
 else
-	JENKINS_WAR=/usr/share/jenkins/jenkins.war
-	if [ -f $JENKINS_WAR ]
-	then
-		echo "Analyzing war: $JENKINS_WAR"
-		TEMP_PLUGIN_DIR=/tmp/plugintemp.$$
-		for i in `jar tf $JENKINS_WAR|egrep 'plugins'|egrep -v '\/$'|sort`
-		do 
-			rm -fr $TEMP_PLUGIN_DIR
-			mkdir -p $TEMP_PLUGIN_DIR
-			PLUGIN=`basename $i|cut -f1 -d'.'`
-			(cd $TEMP_PLUGIN_DIR;jar xf $JENKINS_WAR "$i";jar xvf $TEMP_PLUGIN_DIR/$i META-INF/MANIFEST.MF >/dev/null 2>&1)
-			VER=`egrep -i Plugin-Version "$TEMP_PLUGIN_DIR/META-INF/MANIFEST.MF"|cut -d\: -f2|sed 's/ //'`
-			echo "$PLUGIN:$VER"
-		done > $TEMP_ALREADY_INSTALLED
-		rm -fr $TEMP_PLUGIN_DIR
-	else
-		rm -f $TEMP_ALREADY_INSTALLED	
-		echo "ERROR file not found: $JENKINS_WAR"
-		exit 1
-	fi
+    JENKINS_WAR=/usr/share/jenkins/jenkins.war
+    if [ -f $JENKINS_WAR ]
+    then
+        echo "Analyzing war: $JENKINS_WAR"
+        TEMP_PLUGIN_DIR=/tmp/plugintemp.$$
+        for i in `jar tf $JENKINS_WAR|egrep 'plugins'|egrep -v '\/$'|sort`
+        do
+            rm -fr $TEMP_PLUGIN_DIR
+            mkdir -p $TEMP_PLUGIN_DIR
+            PLUGIN=`basename $i|cut -f1 -d'.'`
+            (cd $TEMP_PLUGIN_DIR;jar xf $JENKINS_WAR "$i";jar xvf $TEMP_PLUGIN_DIR/$i META-INF/MANIFEST.MF >/dev/null 2>&1)
+            VER=`egrep -i Plugin-Version "$TEMP_PLUGIN_DIR/META-INF/MANIFEST.MF"|cut -d\: -f2|sed 's/ //'`
+            echo "$PLUGIN:$VER"
+        done > $TEMP_ALREADY_INSTALLED
+        rm -fr $TEMP_PLUGIN_DIR
+    else
+        rm -f $TEMP_ALREADY_INSTALLED
+        echo "ERROR file not found: $JENKINS_WAR"
+        exit 1
+    fi
 fi
 
 REF=/usr/share/jenkins/ref/plugins
@@ -93,28 +93,28 @@
       JENKINS_UC_DOWNLOAD=$JENKINS_UC/download
     fi
 
-    if ! grep -q "${plugin[0]}:${plugin[1]}" $TEMP_ALREADY_INSTALLED 
+    if ! grep -q "${plugin[0]}:${plugin[1]}" $TEMP_ALREADY_INSTALLED
     then
-    	echo "Downloading ${plugin[0]}:${plugin[1]}"
+        echo "Downloading ${plugin[0]}:${plugin[1]}"
         curl --retry 3 --retry-delay 5 -sSL -f ${JENKINS_UC_DOWNLOAD}/plugins/${plugin[0]}/${plugin[1]}/${plugin[0]}.hpi -o $REF/${plugin[0]}.jpi
         unzip -qqt $REF/${plugin[0]}.jpi
-	COUNT_PLUGINS_INSTALLED=`expr $COUNT_PLUGINS_INSTALLED + 1`
+        COUNT_PLUGINS_INSTALLED=`expr $COUNT_PLUGINS_INSTALLED + 1`
     else
-    	echo "  ... skipping already installed:  ${plugin[0]}:${plugin[1]}"
+        echo "  ... skipping already installed:  ${plugin[0]}:${plugin[1]}"
     fi
 done  < $JENKINS_INPUT_JOB_LIST
 
 echo "---------------------------------------------------"
 if [ $COUNT_PLUGINS_INSTALLED -gt 0 ]
 then
-	echo "INFO: Successfully installed $COUNT_PLUGINS_INSTALLED plugins."
+    echo "INFO: Successfully installed $COUNT_PLUGINS_INSTALLED plugins."
 
-	if [ -d $JENKINS_PLUGINS_DIR ]
-	then
-		echo "INFO: Please restart the container for changes to take effect!"
-	fi
+    if [ -d $JENKINS_PLUGINS_DIR ]
+    then
+        echo "INFO: Please restart the container for changes to take effect!"
+    fi
 else
-	echo "INFO: No changes, all plugins previously installed."
+    echo "INFO: No changes, all plugins previously installed."
 
 fi
 echo "---------------------------------------------------"
