Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- source ./validation.sh
- validateFormat scripts/release/DBA-1234 || echo "fail"
- validate
- find scripts/releases -name '*.sql' | xargs validateFormat | validateDescriptor | cat | mysql
- find scripts/releases -name '*.sql' | xargs validate | cat | mysql
- ([A-Z]{2,5}[_-][0-9]{1,5})[_-]?(.*)
- #!/usr/bin/env bash
- user=root
- password=my-secret-pw
- port=3306
- host=127.0.0.1
- release_format=$(cat .utils/release-format)
- releases=${scripts}/releases/
- validators=${scripts}/validators/
- descriptors=${scripts}/descriptors/
- rollbacks=${scripts}/rollbacks/
- validateDescriptor() {
- [[ -z $1 ]] && return -1
- local script=$(basename $1)
- grep -rq ${script} ${descriptors};
- return $?
- }
- ensureRollback() {
- [[ -z $1 ]] && return -1
- ls ${rollbacks}/$(toTicket ${1})* 2>&1 >/dev/null
- return $?
- }
- ensureValidator() {
- [[ -z $1 ]] && return -1
- ls ${validators}/$(toTicket ${1})* 2>&1 >/dev/null
- return $?
- }
- validateFormat() {
- [[ -z $1 ]] && return -1
- [[ $(basename -s .sql $1) =~ ${release_format} ]] && return 0 || return -1
- }
- toTicket() {
- [[ -n $1 ]] && basename -s .sql ${1} | sed -E "s/$release_format/1/"
- }
- toValidator() {
- [[ -z $1 ]] && return -1
- local ticket=$(toTicket ${1})
- local validator=$(ls ${validators}/${ticket}* | head -1)
- [[ $? != 0 ]] && return $? || echo ${validator}
- }
- applyValidationScripts() {
- [[ -z $1 ]] && return -1
- local validator=$(toValidator ${1})
- if [[ ! -e ${validator} ]]; then
- return -1
- fi
- result=$(mysql -sN -h ${host} -u ${user} -p${password} -P ${port} <${validator})
- if [[ $? != 0 ]]; then
- return $?
- fi
- if [[ $(echo ${result} | wc -l | tr -d ' ') != 1 ]]; then
- echo "validation result count was more than 1 row. Invalid results"
- return -1
- else
- return $((result - 1))
- fi
- }
- validate() {
- for release in $(find ${releases} -type f -exec basename -s .sql {} ;); do
- # applyValidationScripts ${release}
- validateFormat ${release} && ensureRollback ${release} && ensureValidator ${release} && validateDescriptor ${release}
- [[ $? != 0 ]] && echo "${release} failed validation"
- done;
- }
- [[ $(basename -s .sql "$1") =~ ${release_format} ]]
- # I removed `&& return 0 || return -1` - see next item
- # true if the first argument exists
- one_exists()
- {
- test -e "$1"
- }
- ensureRollback() {
- test -n "$1" && one_exists "${rollbacks}/$(toTicket ${1})"*
- }
Add Comment
Please, Sign In to add comment