added special handling for non-home dirs
This commit is contained in:
+45
-6
@@ -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}" "$@"
|
|
||||||
|
|||||||
Reference in New Issue
Block a user