Переглянути джерело

Finish combining to one script, make nifty helpers

Joe Ferguson 11 роки тому
батько
коміт
6ac7163cf6
3 змінених файлів з 12 додано та 132 видалено
  1. 5 4
      bashbrew/bashbrew.sh
  2. 6 0
      bashbrew/build.sh
  3. 1 128
      bashbrew/push.sh

+ 5 - 4
bashbrew/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"

+ 6 - 0
bashbrew/build.sh

@@ -0,0 +1,6 @@
+#!/bin/bash
+set -e
+
+dir="$(dirname "$(readlink -f "$BASH_SOURCE")")"
+
+exec "$dir/bashbrew.sh" build "$@"

+ 1 - 128
bashbrew/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 <<EOUSAGE
-
-usage: $0 [options] [repo[:tag] ...]
-   ie: $0 --all
-       $0 debian ubuntu:12.04
-
-   This script pushes the specified Docker images from library that are built
-   and tagged in the specified namespaces.
-
-options:
-  --help, -h, -?     Print this help message
-  --all              Pushes all Docker images built for the given namespaces
-  --no-push          Don't actually push the images to the Docker Hub
-  --library="$library"
-                     Where to find repository manifest files
-  --namespaces="$namespaces"
-                     Space separated list of namespaces to tag images in after
-                     building
-  --docker="$docker"
-                     Use a custom Docker binary.
-
-EOUSAGE
-}
-
-opts="$(getopt -o 'h?' --long 'help,all,no-push,library:,logs:,namespaces:,docker:' -- "$@" || { usage >&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 "$@"