mirror of
https://github.com/immich-app/immich.git
synced 2025-06-23 15:30:51 -04:00
* fix: devcontainer perms * Fix host based auth * use path tricks to get to volume mount, but remain compat with current meaning of variables * eureka, i think * bit of cleanup
83 lines
2.5 KiB
Bash
Executable File
83 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
export IMMICH_PORT="${DEV_SERVER_PORT:-2283}"
|
|
export DEV_PORT="${DEV_PORT:-3000}"
|
|
|
|
# search for immich directory inside workspace.
|
|
# /workspaces/immich is the bind mount, but other directories can be mounted if runing
|
|
# Devcontainer: Clone [repository|pull request] in container volumne
|
|
WORKSPACES_DIR="/workspaces"
|
|
IMMICH_DIR="$WORKSPACES_DIR/immich"
|
|
IMMICH_DEVCONTAINER_LOG="$HOME/immich-devcontainer.log"
|
|
|
|
log() {
|
|
# Display command on console, log with timestamp to file
|
|
echo "$*"
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" >>"$IMMICH_DEVCONTAINER_LOG"
|
|
}
|
|
|
|
run_cmd() {
|
|
# Ensure log directory exists
|
|
mkdir -p "$(dirname "$IMMICH_DEVCONTAINER_LOG")"
|
|
|
|
log "$@"
|
|
|
|
# Execute command: display normally on console, log with timestamps to file
|
|
"$@" 2>&1 | tee >(while IFS= read -r line; do
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $line" >>"$IMMICH_DEVCONTAINER_LOG"
|
|
done)
|
|
|
|
# Preserve exit status
|
|
return "${PIPESTATUS[0]}"
|
|
}
|
|
|
|
# Find directories excluding /workspaces/immich
|
|
mapfile -t other_dirs < <(find "$WORKSPACES_DIR" -mindepth 1 -maxdepth 1 -type d ! -path "$IMMICH_DIR" ! -name ".*")
|
|
|
|
if [ ${#other_dirs[@]} -gt 1 ]; then
|
|
log "Error: More than one directory found in $WORKSPACES_DIR other than $IMMICH_DIR."
|
|
exit 1
|
|
elif [ ${#other_dirs[@]} -eq 1 ]; then
|
|
export IMMICH_WORKSPACE="${other_dirs[0]}"
|
|
else
|
|
export IMMICH_WORKSPACE="$IMMICH_DIR"
|
|
fi
|
|
|
|
log "Found immich workspace in $IMMICH_WORKSPACE"
|
|
log ""
|
|
|
|
fix_permissions() {
|
|
|
|
log "Fixing permissions for ${IMMICH_WORKSPACE}"
|
|
|
|
run_cmd sudo find "${IMMICH_WORKSPACE}/server/upload" -not -path "${IMMICH_WORKSPACE}/server/upload/postgres/*" -not -path "${IMMICH_WORKSPACE}/server/upload/postgres" -exec chown node {} +
|
|
|
|
# Change ownership for directories that exist
|
|
for dir in "${IMMICH_WORKSPACE}/.vscode" \
|
|
"${IMMICH_WORKSPACE}/cli/node_modules" \
|
|
"${IMMICH_WORKSPACE}/e2e/node_modules" \
|
|
"${IMMICH_WORKSPACE}/open-api/typescript-sdk/node_modules" \
|
|
"${IMMICH_WORKSPACE}/server/node_modules" \
|
|
"${IMMICH_WORKSPACE}/server/dist" \
|
|
"${IMMICH_WORKSPACE}/web/node_modules" \
|
|
"${IMMICH_WORKSPACE}/web/dist"; do
|
|
if [ -d "$dir" ]; then
|
|
run_cmd sudo chown node -R "$dir"
|
|
fi
|
|
done
|
|
|
|
log ""
|
|
}
|
|
|
|
install_dependencies() {
|
|
|
|
log "Installing dependencies"
|
|
(
|
|
cd "${IMMICH_WORKSPACE}" || exit 1
|
|
run_cmd make install-server
|
|
run_cmd make install-sdk
|
|
run_cmd make build-sdk
|
|
run_cmd make install-web
|
|
)
|
|
log ""
|
|
}
|