Add USER_PATCHES_HOME support and minor quality improvements (#2815)

This commit is contained in:
Janos Gyerik 2017-11-21 16:50:40 +01:00 committed by GitHub
parent da41cff1d4
commit be37450079
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 86 additions and 72 deletions

55
scripts/patches/README.md Normal file
View File

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

View File

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

View File

@ -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
done
IFS=$savedIFS
for patch in $patches; do
echo
echo "******** $patch *******"
echo ""
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
echo
}