82 lines
3.1 KiB
Bash
82 lines
3.1 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Entrypoint script to create an out-of-the-box experience for BambuStudio.
|
||
|
# Perform some initial setup if none was done previously.
|
||
|
# It is not necessary if you know what you are doing. Feel free to go
|
||
|
# to the Dockerfile and switch the entrypoint to the BambuStudio binary.
|
||
|
|
||
|
# Check if the current effective user is root
|
||
|
|
||
|
if [ "$EUID" -eq 0 ]; then
|
||
|
echo "No User specified at build time."
|
||
|
if [ -z "$RUN_USER" ] || [ -z "$RUN_UID" ] || [ -z "$RUN_GID" ] || [ "$RUN_UID" -eq 0 ]; then
|
||
|
echo "At least one of RUN_USER, RUN_UID, or RUN_GID is unset. Or 'root' was requested."
|
||
|
echo "Running as root"
|
||
|
|
||
|
if [ "$HOME" != "/root" ]; then
|
||
|
if [ ! -d "/root" ]; then
|
||
|
mkdir /root
|
||
|
chown root:root /root
|
||
|
chmod 700 /root
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
export HOME="/root"
|
||
|
EXEC_USER="root"
|
||
|
else
|
||
|
echo "Setting up a new user"
|
||
|
|
||
|
# Check if there is a already a valid user entry for the passed UID, if not create one
|
||
|
if [ -z "$(getent passwd "$RUN_UID" | cut -d: -f1)" ]; then
|
||
|
#GID=$(id -g)
|
||
|
echo "User specified at runtime. Performing setup."
|
||
|
groupadd -g "$RUN_GID" "$RUN_USER"
|
||
|
useradd -u "$RUN_UID" -g "$RUN_GID" -d "/home/$RUN_USER" "$RUN_USER"
|
||
|
usermod -aG sudo "$RUN_USER"
|
||
|
passwd -d "$RUN_USER"
|
||
|
|
||
|
#This will take forever to run, so we will just chown the build folder which contains the binaries
|
||
|
#chown -R "$RUN_UID":"$RUN_GID" /BambuStudio
|
||
|
chown "$RUN_UID":"$RUN_GID" /BambuStudio
|
||
|
chown -R "$RUN_UID":"$RUN_GID" /BambuStudio/build
|
||
|
|
||
|
|
||
|
export HOME="/home/$RUN_USER"
|
||
|
EXEC_USER="$RUN_USER"
|
||
|
fi
|
||
|
fi
|
||
|
else
|
||
|
echo "User specified at build time."
|
||
|
CURRENT_USER=$(id -un)
|
||
|
if [ -n "$RUN_USER" ] && [ -n "$RUN_UID" ] && [ -n "$RUN_GID" ] && [ "$RUN_UID" -ne "$EUID" ]; then
|
||
|
echo "New User config passed at Runtime. Setting up."
|
||
|
if [ -z "$(getent passwd "$RUN_UID" | cut -d: -f1)" ]; then
|
||
|
sudo groupadd -g "$RUN_UID" "$RUN_USER"
|
||
|
sudo useradd -u "$RUN_UID" -g "$RUN_GID" -d "/home/$RUN_USER" "$RUN_USER"
|
||
|
sudo usermod -aG sudo "$RUN_USER"
|
||
|
passwd -d "$RUN_USER"
|
||
|
|
||
|
#sudo chown -R "$RUN_UID":"$RUN_GID" /BambuStudio
|
||
|
chown "$RUN_UID":"$RUN_GID" /BambuStudio
|
||
|
chown -R "$RUN_UID":"$RUN_GID" /BambuStudio/build
|
||
|
|
||
|
export HOME="/home/$RUN_USER"
|
||
|
EXEC_USER="$RUN_USER"
|
||
|
fi
|
||
|
else
|
||
|
echo "Using Build time user."
|
||
|
EXEC_USER="$CURRENT_USER"
|
||
|
#It should've been set in Dockerfile, but just in case, uncomment this it there is problem
|
||
|
#export HOME="/home/$USER"
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
# make sure ~/.config folder exists so Bambu Studio will start
|
||
|
if [ ! -d "$HOME/.config" ]; then
|
||
|
mkdir -p "$HOME/.config"
|
||
|
fi
|
||
|
|
||
|
# Using su $USER -c will retain all the important ENV args when Bamboo Studio starts in a different shell
|
||
|
# Continue with Bambu Studio using correct user, passing all arguments
|
||
|
exec su "$EXEC_USER" -c "/BambuStudio/build/package/bin/bambu-studio $*"
|