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. #!/usr/bin/env 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. cnt_lines() {
  10. local FILE=$1
  11. wc -l < "$FILE"
  12. }
  13. 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. set_property() {
  23. local PROPERTY=$1
  24. local VALUE=$2
  25. local FILE=$3
  26. local REGEXP="^${PROPERTY//\./\\.}[ \\t]*="
  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. }