|  | #!/usr/bin/env bash | 
|  |  | 
|  | # Licensed to the Apache Software Foundation (ASF) under one | 
|  | # or more contributor license agreements.  See the NOTICE file | 
|  | # distributed with this work for additional information | 
|  | # regarding copyright ownership.  The ASF licenses this file | 
|  | # to you under the Apache License, Version 2.0 (the | 
|  | # "License"); you may not use this file except in compliance | 
|  | # with the License.  You may obtain a copy of the License at | 
|  | # | 
|  | #     http://www.apache.org/licenses/LICENSE-2.0 | 
|  | # | 
|  | # Unless required by applicable law or agreed to in writing, software | 
|  | # distributed under the License is distributed on an "AS IS" BASIS, | 
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | # See the License for the specific language governing permissions and | 
|  | # limitations under the License. | 
|  |  | 
|  | # SHELLDOC-IGNORE | 
|  |  | 
|  | # ------------------------------------------------------- | 
|  | function showWelcome { | 
|  | # http://patorjk.com/software/taag/#p=display&f=Doom&t=Beam%20Build%20Env. | 
|  | cat << "Welcome-message" | 
|  |  | 
|  | ______                       ______       _ _     _   _____ | 
|  | | ___ \                      | ___ \     (_) |   | | |  ___| | 
|  | | |_/ / ___  __ _ _ __ ___   | |_/ /_   _ _| | __| | | |__ _ ____   __ | 
|  | | ___ \/ _ \/ _` | '_ ` _ \  | ___ \ | | | | |/ _` | |  __| '_ \ \ / / | 
|  | | |_/ /  __/ (_| | | | | | | | |_/ / |_| | | | (_| | | |__| | | \ V / | 
|  | \____/ \___|\__,_|_| |_| |_| \____/ \__,_|_|_|\__,_| \____/_| |_|\_(_) | 
|  |  | 
|  | This is the standard Beam Developer build environment. | 
|  | This has all the right tools installed required to build | 
|  | Apache Beam from source. | 
|  |  | 
|  | Welcome-message | 
|  | } | 
|  |  | 
|  | # ------------------------------------------------------- | 
|  |  | 
|  | function showAbort { | 
|  | cat << "Abort-message" | 
|  |  | 
|  | ___  _                _   _ | 
|  | / _ \| |              | | (_) | 
|  | / /_\ \ |__   ___  _ __| |_ _ _ __   __ _ | 
|  | |  _  | '_ \ / _ \| '__| __| | '_ \ / _\` | | 
|  | | | | | |_) | (_) | |  | |_| | | | | (_| | | 
|  | \_| |_/_.__/ \___/|_|   \__|_|_| |_|\__, | | 
|  | __/ | | 
|  | |___/ | 
|  |  | 
|  | Abort-message | 
|  | } | 
|  |  | 
|  | # ------------------------------------------------------- | 
|  |  | 
|  | function failIfUserIsRoot { | 
|  | if [ "$(id -u)" -eq "0" ]; # If you are root then something went wrong. | 
|  | then | 
|  | cat <<End-of-message | 
|  |  | 
|  | Apparently you are inside this docker container as the user root. | 
|  | Putting it simply: | 
|  |  | 
|  | This should not occur. | 
|  |  | 
|  | Known possible causes of this are: | 
|  | 1) Running this script as the root user ( Just don't ) | 
|  | Check https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user | 
|  | 2) Running an old docker version ( upgrade to 1.4.1 or higher ) | 
|  |  | 
|  | End-of-message | 
|  |  | 
|  | showAbort | 
|  |  | 
|  | logout | 
|  |  | 
|  | fi | 
|  | } | 
|  |  | 
|  | # ------------------------------------------------------- | 
|  |  | 
|  | function warnIfLowMemory { | 
|  | MINIMAL_MEMORY=2046755 | 
|  | INSTALLED_MEMORY=$(grep -F MemTotal /proc/meminfo | awk '{print $2}') | 
|  | if [[ $((INSTALLED_MEMORY)) -lt $((MINIMAL_MEMORY)) ]]; then | 
|  | cat <<End-of-message | 
|  |  | 
|  | _                    ___  ___ | 
|  | | |                   |  \\/  | | 
|  | | |     _____      __ | .  . | ___ _ __ ___   ___  _ __ _   _ | 
|  | | |    / _ \\ \\ /\\ / / | |\\/| |/ _ \\ '_ \` _ \\ / _ \\| '__| | | | | 
|  | | |___| (_) \\ V  V /  | |  | |  __/ | | | | | (_) | |  | |_| | | 
|  | \\_____/\\___/ \\_/\\_/   \\_|  |_/\\___|_| |_| |_|\\___/|_|   \\__, | | 
|  | __/ | | 
|  | |___/ | 
|  |  | 
|  | Your system is running on very little memory. | 
|  | This means it may work but it wil most likely be slower than needed. | 
|  |  | 
|  | If you are running this via boot2docker you can simply increase | 
|  | the available memory to at least ${MINIMAL_MEMORY}KiB | 
|  | (you have ${INSTALLED_MEMORY}KiB ) | 
|  |  | 
|  | End-of-message | 
|  | fi | 
|  | } | 
|  |  | 
|  | # ------------------------------------------------------- | 
|  |  | 
|  | showWelcome | 
|  | warnIfLowMemory | 
|  | failIfUserIsRoot | 
|  |  | 
|  | # ------------------------------------------------------- | 
|  |  | 
|  | . "/scripts/bashcolors.sh" | 
|  | . "/usr/lib/git-core/git-sh-prompt" | 
|  | export PS1='\['${IBlue}${On_Black}'\] \u@\['${IWhite}${On_Red}'\][Beam Build Env.]\['${IBlue}${On_Black}'\]:\['${Cyan}${On_Black}'\]\w$(declare -F __git_ps1 &>/dev/null && __git_ps1 " \['${BIPurple}'\]{\['${BIGreen}'\]%s\['${BIPurple}'\]}")\['${BIBlue}'\] ]\['${Color_Off}'\]\n$ ' |