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"