Guest User

Untitled

a guest
Nov 22nd, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. source ./validation.sh
  2. validateFormat scripts/release/DBA-1234 || echo "fail"
  3.  
  4. validate
  5.  
  6. find scripts/releases -name '*.sql' | xargs validateFormat | validateDescriptor | cat | mysql
  7.  
  8. find scripts/releases -name '*.sql' | xargs validate | cat | mysql
  9.  
  10. ([A-Z]{2,5}[_-][0-9]{1,5})[_-]?(.*)
  11.  
  12. #!/usr/bin/env bash
  13.  
  14. user=root
  15. password=my-secret-pw
  16. port=3306
  17. host=127.0.0.1
  18. release_format=$(cat .utils/release-format)
  19. releases=${scripts}/releases/
  20. validators=${scripts}/validators/
  21. descriptors=${scripts}/descriptors/
  22. rollbacks=${scripts}/rollbacks/
  23.  
  24.  
  25. validateDescriptor() {
  26. [[ -z $1 ]] && return -1
  27. local script=$(basename $1)
  28. grep -rq ${script} ${descriptors};
  29. return $?
  30. }
  31.  
  32.  
  33. ensureRollback() {
  34. [[ -z $1 ]] && return -1
  35. ls ${rollbacks}/$(toTicket ${1})* 2>&1 >/dev/null
  36. return $?
  37. }
  38.  
  39. ensureValidator() {
  40. [[ -z $1 ]] && return -1
  41. ls ${validators}/$(toTicket ${1})* 2>&1 >/dev/null
  42. return $?
  43. }
  44.  
  45. validateFormat() {
  46. [[ -z $1 ]] && return -1
  47. [[ $(basename -s .sql $1) =~ ${release_format} ]] && return 0 || return -1
  48. }
  49.  
  50.  
  51. toTicket() {
  52. [[ -n $1 ]] && basename -s .sql ${1} | sed -E "s/$release_format/1/"
  53. }
  54.  
  55. toValidator() {
  56. [[ -z $1 ]] && return -1
  57. local ticket=$(toTicket ${1})
  58. local validator=$(ls ${validators}/${ticket}* | head -1)
  59. [[ $? != 0 ]] && return $? || echo ${validator}
  60. }
  61.  
  62. applyValidationScripts() {
  63. [[ -z $1 ]] && return -1
  64. local validator=$(toValidator ${1})
  65.  
  66. if [[ ! -e ${validator} ]]; then
  67. return -1
  68. fi
  69.  
  70. result=$(mysql -sN -h ${host} -u ${user} -p${password} -P ${port} <${validator})
  71. if [[ $? != 0 ]]; then
  72. return $?
  73. fi
  74.  
  75. if [[ $(echo ${result} | wc -l | tr -d ' ') != 1 ]]; then
  76. echo "validation result count was more than 1 row. Invalid results"
  77. return -1
  78. else
  79. return $((result - 1))
  80. fi
  81. }
  82.  
  83. validate() {
  84. for release in $(find ${releases} -type f -exec basename -s .sql {} ;); do
  85. # applyValidationScripts ${release}
  86. validateFormat ${release} && ensureRollback ${release} && ensureValidator ${release} && validateDescriptor ${release}
  87. [[ $? != 0 ]] && echo "${release} failed validation"
  88. done;
  89. }
  90.  
  91. [[ $(basename -s .sql "$1") =~ ${release_format} ]]
  92. # I removed `&& return 0 || return -1` - see next item
  93.  
  94. # true if the first argument exists
  95. one_exists()
  96. {
  97. test -e "$1"
  98. }
  99.  
  100. ensureRollback() {
  101. test -n "$1" && one_exists "${rollbacks}/$(toTicket ${1})"*
  102. }
Add Comment
Please, Sign In to add comment