Last active
June 17, 2016 18:07
-
-
Save mikedougherty/60ffc8f62caa2ee7334d to your computer and use it in GitHub Desktop.
Script to get the latest static binaries of docker, docker-machine, docker-compose.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Requires: jq, curl | |
| DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" | |
| [[ -n "$GITHUB_TOKEN" ]] && AUTH_ARGS="-u $GITHUB_TOKEN:" | |
| function machine_url() { | |
| echo "https://github.com/docker/machine/releases/download/${1}/docker-machine-$( uname -s )-$( uname -m)" | |
| } | |
| function compose_url() { | |
| echo "https://github.com/docker/compose/releases/download/${1}/docker-compose-$( uname -s )-$( uname -m )" | |
| } | |
| function docker_url() { | |
| DOMAIN="get.docker.com" | |
| [[ "$1" == *"rc"* ]] && DOMAIN="test.docker.com" | |
| echo "https://$DOMAIN/builds/$(uname -s)/$(uname -m)/docker-${1//v/}.tgz" | |
| } | |
| function default_unpack() { | |
| cat /dev/stdin > /dev/stdout | |
| } | |
| function docker_unpack() { | |
| tar -Oxzf /dev/stdin docker/docker | |
| } | |
| function get_latest_release() { | |
| curl $AUTH_ARGS -sSL "https://api.github.com/repos/${1}/releases?per_page=1" | jq -r ".[0].tag_name" | |
| } | |
| function update() { | |
| REPO=$1 ; shift | |
| NAME=$1 ; shift | |
| URL_FUNC=$1 ; shift | |
| UNPACK_FUNC=$1 ; shift | |
| trap 'echo "Failed to get ${NAME}" >&2' EXIT | |
| VERSION=$( get_latest_release "$REPO" ) | |
| echo -n "Downloading ${NAME}-${VERSION} ... " | |
| curl $AUTH_ARGS -sSL "$(eval "$URL_FUNC" "${VERSION}")" | $UNPACK_FUNC > "${NAME}-${VERSION}" | |
| chmod u+x "${NAME}-${VERSION}" | |
| ln -nfs "$(pwd)/${NAME}-${VERSION}" "${NAME}" | |
| echo -n "done: " | |
| eval "${NAME} --version" | |
| trap '' EXIT | |
| } | |
| function docker_updater_main() { | |
| pushd "$DIR" >/dev/null | |
| update docker/docker docker-client docker_url docker_unpack | |
| update docker/machine docker-machine machine_url default_unpack | |
| update docker/compose docker-compose compose_url default_unpack | |
| popd >/dev/null | |
| } | |
| docker_updater_main |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment