Add script to sync sonar properties with package.json
authorJérôme Benoit <jerome.benoit@sap.com>
Fri, 10 Jun 2022 19:32:01 +0000 (21:32 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Fri, 10 Jun 2022 19:32:01 +0000 (21:32 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
.gitignore
.release-it.json
package.json
sonar-project.properties
src/scripts/updateSonarProps.sh [new file with mode: 0755]

index b126346579c600d3863d446bf5c85d840fff0413..271df212f966d46c1e4172567b6f3ee1f3f77b0d 100644 (file)
@@ -93,6 +93,7 @@ Thumbs.db
 *.mta
 mta_archives/
 
+*.bak
 .eslintcache
 temp/
 *.tar.gz
index 05c400808ad6ce795ab2ad275ef7b3212ead792f..3ffb0521e214de126ab9bbadc6083243658ccd31 100644 (file)
@@ -13,6 +13,6 @@
     "releaseName": "Version ${version}"
   },
   "hooks": {
-    "after:bump": "npx auto-changelog -p -u"
+    "after:bump": "npx auto-changelog -p -u && npm run sonar:properties"
   }
 }
index 056fc72ceb69cbbf6fadc50e54278458c1ff4512..60f08e96d8aae2308f21e28bf9718f312bd54f7d 100644 (file)
@@ -77,6 +77,7 @@
     "git:sdiff": "git diff && git submodule foreach 'git diff'",
     "git:supdate": "git submodule update --remote --recursive --merge",
     "git:spush": "git push --recurse-submodules=on-demand",
+    "sonar:properties": "src/scripts/updateSonarProps.sh",
     "release": "release-it"
   },
   "dependencies": {
index e4c1dc988a5df3b531aff63be531bbf94210db1c..6a39fbde1c5dd3efcfaab3072df58afdf041f9bb 100644 (file)
@@ -3,7 +3,7 @@ sonar.organization=jerome-benoit
 
 # This is the name and version displayed in the SonarCloud UI.
 sonar.projectName=e-mobility-charging-stations-simulator
-sonar.projectVersion=1.0.0
+sonar.projectVersion=1.1.61
 
 # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
 #sonar.sources=.
diff --git a/src/scripts/updateSonarProps.sh b/src/scripts/updateSonarProps.sh
new file mode 100755 (executable)
index 0000000..d29ed6a
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/env bash
+#title          : updateSonarProps.sh
+#description    :
+# This script parses the project's name and version from its package.json and automagically
+# updates the version and package name in the SonarQube configuration properties file.
+# It can be used as a pre step before running the sonar-scanner command
+#
+#prerequisites  : NodeJS based project with package.json, sonar*.properties file in the cwd
+#author         : Christian-André Giehl <christian@emailbrief.de>
+#modified by    : Daniel Duarte <danieldd.ar@gmail.com>
+#date           : 20180220
+#version        : 1.1
+#usage          : sh updateSonarProps.sh
+#==============================================================================
+echo "Updating the SonarQube properties..."
+
+# Get the project name from package.json
+PACKAGE_NAME=$(cat package.json \
+  | grep name \
+  | head -1 \
+  | awk -F: '{ print $2 }' \
+  | sed 's/[",]//g' \
+  | tr -d '[[:space:]]')
+echo "Project: ${PACKAGE_NAME}"
+
+# Get the version from package.json
+PACKAGE_VERSION=$(cat package.json \
+  | grep version \
+  | head -1 \
+  | awk -F: '{ print $2 }' \
+  | sed 's/[",]//g' \
+  | tr -d '[[:space:]]')
+echo "Version: ${PACKAGE_VERSION}"
+
+# Get the Sonar properties file
+SONAR_FILE=$(find . -iname sonar*.properties -type f)
+echo "Sonar file: ${SONAR_FILE}"
+
+SED_EXTRA_OPTS="-i.bak"
+
+# Update the version
+REPLACE='^sonar.projectVersion=.*$'
+WITH="sonar.projectVersion=${PACKAGE_VERSION}"
+sed $SED_EXTRA_OPTS -e "s/${REPLACE}/${WITH}/g" ${SONAR_FILE}
+
+# Update the project name
+REPLACE='^sonar.projectName=.*$'
+WITH="sonar.projectName=${PACKAGE_NAME}"
+sed $SED_EXTRA_OPTS -e "s/${REPLACE}/${WITH}/g" ${SONAR_FILE}