Skip to content

Commit

Permalink
[script] make property_utils.sh run on OSX + improve "if grep"
Browse files Browse the repository at this point in the history
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
  • Loading branch information
priitliivak authored and sns-seb committed May 23, 2016
1 parent 5edd6db commit 047e954
Showing 1 changed file with 15 additions and 13 deletions.
28 changes: 15 additions & 13 deletions scripts/property_utils.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
}

Expand Down

0 comments on commit 047e954

Please sign in to comment.