@@ -6,6 +6,17 @@ LIFECYCLE_SCRIPTS_DIR="/usr/local/share/edgedb-cli/scripts"
66
77set -e
88
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+
920create_cache_dir () {
1021 if [ -d " $1 " ]; then
1122 echo " Cache directory $1 already exists. Skip creation..."
@@ -23,36 +34,48 @@ create_cache_dir() {
2334}
2435
2536create_symlink_dir () {
26- # ln -s target_dir source_dir
27- local source_dir=$1
28- local target_dir=$2
37+ # local dir is the folder edgedb will use
38+ # cache_dir is the /dc/edgedb-cli folder
39+ local local_dir=$1
40+ local cache_dir=$2
2941 local username=$3
3042
31- if [ -d " $source_dir " ]; then
32- echo " Symlink $source_dir to $target_dir ..."
33- ln -s " $source_dir " " $target_dir "
34- else
35- echo " Creating source dir $source_dir ..."
36- mkdir -p " $source_dir "
37- fi
43+ runuser -u " $username " -- mkdir -p " $( dirname " $local_dir " ) "
44+ runuser -u " $username " -- mkdir -p " $cache_dir "
3845
3946 # if the folder we want to symlink already exists, the ln -s command will create a folder inside the existing folder
40- if [ -e " $source_dir " ]; then
41- echo " Moving existing $source_dir folder to $source_dir -old"
42- mv " $source_dir " " $source_dir -old"
47+ if [ -e " $local_dir " ]; then
48+ echo " Moving existing $local_dir folder to $local_dir -old"
49+ mv " $local_dir " " $local_dir -old"
4350 fi
4451
45- echo " Symlink $source_dir to $target_dir ..."
46- ln -s " $target_dir " " $source_dir "
52+ echo " Symlink $local_dir to $cache_dir for $username ..."
53+ runuser -u " $username " -- ln -s " $cache_dir " " $local_dir "
54+ }
4755
48- echo " Change owner of $source_dir to $username ..."
49- chown -R " $username :$username " " $source_dir "
56+ install_edgedb () {
57+ local username=$1
58+
59+ echo " Installing EdgeDB CLI..."
60+ curl https://sh.edgedb.com --proto ' =https' -sSf1 -o /tmp/edgedb-cli.sh
61+ chmod +x /tmp/edgedb-cli.sh
62+
63+ # install edgedb for a specific user if possible
64+ echo " Installing EdgeDB CLI for $username ..."
65+ if [ -z " $username " ]; then
66+ /tmp/edgedb-cli.sh -y
67+ else
68+ runuser -u " $username " -- /tmp/edgedb-cli.sh -y
69+ fi
5070}
5171
5272export DEBIAN_FRONTEND=noninteractive
5373
74+ check_packages curl ca-certificates
75+
5476create_cache_dir " /dc/edgedb-cli" " ${USERNAME} "
5577create_symlink_dir " $_REMOTE_USER_HOME /.local/share/edgedb" " /dc/edgedb-cli" " ${USERNAME} "
78+ install_edgedb " ${USERNAME} "
5679
5780# Set Lifecycle scripts
5881if [ -f oncreate.sh ]; then
0 commit comments