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.0KB

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. if [[ "$OSTYPE" == "darwin"* ]]; then
  10. SED_DISABLE_BACKUP=" ''"
  11. else
  12. SED_DISABLE_BACKUP=""
  13. fi
  14. function cnt_lines() {
  15. FILE=$1
  16. cat $1 | wc -l
  17. }
  18. function write_prop() {
  19. PROPERTY=$1
  20. VALUE=$2
  21. FILE=$3
  22. # uncomment below to help debug calls to set_property
  23. #echo "setting property $PROPERTY to value $VALUE in $FILE"
  24. echo "" >> $FILE
  25. echo "${PROPERTY}=${VALUE}" >> $FILE
  26. }
  27. function set_property() {
  28. PROPERTY=$1
  29. VALUE=$2
  30. FILE=$3
  31. REGEXP="${1//\./\\\.}\s*="
  32. if [ $(grep $REGEXP $FILE | wc -l) -eq 0 ]; then
  33. write_prop $1 $2 $3
  34. else
  35. # delete line of specified property
  36. LINE_COUNT=$(cnt_lines $FILE)
  37. sed -i $SED_DISABLE_BACKUP "/${REGEXP}/d" $FILE
  38. # add property if at least one line deleted
  39. NEW_LINE_COUNT=$(cnt_lines $FILE)
  40. if [ $LINE_COUNT -gt $NEW_LINE_COUNT ]; then
  41. write_prop $1 $2 $3
  42. fi
  43. fi
  44. }