]> source.dussan.org Git - sonarqube.git/commitdiff
[script] make property_utils.sh run on OSX + improve "if grep"
authorPriit Liivak <priitliivak@gmail.com>
Mon, 23 May 2016 10:12:47 +0000 (13:12 +0300)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Mon, 23 May 2016 14:43:34 +0000 (16:43 +0200)
Now works on OSX: inline is required since in OSX providing '' as variable does not work.
More reliable OS independent version of this script.
Fixed incorrect backslash count in REGEX variable
Applied recommendations for "if grep" http://mywiki.wooledge.org/BashPitfalls#if_.5Bgrep_foo_myfile.5D

scripts/property_utils.sh

index e301bb471651ae59a9e8b4c27b2bccb4576b19f8..a58fb22b64e8b32a9d9b25ef379cfa6010721896 100755 (executable)
@@ -8,12 +8,6 @@
 
 set -euo pipefail
 
-if [[ "$OSTYPE" == "darwin"* ]]; then
-  SED_DISABLE_BACKUP=" ''"
-else
-  SED_DISABLE_BACKUP=""
-fi
-
 function cnt_lines() {
   FILE=$1
   cat $1 | wc -l
@@ -36,19 +30,27 @@ function set_property() {
   VALUE=$2
   FILE=$3
 
-  REGEXP="${1//\./\\\.}\s*="
-  if [ $(grep $REGEXP $FILE | wc -l) -eq 0 ]; then
-    write_prop $1 $2 $3
-  else
-    # delete line of specified property
+  REGEXP="${PROPERTY//\./\\.}\\s*="
+
+  if grep -q "$REGEXP" "$FILE"; then
+     # delete line of specified property
     LINE_COUNT=$(cnt_lines $FILE)
-    sed -i $SED_DISABLE_BACKUP "/${REGEXP}/d" $FILE
+
+    if [[ "$OSTYPE" == "darwin"* ]]; then
+      sed -i '' /${REGEXP}/d "$FILE"
+    else
+      sed -i /${REGEXP}/d "$FILE"
+    fi
 
     # add property if at least one line deleted
     NEW_LINE_COUNT=$(cnt_lines $FILE)
-    if [ $LINE_COUNT -gt $NEW_LINE_COUNT ]; then
+
+    if [[ $LINE_COUNT -gt $NEW_LINE_COUNT ]]; then
       write_prop $1 $2 $3
     fi
+
+  else
+    write_prop $1 $2 $3
   fi
 }