added special handling for non-home dirs

This commit is contained in:
2026-06-24 19:12:13 +00:00
parent 179765abd9
commit aa093b7601
+45 -6
View File
@@ -19,27 +19,66 @@
## DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ## DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
## ##
CURRENT_DIR="$(pwd)"
APP_DIR="${HOME}/.nv_darcula/${NVIM_APPNAME}" APP_DIR="${HOME}/.nv_darcula/${NVIM_APPNAME}"
APP_PERSIST_DIR="${APP_DIR}/persist" APP_PERSIST_DIR="${APP_DIR}/persist"
# SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
# -v "${SCRIPT_DIR}/${NVIM_APPNAME}":/home/neovim/.config/nvim:z \
mkdir -p "${APP_PERSIST_DIR}/cache" mkdir -p "${APP_PERSIST_DIR}/cache"
mkdir -p "${APP_PERSIST_DIR}/nvim-haven" mkdir -p "${APP_PERSIST_DIR}/nvim-haven"
mkdir -p "${APP_PERSIST_DIR}/shada" mkdir -p "${APP_PERSIST_DIR}/shada"
mkdir -p "${APP_PERSIST_DIR}/swap" mkdir -p "${APP_PERSIST_DIR}/swap"
mkdir -p "${APP_PERSIST_DIR}/undo" mkdir -p "${APP_PERSIST_DIR}/undo"
path_join() {
local out=""
local first=true
for seg in "$@"; do
[[ -z $seg ]] && continue
if $first; then
out="$seg"
first=false
continue
fi
seg="${seg##/}"
if [[ -z $out || $out == "/" ]]; then
out="${out%/}$seg"
else
out="${out%/}/$seg"
fi
out="${out//\/\//\/}"
done
printf '%s\n' "${out:-/}"
}
if (($# > 0)); then
FILE=${!#}
CURRENT_DIR="$(dirname "$(readlink -f "$FILE")")"
FILE=$(basename "${FILE}")
fi
WORKSPACE_DIR=${CURRENT_DIR}
if ! [[ ${WORKSPACE_DIR} =~ ^/home(/|$) ]]; then
WORKSPACE_DIR=$(path_join "/work" "${CURRENT_DIR}")
fi
NVIM_ARGS=("$@")
if [[ -n ${FILE} ]]; then
FILE=$(path_join "${WORKSPACE_DIR}" "${FILE}")
unset "NVIM_ARGS[$((${#NVIM_ARGS[@]} - 1))]"
NVIM_ARGS+=("${FILE}")
fi
docker run --rm -it \ docker run --rm -it \
--device /dev/fuse \ --device /dev/fuse \
--privileged=true \ --privileged=true \
-v "${CURRENT_DIR}":"${WORKSPACE_DIR}" \
-v "${APP_PERSIST_DIR}/cache":/home/neovim/.cache:z \ -v "${APP_PERSIST_DIR}/cache":/home/neovim/.cache:z \
-v "${APP_PERSIST_DIR}/nvim-haven":/home/neovim/.local/share/nvim/nvim-haven:z \ -v "${APP_PERSIST_DIR}/nvim-haven":/home/neovim/.local/share/nvim/nvim-haven:z \
-v "${APP_PERSIST_DIR}/shada":/home/neovim/.local/state/nvim/shada:z \ -v "${APP_PERSIST_DIR}/shada":/home/neovim/.local/state/nvim/shada:z \
-v "${APP_PERSIST_DIR}/swap":/home/neovim/.local/state/nvim/swap:z \ -v "${APP_PERSIST_DIR}/swap":/home/neovim/.local/state/nvim/swap:z \
-v "${APP_PERSIST_DIR}/undo":/home/neovim/.local/share/nvim/.undo:z \ -v "${APP_PERSIST_DIR}/undo":/home/neovim/.local/share/nvim/.undo:z \
-v /var/run/docker.sock:/var/run/docker.sock \ -v /var/run/docker.sock:/var/run/docker.sock \
-v "$(pwd)":"$(pwd)" \ -w "${WORKSPACE_DIR}" \
-w "$(pwd)" \ darcula:"${NVIM_APPNAME}" "${NVIM_ARGS[@]}"
darcula:"${NVIM_APPNAME}" "$@"