|
| 1 | +#!/bin/sh |
| 2 | + |
| 3 | +USERNAME=${USERNAME:-${_REMOTE_USER}} |
| 4 | + |
| 5 | +LIFECYCLE_SCRIPTS_DIR="/usr/local/share/gel-cli/scripts" |
| 6 | + |
| 7 | +set -e |
| 8 | + |
| 9 | +# Checks if packages are installed and installs them if not |
| 10 | +check_packages() { |
| 11 | + if ! dpkg -s "$@" >/dev/null 2>&1; then |
| 12 | + if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then |
| 13 | + echo "Running apt-get update..." |
| 14 | + apt-get update -y |
| 15 | + fi |
| 16 | + apt-get -y install --no-install-recommends "$@" |
| 17 | + fi |
| 18 | +} |
| 19 | + |
| 20 | +create_cache_dir() { |
| 21 | + if [ -d "$1" ]; then |
| 22 | + echo "Cache directory $1 already exists. Skip creation..." |
| 23 | + else |
| 24 | + echo "Create cache directory $1..." |
| 25 | + mkdir -p "$1" |
| 26 | + fi |
| 27 | + |
| 28 | + if [ -z "$2" ]; then |
| 29 | + echo "No username provided. Skip chown..." |
| 30 | + else |
| 31 | + echo "Change owner of $1 to $2..." |
| 32 | + chown -R "$2:$2" "$1" |
| 33 | + fi |
| 34 | +} |
| 35 | + |
| 36 | +create_symlink_dir() { |
| 37 | + # local dir is the folder gel will use |
| 38 | + # cache_dir is the /dc/gel-cli folder |
| 39 | + local local_dir=$1 |
| 40 | + local cache_dir=$2 |
| 41 | + local username=$3 |
| 42 | + |
| 43 | + runuser -u "$username" -- mkdir -p "$(dirname "$local_dir")" |
| 44 | + runuser -u "$username" -- mkdir -p "$cache_dir" |
| 45 | + |
| 46 | + # if the folder we want to symlink already exists, the ln -s command will create a folder inside the existing folder |
| 47 | + if [ -e "$local_dir" ]; then |
| 48 | + echo "Moving existing $local_dir folder to $local_dir-old" |
| 49 | + mv "$local_dir" "$local_dir-old" |
| 50 | + fi |
| 51 | + |
| 52 | + echo "Symlink $local_dir to $cache_dir for $username..." |
| 53 | + runuser -u "$username" -- ln -s "$cache_dir" "$local_dir" |
| 54 | +} |
| 55 | + |
| 56 | +install_cli() { |
| 57 | + local username=$1 |
| 58 | + |
| 59 | + echo "Installing Gel CLI..." |
| 60 | + curl https://www.geldata.com/sh --proto '=https' --tlsv1.2 -sSf -o /tmp/gel-cli.sh |
| 61 | + chmod +x /tmp/gel-cli.sh |
| 62 | + |
| 63 | + # install gel for a specific user if possible |
| 64 | + echo "Installing Gel CLI for $username..." |
| 65 | + if [ -z "$username" ]; then |
| 66 | + /tmp/gel-cli.sh -y |
| 67 | + else |
| 68 | + runuser -u "$username" -- /tmp/gel-cli.sh -y |
| 69 | + fi |
| 70 | +} |
| 71 | + |
| 72 | +export DEBIAN_FRONTEND=noninteractive |
| 73 | + |
| 74 | +check_packages curl ca-certificates |
| 75 | + |
| 76 | +# Looks like they kept the config directories the same (edgedb in the paths) |
| 77 | + |
| 78 | +# cache data directory |
| 79 | +create_cache_dir "/dc/gel-cli/data" "${USERNAME}" |
| 80 | +create_symlink_dir "$_REMOTE_USER_HOME/.local/share/edgedb" "/dc/gel-cli/data" "${USERNAME}" |
| 81 | + |
| 82 | +# cache config directory |
| 83 | +create_cache_dir "/dc/gel-cli/config" "${USERNAME}" |
| 84 | +create_symlink_dir "$_REMOTE_USER_HOME/.config/edgedb" "/dc/gel-cli/config" "${USERNAME}" |
| 85 | + |
| 86 | +install_cli "${USERNAME}" |
| 87 | + |
| 88 | +# Set Lifecycle scripts |
| 89 | +if [ -f oncreate.sh ]; then |
| 90 | + mkdir -p "${LIFECYCLE_SCRIPTS_DIR}" |
| 91 | + cp oncreate.sh "${LIFECYCLE_SCRIPTS_DIR}/oncreate.sh" |
| 92 | +fi |
| 93 | + |
| 94 | +echo "Done!" |
0 commit comments