shell dot on steroids https://pagure.io/shellfu

deploy.sh 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/bin/bash
  2. get_dst() {
  3. #
  4. # Find out target path for src file $2 of group $1
  5. #
  6. local grp=$1
  7. local src=$2
  8. echo "$(get_root $grp)/$(ini path "files:$group:$src")"
  9. }
  10. get_root() {
  11. #
  12. # Find out target rooot for group $1
  13. #
  14. local group="$1"
  15. local varname="${group^^*}_DIR"
  16. test -n "${!varname}" || die "missing in config.mk: $varname"
  17. echo "${!varname}"
  18. }
  19. install() {
  20. #
  21. # Install product
  22. #
  23. local dst group mode src
  24. ini path "main:group" \
  25. | while read group;
  26. do
  27. mode=$(ini path "modes:$group")
  28. ini lskeys "files:$group" \
  29. | while read src;
  30. do
  31. dst=$(get_dst "$group" "$src")
  32. command -p install -DTvm $mode $src "$dst"
  33. done
  34. done
  35. test -f .autoclean && clean || :
  36. }
  37. uninstall() {
  38. #
  39. # Uninstall product
  40. #
  41. local dst group src
  42. ini path "main:group" \
  43. | while read group;
  44. do
  45. ini lskeys "files:$group" \
  46. | while read src;
  47. do
  48. dst=$(get_dst "$group" "$src")
  49. rm -vf "$dst"
  50. done
  51. done
  52. }