Browse Source

Add USER_PATCHES_HOME support and minor quality improvements (#2815)

tags/7.0-RC1
Janos Gyerik 6 years ago
parent
commit
be37450079
No account linked to committer's email address
3 changed files with 85 additions and 71 deletions
  1. 55
    0
      scripts/patches/README.md
  2. 0
    52
      scripts/patches/README.txt
  3. 30
    19
      scripts/patches_utils.sh

+ 55
- 0
scripts/patches/README.md 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"

+ 0
- 52
scripts/patches/README.txt 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 ******************************************

+ 30
- 19
scripts/patches_utils.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
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
}



Loading…
Cancel
Save