From be37450079cf25c85456abae6dd1b5c99edb02f8 Mon Sep 17 00:00:00 2001 From: Janos Gyerik Date: Tue, 21 Nov 2017 16:50:40 +0100 Subject: Add USER_PATCHES_HOME support and minor quality improvements (#2815) --- scripts/patches/README.md | 55 ++++++++++++++++++++++++++++++++++++++++++++++ scripts/patches/README.txt | 52 ------------------------------------------- scripts/patches_utils.sh | 49 +++++++++++++++++++++++++---------------- 3 files changed, 85 insertions(+), 71 deletions(-) create mode 100644 scripts/patches/README.md delete mode 100644 scripts/patches/README.txt 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 } - -- cgit v1.2.3