#!/bin/execlineb -S0

##
## create the needed /var/run (and /var/run/s6) directories
##

if { /bin/s6-overlay-preinit }

##
## dump environment into an envdir if S6_KEEP_ENV is unset
##

getcwd CWD

importas -D 0 S6_KEEP_ENV S6_KEEP_ENV
define -s DO_NOT_KEEP_ENV "s6-test ${S6_KEEP_ENV} -eq 0"
if
{
  ifelse { ${DO_NOT_KEEP_ENV} }
  {
    if { s6-rmrf /var/run/s6/container_environment }
    if { s6-mkdir -pm 0755 -- /var/run/s6/container_environment }
    s6-dumpenv -- /var/run/s6/container_environment
  }
  exit 0
}

##
## create env folder for each init stage, although stage1 is always copied from
## /etc/s6/init/env, it's made available in /var/run/s6/env-stage1 just for
## consistency.
##

if
{
  elglob -0 -- envdirs /var/run/s6/env-*
  forx -p -- envdir { ${envdirs} }
  importas -u envdir envdir
  s6-rmrf ${envdir}
}
if { s6-mkdir -pm 0755 -- /var/run/s6 }
if { s6-hiercopy /etc/s6/init/env /var/run/s6/env-stage1 }
if { s6-mkdir -pm 0755 -- /var/run/s6/env-stage2 }
if { s6-mkdir -pm 0755 -- /var/run/s6/env-stage3 }


##
## run everything else with only the environment defined in
## /var/run/s6/env-stage1 if we are not instructed to keep
## docker env. Programs can get back the container
## environment by using "with-contenv program".
##

ifthenelse -s { ${DO_NOT_KEEP_ENV} }
{
  exec -c --
  s6-envdir /var/run/s6/env-stage1
}
{ }

backtick -n S6_CMD_ARG0 { printcontenv S6_CMD_ARG0 }
importas -d "\n" -s -u S6_CMD_ARG0 S6_CMD_ARG0

##
## route based on what was provided in S6_LOGGING
##

backtick -D 0 -n S6_LOGGING { printcontenv S6_LOGGING }
importas -u S6_LOGGING S6_LOGGING
ifelse { s6-test ${S6_LOGGING} -ne 0 }
{
  /etc/s6/init-catchall/init-stage1 ${S6_CMD_ARG0} $@
}
/etc/s6/init-no-catchall/init-stage1 ${S6_CMD_ARG0} $@
