github.com/rochacon/deis@v1.0.2-0.20150903015341-6839b592a1ff/builder/rootfs/usr/local/src/slugrunner/runner/init (about) 1 #!/usr/bin/env bash 2 set -eo pipefail 3 4 if [[ -f /etc/environment_proxy ]]; then 5 source /etc/environment_proxy 6 fi 7 8 ## Load slug from Bind Mount, URL or STDIN 9 10 export HOME=/app 11 mkdir -p $HOME 12 13 if [[ $(ls -A $HOME) ]]; then 14 true 15 elif [[ $SLUG_URL ]]; then 16 curl -s "$SLUG_URL" | tar -xzC $HOME 17 unset SLUG_URL 18 else 19 cat | tar -xzC $HOME 20 fi 21 22 cd $HOME 23 24 ## Load profile.d and release config 25 26 shopt -s nullglob 27 mkdir -p .profile.d 28 29 # If a file is created in slugbuilder with the wrong UID, change it. But we 30 # don't mess with anything owned by UID 0. 31 find . -user 1000 -exec chown 2000:2000 {} \; 32 33 if [[ -s .release ]]; then 34 ruby -e "require 'yaml';(YAML.load_file('.release')['config_vars'] || {}).each{|k,v| puts \"#{k}='#{v}'\"}" > .profile.d/config_vars 35 fi 36 for file in .profile.d/*; do 37 source $file 38 done 39 hash -r 40 41 ## Inject "start" command to run processes defined in Procfile 42 43 case "$1" in 44 start) 45 if [[ -f Procfile ]]; then 46 command="$(ruby -e "require 'yaml';puts YAML.load_file('Procfile')['$2']")" 47 else 48 command="$(ruby -e "require 'yaml';puts (YAML.load_file('.release')['default_process_types'] || {})['$2']")" 49 fi 50 ;; 51 52 *) 53 command="$@" 54 ;; 55 esac 56 57 ## Use sdutil to register with service discovery 58 59 if [[ $SD_NAME && $PORT ]]; then 60 if [[ $SD_HOST ]]; then 61 runner="sdutil exec -h $SD_HOST -s $SD_NAME:$PORT bash -c" 62 unset SD_HOST 63 else 64 runner="sdutil exec -s $SD_NAME:$PORT bash -c" 65 fi 66 unset SD_NAME 67 elif [[ $SD_ARGS ]]; then 68 runner="sdutil $SD_ARGS bash -c" 69 unset SD_ARGS 70 else 71 runner="bash -c" 72 fi 73 74 ## Run! 75 76 exec $runner "$command"