Merge pull request #12242 from tianon/functionalize-install

Wrap install.sh in a function
This commit is contained in:
Phil Estes 2015-04-10 14:15:38 -04:00
commit 904295fd71
1 changed files with 213 additions and 196 deletions

View File

@ -20,20 +20,41 @@ command_exists() {
command -v "$@" > /dev/null 2>&1 command -v "$@" > /dev/null 2>&1
} }
echo_docker_as_nonroot() {
your_user=your-user
[ "$user" != 'root' ] && your_user="$user"
# intentionally mixed spaces and tabs here -- tabs are stripped by "<<-EOF", spaces are kept in the output
cat <<-EOF
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:
sudo usermod -aG docker $your_user
Remember that you will have to log out and back in for this to take effect!
EOF
}
do_install() {
case "$(uname -m)" in case "$(uname -m)" in
*64) *64)
;; ;;
*) *)
echo >&2 'Error: you are not using a 64bit platform.' cat >&2 <<-'EOF'
echo >&2 'Docker currently only supports 64bit platforms.' Error: you are not using a 64bit platform.
Docker currently only supports 64bit platforms.
EOF
exit 1 exit 1
;; ;;
esac esac
if command_exists docker || command_exists lxc-docker; then if command_exists docker || command_exists lxc-docker; then
echo >&2 'Warning: "docker" or "lxc-docker" command appears to already exist.' cat >&2 <<-'EOF'
echo >&2 'Please ensure that you do not already have docker installed.' Warning: "docker" or "lxc-docker" command appears to already exist.
echo >&2 'You may press Ctrl+C now to abort this process and rectify this situation.' Please ensure that you do not already have docker installed.
You may press Ctrl+C now to abort this process and rectify this situation.
EOF
( set -x; sleep 20 ) ( set -x; sleep 20 )
fi fi
@ -46,8 +67,10 @@ if [ "$user" != 'root' ]; then
elif command_exists su; then elif command_exists su; then
sh_c='su -c' sh_c='su -c'
else else
echo >&2 'Error: this installer needs the ability to run commands as root.' cat >&2 <<-'EOF'
echo >&2 'We are unable to find either "sudo" or "su" available to make this happen.' Error: this installer needs the ability to run commands as root.
We are unable to find either "sudo" or "su" available to make this happen.
EOF
exit 1 exit 1
fi fi
fi fi
@ -99,16 +122,7 @@ case "$lsb_dist" in
$sh_c 'docker version' $sh_c 'docker version'
) || true ) || true
fi fi
your_user=your-user echo_docker_as_nonroot
[ "$user" != 'root' ] && your_user="$user"
echo
echo 'If you would like to use Docker as a non-root user, you should now consider'
echo 'adding your user to the "docker" group with something like:'
echo
echo ' sudo usermod -aG docker' $your_user
echo
echo 'Remember that you will have to log out and back in for this to take effect!'
echo
exit 0 exit 0
;; ;;
@ -183,31 +197,28 @@ case "$lsb_dist" in
$sh_c 'docker version' $sh_c 'docker version'
) || true ) || true
fi fi
your_user=your-user echo_docker_as_nonroot
[ "$user" != 'root' ] && your_user="$user"
echo
echo 'If you would like to use Docker as a non-root user, you should now consider'
echo 'adding your user to the "docker" group with something like:'
echo
echo ' sudo usermod -aG docker' $your_user
echo
echo 'Remember that you will have to log out and back in for this to take effect!'
echo
exit 0 exit 0
;; ;;
gentoo) gentoo)
if [ "$url" = "https://test.docker.com/" ]; then if [ "$url" = "https://test.docker.com/" ]; then
echo >&2 # intentionally mixed spaces and tabs here -- tabs are stripped by "<<-'EOF'", spaces are kept in the output
echo >&2 ' You appear to be trying to install the latest nightly build in Gentoo.' cat >&2 <<-'EOF'
echo >&2 ' The portage tree should contain the latest stable release of Docker, but'
echo >&2 ' if you want something more recent, you can always use the live ebuild' You appear to be trying to install the latest nightly build in Gentoo.'
echo >&2 ' provided in the "docker" overlay available via layman. For more' The portage tree should contain the latest stable release of Docker, but'
echo >&2 ' instructions, please see the following URL:' if you want something more recent, you can always use the live ebuild'
echo >&2 ' https://github.com/tianon/docker-overlay#using-this-overlay' provided in the "docker" overlay available via layman. For more'
echo >&2 ' After adding the "docker" overlay, you should be able to:' instructions, please see the following URL:'
echo >&2 ' emerge -av =app-emulation/docker-9999'
echo >&2 https://github.com/tianon/docker-overlay#using-this-overlay'
After adding the "docker" overlay, you should be able to:'
emerge -av =app-emulation/docker-9999'
EOF
exit 1 exit 1
fi fi
@ -219,7 +230,8 @@ case "$lsb_dist" in
;; ;;
esac esac
cat >&2 <<'EOF' # intentionally mixed spaces and tabs here -- tabs are stripped by "<<-'EOF'", spaces are kept in the output
cat >&2 <<-'EOF'
Either your platform is not easily detectable, is not supported by this Either your platform is not easily detectable, is not supported by this
installer script (yet - PRs welcome! [hack/install.sh]), or does not yet have installer script (yet - PRs welcome! [hack/install.sh]), or does not yet have
@ -230,3 +242,8 @@ cat >&2 <<'EOF'
EOF EOF
exit 1 exit 1
}
# wrapped up in a function so that we have some protection against only getting
# half the file during "curl | sh"
do_install