aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJanos Gyerik <janos.gyerik@sonarsource.com>2017-11-21 16:50:40 +0100
committerGitHub <noreply@github.com>2017-11-21 16:50:40 +0100
commitbe37450079cf25c85456abae6dd1b5c99edb02f8 (patch)
tree9937c0bae6f66857bbd74dd4f310a2f4054213d2
parentda41cff1d4695e2644221ca60210209a143a17a7 (diff)
downloadsonarqube-be37450079cf25c85456abae6dd1b5c99edb02f8.tar.gz
sonarqube-be37450079cf25c85456abae6dd1b5c99edb02f8.zip
Add USER_PATCHES_HOME support and minor quality improvements (#2815)
-rw-r--r--scripts/patches/README.md55
-rw-r--r--scripts/patches/README.txt52
-rwxr-xr-xscripts/patches_utils.sh49
3 files changed, 85 insertions, 71 deletions
diff --git a/scripts/patches/README.md b/scripts/patches/README.md
new file mode 100644
index 00000000000..709c7bb81d5
--- /dev/null
+++ b/scripts/patches/README.md
@@ -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
index c120dda746c..00000000000
--- a/scripts/patches/README.txt
+++ /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 ******************************************
diff --git a/scripts/patches_utils.sh b/scripts/patches_utils.sh
index 1792a4ce5a6..4a2f1c4b8df 100755
--- a/scripts/patches_utils.sh
+++ b/scripts/patches_utils.sh
@@ -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
}
-