Initial commit
This commit is contained in:
commit
8f1ca179f9
78 files changed
+8813
No files matched your search
Executable
+84
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## The MIT License (MIT)
|
||||
##
|
||||
## Copyright © 2026 Scott E. Graves <scott.e.graves@protonmail.com>
|
||||
##
|
||||
## Permission is hereby granted, free of charge, to any person obtaining a copy of this software
|
||||
## and associated documentation files (the “Software”), to deal in the Software without restriction,
|
||||
## including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
||||
## sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
|
||||
## furnished to do so, subject to the following conditions:
|
||||
##
|
||||
## The above copyright notice and this permission notice shall be included in all copies or
|
||||
## substantial portions of the Software.
|
||||
##
|
||||
## THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
|
||||
## BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
## NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
## 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.
|
||||
##
|
||||
CURRENT_DIR="$(pwd)"
|
||||
|
||||
APP_DIR="${HOME}/.nv_darcula/${NVIM_APPNAME}"
|
||||
APP_PERSIST_DIR="${APP_DIR}/persist"
|
||||
|
||||
mkdir -p "${APP_PERSIST_DIR}/cache"
|
||||
mkdir -p "${APP_PERSIST_DIR}/nvim-haven"
|
||||
mkdir -p "${APP_PERSIST_DIR}/shada"
|
||||
mkdir -p "${APP_PERSIST_DIR}/swap"
|
||||
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 \
|
||||
--device /dev/fuse \
|
||||
--privileged=true \
|
||||
-v "${CURRENT_DIR}":"${WORKSPACE_DIR}" \
|
||||
-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}/shada":/home/neovim/.local/state/nvim/shada: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 /var/run/docker.sock:/var/run/docker.sock \
|
||||
-w "${WORKSPACE_DIR}" \
|
||||
darcula:"${NVIM_APPNAME}" "${NVIM_ARGS[@]}"
|
||||
Reference in new issue
Block a user