Skip to content
Snippets Groups Projects
init.sh 3.21 KiB
Newer Older
Olivier Benz's avatar
Olivier Benz committed
#!/bin/bash
# Copyright (c) 2020 b-data GmbH.
# Distributed under the terms of the MIT License.

set -e

# Set defaults for environment variables in case they are undefined
LANG=${LANG:=en_US.UTF-8}
TZ=${TZ:=Etc/UTC}

if [ "$(id -u)" == 0 ] ; then
  # Update timezone if needed
  if [ "$TZ" != "Etc/UTC" ]; then
    echo "Setting TZ to $TZ"
    ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
      && echo $TZ > /etc/timezone
  fi

  # Add/Update locale if needed
  if [ ! -z "$LANGS" ]; then
    for i in $LANGS; do
      sed -i "s/# $i/$i/g" /etc/locale.gen
    done
  fi
  if [ "$LANG" != "en_US.UTF-8" ]; then
    sed -i "s/# $LANG/$LANG/g" /etc/locale.gen
  fi
  if [[ "$LANG" != "en_US.UTF-8" || ! -z "$LANGS" ]]; then
    locale-gen
  fi
  if [ "$LANG" != "en_US.UTF-8" ]; then
    echo "Setting LANG to $LANG"
    update-locale --reset LANG=$LANG
  fi

  # Update code-server settings
Olivier Benz's avatar
Olivier Benz committed
  su $NB_USER -c "mkdir -p /home/$NB_USER/.local/share/code-server/User"
  if [[ ! -f "/home/$NB_USER/.local/share/code-server/User/settings.json" ]]; then
    su $NB_USER -c "cp ${CP_OPTS:--a} /var/backups/skel/.local/share/code-server/User/settings.json \
Olivier Benz's avatar
Olivier Benz committed
      /home/$NB_USER/.local/share/code-server/User/settings.json"
Olivier Benz's avatar
Olivier Benz committed
    chown :$NB_GID "/home/$NB_USER/.local/share/code-server/User/settings.json"
Olivier Benz's avatar
Olivier Benz committed
  su $NB_USER -c "mv /home/$NB_USER/.local/share/code-server/User/settings.json \
    /home/$NB_USER/.local/share/code-server/User/settings.json.bak"
Olivier Benz's avatar
Olivier Benz committed
  su $NB_USER -c "sed -i ':a;N;\$!ba;s/,\n\}/\n}/g' \
Olivier Benz's avatar
Olivier Benz committed
    /home/$NB_USER/.local/share/code-server/User/settings.json.bak"
Olivier Benz's avatar
Olivier Benz committed
  su $NB_USER -c "jq -s '.[0] * .[1]' \
    /var/backups/skel/.local/share/code-server/User/settings.json \
Olivier Benz's avatar
Olivier Benz committed
    /home/$NB_USER/.local/share/code-server/User/settings.json.bak > \
    /home/$NB_USER/.local/share/code-server/User/settings.json"
Olivier Benz's avatar
Olivier Benz committed
else
  # Warn if the user wants to change the timezone but hasn't started the
  # container as root.
  if [ "$TZ" != "Etc/UTC" ]; then
    echo "WARNING: Setting TZ to $TZ but /etc/localtime and /etc/timezone remain unchanged!"
  fi

  # Warn if the user wants to change the locale but hasn't started the
  # container as root.
  if [[ ! -z "$LANGS" ]]; then
    echo "WARNING: Container must be started as root to add locale(s)!"
  fi
  if [[ "$LANG" != "en_US.UTF-8" ]]; then
    echo "WARNING: Container must be started as root to update locale!"
    echo "Resetting LANG to en_US.UTF-8"
    LANG=en_US.UTF-8
  fi

  # Update code-server settings
Olivier Benz's avatar
Olivier Benz committed
  mkdir -p /home/$NB_USER/.local/share/code-server/User
  if [[ ! -f "/home/$NB_USER/.local/share/code-server/User/settings.json" ]]; then
Olivier Benz's avatar
Olivier Benz committed
    cp -a /var/backups/skel/.local/share/code-server/User/settings.json \
Olivier Benz's avatar
Olivier Benz committed
      /home/$NB_USER/.local/share/code-server/User/settings.json
Olivier Benz's avatar
Olivier Benz committed
  mv /home/$NB_USER/.local/share/code-server/User/settings.json \
    /home/$NB_USER/.local/share/code-server/User/settings.json.bak
Olivier Benz's avatar
Olivier Benz committed
  sed -i ':a;N;$!ba;s/,\n\}/\n}/g' \
Olivier Benz's avatar
Olivier Benz committed
    /home/$NB_USER/.local/share/code-server/User/settings.json.bak
Olivier Benz's avatar
Olivier Benz committed
  jq -s '.[0] * .[1]' \
    /var/backups/skel/.local/share/code-server/User/settings.json \
Olivier Benz's avatar
Olivier Benz committed
    /home/$NB_USER/.local/share/code-server/User/settings.json.bak > \
    /home/$NB_USER/.local/share/code-server/User/settings.json
Olivier Benz's avatar
Olivier Benz committed
fi

# Remove old .zcompdump files
Olivier Benz's avatar
Olivier Benz committed
rm -f /home/$NB_USER/.zcompdump*