github.com/spg/deis@v1.7.3/builder/rootfs/usr/local/src/slugrunner/runner/init (about) 1 #!/bin/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 cd $HOME 22 23 ## Load profile.d and release config 24 25 shopt -s nullglob 26 mkdir -p .profile.d 27 if [[ -s .release ]]; then 28 ruby -e "require 'yaml';(YAML.load_file('.release')['config_vars'] || {}).each{|k,v| puts \"#{k}='#{v}'\"}" > .profile.d/config_vars 29 fi 30 for file in .profile.d/*; do 31 source $file 32 done 33 hash -r 34 35 ## Inject "start" command to run processes defined in Procfile 36 37 case "$1" in 38 start) 39 if [[ -f Procfile ]]; then 40 command="$(ruby -e "require 'yaml';puts YAML.load_file('Procfile')['$2']")" 41 else 42 command="$(ruby -e "require 'yaml';puts (YAML.load_file('.release')['default_process_types'] || {})['$2']")" 43 fi 44 ;; 45 46 *) 47 command="$@" 48 ;; 49 esac 50 51 ## Use sdutil to register with service discovery 52 53 if [[ $SD_NAME && $PORT ]]; then 54 if [[ $SD_HOST ]]; then 55 runner="sdutil exec -h $SD_HOST -s $SD_NAME:$PORT bash -c" 56 unset SD_HOST 57 else 58 runner="sdutil exec -s $SD_NAME:$PORT bash -c" 59 fi 60 unset SD_NAME 61 elif [[ $SD_ARGS ]]; then 62 runner="sdutil $SD_ARGS bash -c" 63 unset SD_ARGS 64 else 65 runner="bash -c" 66 fi 67 68 ## Run! 69 70 exec $runner "$command"