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"