Some more refactoring for CI script.

This commit is contained in:
Renato Silva
2016-02-24 17:48:54 -03:00
parent 9012e8b4d3
commit 344f4ab184

View File

@@ -7,14 +7,14 @@
# Functions
failure() { colored; printf "\n${red}[MSYS2 CI] FAILURE:${normal} ${1}.\n\n"; exit 1; }
success() { colored; printf "\n${green}[MSYS2 CI] SUCCESS:${normal} ${1}.\n\n"; exit 0; }
status() { colored; printf "\n${cyan}[MSYS2 CI]${normal} ${1}\n\n"; printf "${2:+\t%s\n}" "${2:+${@:2}}" | sed 's/.*::/\t/'; }
colored() { [[ -t 1 && -z "${normal}" ]] || return; normal='\e[0m'; red='\e[1;31m'; green='\e[1;32m'; cyan='\e[1;36m'; }
status() { colored; printf "\n${cyan}[MSYS2 CI]${normal} ${1}\n\n"; printf "${2:+\t%s\n}" "${2:+${@:2}}"; }
colored() { [[ -t 1 && -z "${normal}" ]] || return; normal='\e[0m'; red='\e[1;31m'; green='\e[1;32m'; cyan='\e[1;36m'; }
execute() { cd "${package:-.}"; status "${package:+$package: }${1}"; ${@:2} || failure "${package:+$package: }${1} failed"; cd - > /dev/null; }
git_config() { test -n "$(git config ${1})" && return 0; git config --global "${1}" "${2}" || failure 'Could not configure Git for makepkg'; }
as_list() { result=(); local lines=(); while IFS= read -r line; do lines+=("${line}"); [[ "${line}" = ${1} ]] && result+=("${line}"); done <<<"${2}"; test -n "${lines}"; }
list_changes() { as_list "${1}" "$(git log "${@:2}" upstream/master.. | grep -v ^$ | sort -u)" || as_list "${1}" "$(git log "${@:2}" HEAD^.. | grep -v ^$ | sort -u)"; }
list_packages() { packages=(); list_changes '*/PKGBUILD' --pretty=format: --name-only && for recipe in "${result[@]}"; do packages+=("${recipe%/PKGBUILD}"); done; }
list_commits() { commits=(); list_changes '*' --pretty=format:'%ai::[%h] %s' && commits=("${result[@]}"); }
as_list() { local -n nameref="${1}"; local result=1; while IFS= read -r line; do test -z "${line}" && continue; result=0; [[ "${line}" = ${2} ]] && nameref+=("${line/${3}/}"); done <<<"${4}"; return ${result}; }
list_changes() { as_list "${@:1:3}" "$(git log "${@:4}" upstream/master.. | sort -u)" || as_list "${@:1:3}" "$(git log "${@:4}" HEAD^.. | sort -u)"; }
list_packages() { list_changes packages '*/PKGBUILD' '%/PKGBUILD' --pretty=format: --name-only; }
list_commits() { list_changes commits '*' '#*::' --pretty=format:'%ai::[%h] %s'; }
# Configure
cd "$(dirname "$0")"