complex-bash-env 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #!/bin/bash -e
  2. call=$1
  3. function iterate() {
  4. local env_var_name=$1
  5. local env_var=${!env_var_name}
  6. if [ "$(complex-bash-env isTable "$env_var")" = true ]; then
  7. complex-bash-env stripTablePrefix "${env_var}"
  8. else
  9. echo "${env_var_name}"
  10. fi
  11. }
  12. function isTable() {
  13. local env_var=$1
  14. if [ "$(echo "${env_var}" | grep "#COMPLEX_BASH_ENV:TABLE:" -c )" -eq 1 ]; then
  15. echo true
  16. else
  17. echo false
  18. fi
  19. }
  20. function isRow() {
  21. local env_var=$1
  22. if [ "$(echo "${env_var}" | grep "#COMPLEX_BASH_ENV:ROW:" -c )" -eq 1 ]; then
  23. echo true
  24. else
  25. echo false
  26. fi
  27. }
  28. function getRowKey() {
  29. local env_var=$1
  30. local row_key_var_name
  31. row_key_var_name=$(complex-bash-env getRowKeyVarName "$env_var")
  32. echo "${!row_key_var_name}"
  33. }
  34. function getRowValue() {
  35. local env_var=$1
  36. local row_value_var_name
  37. row_value_var_name=$(complex-bash-env getRowValueVarName "$env_var")
  38. echo "${!row_value_var_name}"
  39. }
  40. function getRowKeyVarName() {
  41. local env_var=$1
  42. local row=($(complex-bash-env getRow "$env_var"))
  43. echo "${row[0]}"
  44. }
  45. function getRowValueVarName() {
  46. local env_var=$1
  47. local row=($(complex-bash-env getRow "$env_var"))
  48. echo "${row[1]}"
  49. }
  50. function getRow() {
  51. local env_var
  52. env_var=$1
  53. if [ "$(complex-bash-env isRow "$env_var")" = true ]; then
  54. local env_var
  55. env_var=$(complex-bash-env stripRowPrefix "$env_var")
  56. echo "${env_var}"
  57. else
  58. echo "$env_var is not a complex bash env row"
  59. exit 1
  60. fi
  61. }
  62. function stripTablePrefix() {
  63. local env_var=$1
  64. stripPrefix "$env_var" "#COMPLEX_BASH_ENV:TABLE:"
  65. }
  66. function stripRowPrefix() {
  67. local env_var=$1
  68. stripPrefix "$env_var" "#COMPLEX_BASH_ENV:ROW:"
  69. }
  70. function stripPrefix() {
  71. local env_var=$1
  72. local prefix=$2
  73. local r=${env_var#$prefix}
  74. echo "${r}"
  75. }
  76. shift
  77. $call "$@"