mirror of
https://github.com/89luca89/distrobox.git
synced 2026-11-03 12:48:07 -06:00
62 lines
1.9 KiB
Bash
Executable File
62 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
id="$(echo "$@" | grep -Eo ' [a-zA-Z0-9]{64} ' | tr -d ' ')"
|
|
PODMAN_COMMAND="$(command -v podman 2> /dev/null)"
|
|
DISTROBOX_COMMAND="$(command -v distrobox 2> /dev/null)"
|
|
|
|
# if we're in a flatpak, use podman-remote
|
|
# else we fallback to host-spawn
|
|
if [ -n "${FLATPAK_ID}" ]; then
|
|
if command -v podman-remote > /dev/null 2>&1; then
|
|
PODMAN_COMMAND="podman-remote"
|
|
else
|
|
PODMAN_COMMAND="flatpak-spawn --host podman"
|
|
fi
|
|
DISTROBOX_COMMAND="flatpak-spawn --host distrobox"
|
|
fi
|
|
|
|
# This little workaround is used to ensure
|
|
# we use our distrobox to properly enter the container
|
|
if echo "$@" | grep -q 'exec'; then
|
|
# if exec && distrobox -> use distrobox-enter --
|
|
if [ "$(${PODMAN_COMMAND} inspect --type container --format '{{ index .Config.Labels "manager" }}' "${id}")" = "distrobox" ]; then
|
|
|
|
# Ensure that our distrobox containers will use different vscode-servers by symlinking to different paths
|
|
if [ -n "${id}" ]; then
|
|
# shellcheck disable=SC2016
|
|
${PODMAN_COMMAND} exec -u "${USER}" "${id}" /bin/sh -c '
|
|
if [ ! -L "${HOME}/.vscode-server" ]; then
|
|
[ -e "${HOME}/.vscode-server" ] && mv "${HOME}/.vscode-server" /var/tmp
|
|
[ -d /var/tmp/.vscode-server ] && mkdir /var/tmp/.vscode-server
|
|
ln -sf /var/tmp/.vscode-server "$HOME"
|
|
elif [ ! -e "${HOME}/.vscode-server" ]; then
|
|
mkdir /var/tmp/.vscode-server
|
|
fi
|
|
'
|
|
fi
|
|
|
|
# Remove everything from $@ and leave only the execution part, we start
|
|
# capturing after we meet our ID
|
|
dbox_args="-e A=B"
|
|
capture="false"
|
|
for i; do
|
|
if [ "${capture}" = "true" ]; then
|
|
set -- "$@" "${i}"
|
|
elif echo "${i}" | grep -q "VSCODE"; then
|
|
dbox_args="${dbox_args} -e ${i}"
|
|
elif echo "${i}" | grep -q "\-w"; then
|
|
dbox_args="${dbox_args} -w ${2}"
|
|
fi
|
|
if [ "${i}" = "${id}" ]; then
|
|
capture="true"
|
|
fi
|
|
shift
|
|
done
|
|
|
|
${DISTROBOX_COMMAND} enter --additional-flags "${dbox_args}" "${id}" -- "$@"
|
|
exit $?
|
|
fi
|
|
fi
|
|
|
|
${PODMAN_COMMAND} "$@"
|