You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

property_utils.sh 1.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/bin/bash
  2. ###############################
  3. # exposes library functions to modify properties in a property
  4. #
  5. # TODO function append_property
  6. #
  7. ###############################
  8. set -euo pipefail
  9. function cnt_lines() {
  10. local FILE=$1
  11. cat $FILE | wc -l
  12. }
  13. function write_prop() {
  14. local PROPERTY=$1
  15. local VALUE=$2
  16. local FILE=$3
  17. # uncomment below to help debug calls to set_property
  18. #echo "setting property $PROPERTY to value $VALUE in $FILE"
  19. echo "" >> $FILE
  20. echo "${PROPERTY}=${VALUE}" >> $FILE
  21. }
  22. function set_property() {
  23. local PROPERTY=$1
  24. local VALUE=$2
  25. local FILE=$3
  26. local REGEXP="${PROPERTY//\./\\.}\\s*="
  27. if grep -q "$REGEXP" "$FILE"; then
  28. # delete line of specified property
  29. LINE_COUNT=$(cnt_lines $FILE)
  30. if [[ "$OSTYPE" == "darwin"* ]]; then
  31. sed -i '' /${REGEXP}/d "$FILE"
  32. else
  33. sed -i /${REGEXP}/d "$FILE"
  34. fi
  35. # add property if at least one line deleted
  36. local NEW_LINE_COUNT=$(cnt_lines $FILE)
  37. if [[ $LINE_COUNT -gt $NEW_LINE_COUNT ]]; then
  38. write_prop $PROPERTY $VALUE $FILE
  39. fi
  40. else
  41. write_prop $PROPERTY $VALUE $FILE
  42. fi
  43. }