diff --git a/bashbrew.sh b/bashbrew.sh index d17b25a..ca11033 100755 --- a/bashbrew.sh +++ b/bashbrew.sh @@ -254,14 +254,14 @@ while [ "$#" -gt 0 ]; do continue fi - echo "Processing $repoTag ..." - thisLog="$logDir/$subcommand-$repoTag.log" touch "$thisLog" ln -sf "$thisLog" "$latestLogDir/$(basename "$thisLog")" case "$subcommand" in build) + echo "Processing $repoTag ..." + if ! ( cd "$gitRepo" && git rev-parse --verify "${gitRef}^{commit}" &> /dev/null ); then echo "- failed; invalid ref: $gitRef" didFail=1 @@ -321,8 +321,9 @@ while [ "$#" -gt 0 ]; do push) for namespace in $namespaces; do if [ "$doPush" ]; then - if ! "$docker" push "$namespace/$repoTag"; then - echo >&2 "- $namespace/$repoTag failed to push!" + echo "Pushing $namespace/$repoTag..." + if ! "$docker" push "$namespace/$repoTag" &> "$thisLog"; then + echo >&2 "- $namespace/$repoTag failed to push; see $thisLog" fi else echo "$docker push" "$namespace/$repoTag" diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..4c71b7b --- /dev/null +++ b/build.sh @@ -0,0 +1,6 @@ +#!/bin/bash +set -e + +dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" + +exec "$dir/bashbrew.sh" build "$@" diff --git a/push.sh b/push.sh index 3e3bd77..3b2c35b 100755 --- a/push.sh +++ b/push.sh @@ -1,133 +1,6 @@ #!/bin/bash set -e -# so we can have fancy stuff like !(pattern) -shopt -s extglob - dir="$(dirname "$(readlink -f "$BASH_SOURCE")")" -library="$dir/../library" -logs="$dir/logs" -namespaces='library stackbrew' -docker='docker' - -library="$(readlink -f "$library")" -logs="$(readlink -f "$logs")" -# TODO actually log stuff - -# arg handling: all args are [repo|repo:tag] -usage() { - cat <&2 && false; })" -eval set -- "$opts" - -doPush=1 -buildAll= -while true; do - flag=$1 - shift - case "$flag" in - --help|-h|'-?') - usage - exit 0 - ;; - --all) buildAll=1 ;; - --no-push) doPush= ;; - --library) library="$1" && shift ;; - --logs) logs="$1" && shift ;; - --namespaces) namespaces="$1" && shift ;; - --docker) docker="$1" && shift ;; - --) - break - ;; - *) - { - echo "error: unknown flag: $flag" - usage - } >&2 - exit 1 - ;; - esac -done - -repos=() -if [ "$buildAll" ]; then - repos=( "$library"/!(MAINTAINERS) ) -fi -repos+=( "$@" ) - -repos=( "${repos[@]%/}" ) - -if [ "${#repos[@]}" -eq 0 ]; then - echo >&2 'error: no repos specified' - usage >&2 - exit 1 -fi - -for repoTag in "${repos[@]}"; do - repo="${repoTag%%:*}" - tag="${repoTag#*:}" - [ "$repo" != "$tag" ] || tag= - - if [ -f "$repo" ]; then - repoFile="$repo" - repo="$(basename "$repoFile")" - repoTag="${repo}${tag:+:$tag}" - else - repoFile="$library/$repo" - fi - - repoFile="$(readlink -f "$repoFile")" - - # parse the repo library file - IFS=$'\n' - tagList=( $(awk -F ': +' '!/^#|^\s*$/ { print $1 }' "$repoFile") ) - unset IFS - - tags=() - for tag in "${tagList[@]}"; do - tags+=( "$repo:$tag" ) - done - - pushes=() - if [ "$repo" = "$repoTag" ]; then - pushes=( "${tags[@]}" ) - else - pushes+=( "$repoTag" ) - fi - - for pushTag in "${pushes[@]}"; do - for namespace in $namespaces; do - if [ "$doPush" ]; then - if ! "$docker" push "$namespace/$pushTag"; then - echo >&2 "- $namespace/$pushTag failed to push!" - fi - else - echo "$docker push" "$namespace/$pushTag" - fi - done - done -done +exec "$dir/bashbrew.sh" push "$@"