Browse Source

[script] make property_utils.sh run on OSX + improve "if grep"

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
tags/6.0-RC1
Priit Liivak 8 years ago
parent
commit
047e954bd5
1 changed files with 15 additions and 13 deletions
  1. 15
    13
      scripts/property_utils.sh

+ 15
- 13
scripts/property_utils.sh View File

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


Loading…
Cancel
Save