From aa093b760116d7f0dcec2eb5660652e921e2d82b Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Wed, 24 Jun 2026 19:12:13 +0000 Subject: [PATCH] added special handling for non-home dirs --- dviml_common.sh | 51 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 45 insertions(+), 6 deletions(-) diff --git a/dviml_common.sh b/dviml_common.sh index 412735f..59b0ff5 100755 --- a/dviml_common.sh +++ b/dviml_common.sh @@ -19,27 +19,66 @@ ## 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" -# 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}/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 \ - -v "$(pwd)":"$(pwd)" \ - -w "$(pwd)" \ - darcula:"${NVIM_APPNAME}" "$@" + -w "${WORKSPACE_DIR}" \ + darcula:"${NVIM_APPNAME}" "${NVIM_ARGS[@]}"