diff --git a/kernel/entrypoint.sh b/kernel/entrypoint.sh index 61a77d8d632..399a17f5e5b 100644 --- a/kernel/entrypoint.sh +++ b/kernel/entrypoint.sh @@ -6,6 +6,7 @@ PUID=${PUID:-1000} PGID=${PGID:-1000} USER_NAME=${USER_NAME:-siyuan} GROUP_NAME=${GROUP_NAME:-siyuan} +WORKSPACE_DIR="/siyuan/workspace" # Get or create group group_name="${GROUP_NAME}" @@ -19,7 +20,7 @@ fi # Get or create user user_name="${USER_NAME}" -if id -u "${PUID}" > /dev/null 2>&1; then +if getent passwd "${PUID}" > /dev/null 2>&1; then user_name=$(getent passwd "${PUID}" | cut -d: -f1) echo "Using existing user ${user_name} (PUID: ${PUID}, PGID: ${PGID})" else @@ -27,11 +28,22 @@ else adduser --uid "${PUID}" --ingroup "${group_name}" --disabled-password --gecos "" "${user_name}" fi -# Change ownership of relevant directories -echo "Adjusting ownership of /opt/siyuan and /home/siyuan/" +# Parse command line arguments for --workspace option +# Store other arguments in ARGS for later use +ARGS="" +while [[ "$#" -gt 0 ]]; do + case $1 in + --workspace=*) WORKSPACE_DIR="${1#*=}"; shift ;; + *) ARGS="$ARGS $1"; shift ;; + esac +done + +# Change ownership of relevant directories, including the workspace directory +echo "Adjusting ownership of /opt/siyuan, /home/siyuan/, and ${WORKSPACE_DIR}" chown -R "${PUID}:${PGID}" /opt/siyuan chown -R "${PUID}:${PGID}" /home/siyuan/ +chown -R "${PUID}:${PGID}" "${WORKSPACE_DIR}" -# Switch to the newly created user and start the main process -echo "Starting Siyuan with UID:${PUID} and GID:${PGID}" -exec su-exec "${PUID}:${PGID}" /opt/siyuan/kernel "$@" \ No newline at end of file +# Switch to the newly created user and start the main process with all arguments +echo "Starting Siyuan with UID:${PUID} and GID:${PGID} in workspace ${WORKSPACE_DIR}" +exec su-exec "${PUID}:${PGID}" /opt/siyuan/kernel --workspace="${WORKSPACE_DIR}" ${ARGS}