]> source.dussan.org Git - sonarqube.git/commitdiff
Add USER_PATCHES_HOME support and minor quality improvements (#2815)
authorJanos Gyerik <janos.gyerik@sonarsource.com>
Tue, 21 Nov 2017 15:50:40 +0000 (16:50 +0100)
committerGitHub <noreply@github.com>
Tue, 21 Nov 2017 15:50:40 +0000 (16:50 +0100)
scripts/patches/README.md [new file with mode: 0644]
scripts/patches/README.txt [deleted file]
scripts/patches_utils.sh

diff --git a/scripts/patches/README.md b/scripts/patches/README.md
new file mode 100644 (file)
index 0000000..709c7bb
--- /dev/null
@@ -0,0 +1,55 @@
+Patches
+=======
+
+This directory contains patches to be used by any script which uses function `call_patches` from `patches_utils.sh`.
+
+Patches are files with extension `.sh`. Name of the patch is the name of the file without extension (so name of patch "debug.sh" is "debug").
+
+Patches run in the same directory as the calling script provided `patches_utils.sh` has been sourced in the calling script.
+
+Patches are passed on to `start.sh` script using command line argument `-p` by their name.
+More than one can be specified using comma as separator.
+Each patch is invoked with one argument:
+
+* `SQ_HOME`: path to the home of the started SQ instance
+
+To enable custom patches not part of this directory, set the environment variable `SONARQUBE_USER_PATCHES_HOME` to the directory of the scripts.
+If a script with the same name exists in *this* directory and under your custom script directory,
+the one in the custom script directory will be used.
+
+
+Example scripts
+---------------
+
+### Debug
+
+    #!/usr/bin/env bash
+    #
+    # sets property sonar.web.javaAdditionalOpts in sonar.properties to activate debug
+    #
+
+    set -euo pipefail
+
+    source scripts/property_utils.sh
+
+    SQ_HOME=$1
+
+    echo "enabling debug in conf/sonar.properties, listening on port 5005"
+    set_property sonar.web.javaAdditionalOpts -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 "$SQ_HOME/conf/sonar.properties"
+
+### Views
+
+    #!/usr/bin/env bash
+    #
+    # copies the sonar-views plugin jar to the extension directory
+    #
+
+    set -euo pipefail
+
+    source scripts/property_utils.sh
+
+    SQ_HOME=$1
+
+    VIEWS_FILE=~/DEV/views/target/sonar-views-plugin-2.9-SNAPSHOT.jar
+    EXT_DIR=$SQ_HOME/extensions/plugins
+    cp -v "$VIEWS_FILE" "$EXT_DIR"
diff --git a/scripts/patches/README.txt b/scripts/patches/README.txt
deleted file mode 100644 (file)
index c120dda..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-This directory contains patches to be used by the any script which use function call_patches from patches_utils.sh.
-
-Patches are files with extension ".sh". Name of the patch is the name of the file without extension (so name of patch "debug.sh" is "debug").
-
-Patches run in the same directory as the calling script provided patches_utils.sh as been sourced in the calling script.
-
-Patches are passed on to start.sh script using command line argument "-p" by their name.
-More than one can be specified using a colon.
-Each patch is invoked with one argument:
- * SQ_HOME: the path to the home of the started SQ instance
-
-
-************************************************************************************************************************
-                         sample and common scripts are provided below
-************************************************************************************************************************
-
-
-
-******************************************      start of debug.sh      ******************************************
-#!/bin/bash
-###############################
-# sets property sonar.web.javaAdditionalOpts in sonar.properties to activate debug
-###############################
-
-set -euo pipefail
-
-source scripts/property_utils.sh
-
-SQ_HOME=$1
-
-echo "enabling debug in conf/sonar.properties, listening on port 5005"
-set_property sonar.web.javaAdditionalOpts -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 $SQ_HOME/conf/sonar.properties
-******************************************       end of debug.sh       ******************************************
-
-
-******************************************      start of views.sh      ******************************************
-#!/bin/bash
-###############################
-# copies the sonar-views plugin jar to the extension directory
-###############################
-
-set -euo pipefail
-
-source scripts/property_utils.sh
-
-SQ_HOME=$1
-
-VIEWS_FILE=~/DEV/views/target/sonar-views-plugin-2.9-SNAPSHOT.jar
-EXT_DIR=$SQ_HOME/extensions/plugins/
-echo "copy $VIEWS_FILE to $EXT_DIR"
-cp  $VIEWS_FILE $EXT_DIR
-******************************************       end of views.sh       ******************************************
index 1792a4ce5a64c5133334218c5e2a88656076b66b..4a2f1c4b8dfdf03eb19a6b1e7be982814815fd0d 100755 (executable)
@@ -1,29 +1,40 @@
-#!/bin/bash
-###############################
-# exposes library functions to modify properties in a property 
-###############################
+#!/usr/bin/env bash
 
 set -euo pipefail
 
 PATCHES_HOME=scripts/patches
+USER_PATCHES_HOME=
 
-# $1: name(s) of patches to call, separated by a colon
-# all other arguments are passed as is to the patches
-function call_patches() {
-  local PATCHES=$1
-  local ARGS=${@:2}
-  local savedIFS=$IFS
+if [ "${SONARQUBE_USER_PATCHES_HOME+x}" ]; then
+    USER_PATCHES_HOME=$SONARQUBE_USER_PATCHES_HOME
+fi
+
+# $1: name(s) of patches to call, separated by comma(s)
+# $2: path to SonarQube installation
+call_patches() {
+  local patches=$1
+  local sq_home=$2
+  local patch script
+  local IFS=,
   
-  IFS=','
-  for PATCH in $PATCHES; do
-    #echo "calling $PATCHES_HOME/$PATCH.sh $ARGS"
-    echo ""
-    echo "******** $PATCH *******"
-    $PATCHES_HOME/$PATCH.sh $ARGS
+  for patch in $patches; do
+    echo
+    echo "******** $patch *******"
+
+    if [ "$USER_PATCHES_HOME" -a -x "$USER_PATCHES_HOME/$patch.sh" ]; then
+        script=$USER_PATCHES_HOME/$patch.sh
+    elif [ -x "$PATCHES_HOME/$patch.sh" ]; then
+        script=$PATCHES_HOME/$patch.sh
+    elif [ "$USER_PATCHES_HOME" ]; then
+        echo "Patch $patch is not an executable script in $PATCHES_HOME or $USER_PATCHES_HOME"
+        return 1
+    else
+        echo "Patch $patch is not an executable script in $PATCHES_HOME"
+        return 1
+    fi
+    "$script" "$sq_home"
   done
-  IFS=$savedIFS
 
-  echo ""
+  echo
 }
 
-